代码之家  ›  专栏  ›  技术社区  ›  Asain Kujovic

x264库速度-Altivec与SSE4-

  •  1
  • Asain Kujovic  · 技术社区  · 13 年前

    我有简单便宜的双核intel-3ghz-debian和超级昂贵的电源Pc7 Aix。

    经过几天的挣扎,我整理了 利比亚264 并在两台计算机上进行了测试:

    1. GCC:英特尔x264库(具有SSE2功能)和
    2. 16核功率Pc上的GCC(带altivec)。

    …结果是廉价的情报 x2次 更快!(禁用altivec后,intel的速度提高了10倍)

    我的问题是:这正常吗? 是否所有其他powerPC用户都有相同的结果?powerPc altivec对x264库的优化能否与英特尔以相同的速度工作。。。或者MMX/SSE优化对于这个库的官方速度至少快2倍?

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

    也许本机Aix XLC编译器可以提供更好的结果?(我只设法让gcc工作)

    …mac powerpc用户可能对此有所了解。

    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 回复  |  直到 13 年前
        1
  •  1
  •   tc.    13 年前

    脑海中浮现出几件事:

    • 海湾合作委员会很可能 与其他体系结构(可能是所有其他体系结构的组合)相比,在优化x86(特别是商品Intel/AMD部件)方面投入的精力更多。
    • x264可能在优化x86/SSE方面付出了更多的努力。
    • 您的问题显示为SSE2,但x264表示使用的是SSE4.1。这有很大的不同!
    • MMX/SSE最初的目标是英特尔认为重要的东西,有许多专门的指令和怪癖(例如,浮点和整数加载有不同的指令,尽管它们将相同的内存加载到“相同”的寄存器中)。AltiVec似乎更正交,但结果可能不太擅长MMX设计擅长的东西。
    • 即使假设AltiVec/SSE在很大程度上是等效的,您也没有提到时钟速度和每个时钟的指令。
    • PPC在一定程度上是昂贵的,因为您要为16×4线程付费——想要将尽可能多的线程打包到服务器/HPC应用程序的单个芯片上并不罕见。有点尴尬的是,收集商品零件通常更快、更便宜(有时甚至考虑到终身电费),但事情就是这样发展的。

    一个更有趣的比较是与PS3进行比较,PS3的代码经过优化,可以利用所有核心——显然,PS3非常擅长破坏加密货币。遗憾的是,他们已经停止了制作,我不知道现在在一台Linux上运行有多容易。