【最初の注意】
本記事は、私が2002年当時に今はなき「XWIN II Web Page」で掲載したものを、基本的にそのままの形で再掲載したものです。では、どうぞ。
この前の記事「Windows XP Home EditionでHyper-Threadingは有効になるか?」
巻頭言 976 「マルチスレッドでのHyper-Threading ── TMPGEnc編」
これまで、Hyper-Threadingテクノロジの検証を主にSuper πにて行ってきたが、今回は定評のあるTMPGEnc 2.02を用いて、マルチスレッドアプリケーションプログラムにおけるHyper-Threadingテクノロジの有用性を検討してみたい。
ただ、TMPGEncでテストを行うにしても、なかなか客観性を持たせることが難しいので、TMPGEncのベンチマークテストとして公開されているLightBench(華)(TMPGEnc De Bench !!さんのWebサイトを参照)を利用させていただくことにした。
(大雑把に言ってしまえば、1分ほどの映像データをVideo CD形式にエンコードするテスト。)
まずは、LightBench(華)の設定を行い、テストを始める前にTMPGEnc 2.02の環境設定(CPU)を次のように変更した。
TMPGEnc 2.02のCPUに関する設定
デフォルトでは、「マルチスレッド使用」とある部分がチェックされていない(=マルチスレッドを使用しない)となっているが、これをチェックし、「マルチスレッドの設定」では上のように「パイプライン化する」と「動き検索をパイプライン化する」にチェックを入れた。
この設定に変更して、そのまま実行するとテスト時間は42秒という結果になった。
引き続き、「マルチスレッド使用」のチェックをはずして(デフォルトに戻す)実行したところ、テスト時間は1分25秒となり、マルチスレッドの効果を確認できた。
それでは、Hyper-Threadingの有用性を確かめるべく、CPUの割り当てを変更することにしよう。回りくどい説明は抜きにして結果を表にすれば、次のような結果となった。
TMPGEnc 2.02によるLightBench(華)のCPU割り当て別の結果
(Windows XP Professionalで、上にある条件で「マルチスレッド使用」している。
なお、タスクマネージャのパフォーマンスモニタを表示状態にしてある。)
CPUの組み合わせはまだまだあるが、ここまで行えば傾向は掴めるだろう。なお、このテストで若干実行タイムが遅くなっているのは、タスクマネージャに含まれるパフォーマンスモニタを常時表示していたためである。CPU使用率の様子を確認するため、表示させていたのだが、実に面白味のない結果となってしまった。
最初に、CPUを一つだけ割り当てた結果についてだが、これは「マルチスレッド使用」という設定をOFFにしたテストと同等の結果であることが分かる。つまり、自明のことではあるが、与えられたCPUが一つではマルチスレッド化する効果が表れないということである。
一方、CPUを複数割り当てた場合は、これは物理プロセッサが一つであった場合と二つであった場合では、結果は大きく異なるものとなる。とは言っても、物理プロセッサが一つの割り当てでは、「マルチスレッド使用」という設定をOFFにしたテストと同等の結果であり、二つの場合は「マルチスレッド使用」と同じである。おそらく、TMPGEnc 2.02は、実行スレッドが2つ(あるいは演算部分が2つと、もう1つメインスレッドがあるかもしれない)であり、一つのスレッドがほぼプロセッサリソースを使い切ってしまうか、さもなければスレッド間での同期等により、このような結果となるのだろう。
このことからわかるように、TMPGEnc 2.02を一つだけ実行した場合は、マルチスレッドを有効にしてもHyper-Threadingの効果はほとんど表れないということになる。これが実行スレッドが3つ以上であれば、また違う結果となるかもしれないが、現状においてはそういうことである。
次回は、TMPGEnc 2.02とSuper πを同時実行させながら、Hyper-Threadingテクノロジの有用性を探っていく予定である。(2002/1/21)
【当時を思い起こして】
この頃は、動画のエンコードを行うのも一苦労であった。そのため、パフォーマンスの高いPCが必須であったが、今ではそこそこの価格のPCでも、あまり困るようなシーンはなくなっている。それでも、解像度の細かいものにはそれなりのパフォーマンスが必要であり、まだまだパフォーマンスを求める用途の一つだろう。
コメント