x264库速度 - Altivec vs SSE4 -

时间:2013-02-25 16:39:14

标签: sse powerpc x264 libx264 altivec

我有简单便宜的双核intel-3ghz-debian并可以使用超级昂贵的powerPc7-Aix。

经过几天的争吵,我编译了 libx264 ,并在两台计算机上进行了测试:

  1. GCC:intel上的库x264(具有SSE2功能)和
  2. GCC on 16 core powerPc(with altivec)。
  3. ...结果是廉价的英特尔 x2次更快! (禁用altivec,英特尔快10倍)

    我的问题:这是正常的吗? 所有其他powerPC用户都有相同的结果吗?对于这个库来说,x264库的powerPc-altivec优化能否与intel ...或MMX / SSE优化以相同的速度工作正式至少快2倍?

    我对多线程选项不感兴趣。核心和线程数量无关紧要。使用rawvideo作为源,sse vs altivec,只需简单的单线程x264编码,默认为“中预设”。

    也许原生的Aix XLC编译器可以提供更好的结果? (我只管理gcc工作)

    ... mac-powerpc-users可能对此有所了解。

    powrPc7-Aix:$ time (cat raw10sec.y4m |x264 --input-res 720x576 --fps 50 -o /dev/null -)
    x264: 64-bit XCOFF
    x264 [info]: using cpu capabilities: Altivec
    time: real 0m33.559s
    ---
    intelDebian:$ time (cat raw10sec.y4m |x264 --input-res 720x576 --fps 50 -o /dev/null -)
    x264: ELF 32-bit LSB executable
    x264 [info]: using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.1 Cache64
    time: real 0m16.503s
    

1 个答案:

答案 0 :(得分:1)

有些事情让人想起:

  • 与其他架构(可能是所有其他架构相结合)相比,GCC可能已经将更多的努力用于优化x86(特别是商品Intel / AMD部件)。
  • x264可能同样需要更多努力来优化x86 / SSE。
  • 您的问题是SSE2,但x264表示它正在使用SSE4.1。那里有很大的不同!
  • MMX / SSE最初是针对英特尔认为重要的事情,有许多专门的指令和怪癖(例如浮点数和整数加载有不同的指令,尽管它们将相同的内存加载到“相同”寄存器中) 。 AltiVec似乎更正交,但结果可能不那么擅长MMX设计擅长的东西。
  • 即使假设AltiVec / SSE大致相同,也没有提到时钟速度和每时钟指令。
  • PPC部分昂贵,因为您需要为16×4线程付费 - 想要尽可能多地打包到服务器/ HPC应用程序的单个芯片上并不罕见。有点尴尬的是,商品零件的集合通常更快,更便宜(有时甚至可以计算终身电费),但这就是事情的发展方向。

更有趣的比较是针对PS3,其代码经过优化以充分利用所有内核 - 显然PS3非常适合强化加密。可悲的是,他们已经停止制作它们了,我不知道在这些日子里运行Linux是多么容易。