1

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

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

  1. GCC:intel 上的 x264 库(具有 SSE2 功能)和
  2. 16 核 powerPc 上的 GCC(使用 altivec)。

...结果是便宜的英特尔快了2 倍!(禁用 altivec,英特尔快 10 倍)

我的问题:这正常吗?所有其他 powerPC 用户是否有相同的结果?x264 库的 powerPc-altivec-optimisation 可以与英特尔以相同的速度工作吗?

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

也许原生 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
4

1 回答 1

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 是多么容易。

于 2013-03-03T20:13:37.797 回答