1

シンプルで安価なデュアルコア intel-3ghz-debian と、超高価な powerPc7-Aix へのアクセスがあります。

そして、数日間の闘争の後、libx264 をコンパイル、両方のコンピューターでテストしました。

  1. GCC: Intel 上のライブラリ x264 (SSE2 機能付き) および
  2. 16 コアの powerPc 上の GCC (altivec を使用)。

...そしてその結果、安価な Intel はx2 倍高速です! (altivec を無効にすると、Intel は 10 倍速くなります)

私の質問: これは正常ですか? 他のすべての powerPC ユーザーの結果は同じですか? x264 ライブラリの powerPc-altivec-optimisation は Intel と同じ速度で動作しますか? または MMX/SSE 最適化は公式にはこのライブラリで少なくとも 2 倍高速ですか?

マルチスレッドオプションには興味がありません。コア数とスレッド数は関係ありません。rawvideo をソースとして使用するデフォルトの「ミディアム プリセット」を使用したシンプルな 1 スレッド x264 エンコーディング、sse と 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 は当初、Intel が重要と考えるものを対象としており、多くの特殊な命令と癖がありました (たとえば、同じメモリを「同じ」レジスタにロードするにもかかわらず、浮動小数点と整数のロードには異なる命令があります)。AltiVec は、はるかに直交しているように見えますが、結果として、MMX が得意とするように設計されたことが得意ではない可能性があります。
  • AltiVec/SSE がほぼ同等であると仮定しても、クロック速度とクロックあたりの命令について言及していません。
  • PPC は、16×4 スレッドの料金を支払っているため、部分的に高価です。サーバー/HPC アプリケーション用に、1 つのチップにできるだけ多くの機能を詰め込みたいと思うことは珍しくありません。コモディティ部品を集めた方が速くて安いことが多いのは少し恥ずかしいことですが (場合によっては生涯の電気代を考慮することさえあります)、それが物事の方向性です。

より興味深い比較は、すべてのコアを活用するようにコードが最適化された PS3 との比較です。残念なことに、彼らはそれらを作るのをやめてしまいました。最近では Linux を実行するのがどれほど簡単かわかりません。

于 2013-03-03T20:13:37.797 に答える