x264の--threads
x264は--threadsでスレッド数を指定できる。デフォルト(0=自動)だと論理コア数×1.5がスレッド数になる。
で、実際のところ、スレッド並列でどのくらい速くなる?
x264が自動的に設定する論理コア数×1.5が最適で、少なくいとCPUが遊んで遅くなり、多くてもスレッド切り替えが多発してやや遅くなる、らしい。
i7 3770Kは論理8コアなので、自動設定では--threads 12。
じゃあ、ほかの--threadsを設定したらどうなるのか、比べてみる。
環境
Intel Core i7 3770K (4C/8T, 3.9GHz @ 1.05V)
メモリ DDR3-1600 9-9-9-24 16GB
Win7 x64
Aviutl 0.99m
x264 r2208 x64 8bit
x264guiEx 1.57
素材
H.264 1920x1080p 23.976fps 2154frames
Aviutl フィルタ無し
x264 オプション
--preset slow --crf 20 --qcomp 0.7 --aq-strength 0.4 --psy-rd 1:0.2 --min-keyint 4 --subme 9 --trellis 2
今回は--lookahead-threadsは気にせず自動設定にする。自動では--lookahead-threadsは--threadsの1/6(小数点以下切り捨て)になる。
--threadsを増やすと、ほかが同じ設定でも容量(ファイルサイズ)が大きくなる。確かに1%ほどビットレートが増加した。が、今回は気にしない事にする。
結果

--threadsを1から増やしていくと、エンコード速度がかなり上がる。--threads 12~15あたりが最速。やはりスレッド数を増やしすぎると、少し遅くなるようだ。
--threads 1の時に対する倍率に直すとこんな感じ。

--threads 1 のときと比べると、最大で4.16倍速くなった。
i7 3770Kは物理4コアなので、ハイパースレッディングも十分活用できていて、かなり効率がよい並列化なのでは?
というわけで、(今回のテストでは)スレッド数はデフォルトの自動設定でいい、つまり論理コア数×1.5がちょうど、ということが確認できた。
x264の並列化は素晴らしいです。
続きます。(こちら>>)
で、実際のところ、スレッド並列でどのくらい速くなる?
x264が自動的に設定する論理コア数×1.5が最適で、少なくいとCPUが遊んで遅くなり、多くてもスレッド切り替えが多発してやや遅くなる、らしい。
i7 3770Kは論理8コアなので、自動設定では--threads 12。
じゃあ、ほかの--threadsを設定したらどうなるのか、比べてみる。
環境
Intel Core i7 3770K (4C/8T, 3.9GHz @ 1.05V)
メモリ DDR3-1600 9-9-9-24 16GB
Win7 x64
Aviutl 0.99m
x264 r2208 x64 8bit
x264guiEx 1.57
素材
H.264 1920x1080p 23.976fps 2154frames
Aviutl フィルタ無し
x264 オプション
--preset slow --crf 20 --qcomp 0.7 --aq-strength 0.4 --psy-rd 1:0.2 --min-keyint 4 --subme 9 --trellis 2
今回は--lookahead-threadsは気にせず自動設定にする。自動では--lookahead-threadsは--threadsの1/6(小数点以下切り捨て)になる。
--threadsを増やすと、ほかが同じ設定でも容量(ファイルサイズ)が大きくなる。確かに1%ほどビットレートが増加した。が、今回は気にしない事にする。
結果

--threadsを1から増やしていくと、エンコード速度がかなり上がる。--threads 12~15あたりが最速。やはりスレッド数を増やしすぎると、少し遅くなるようだ。
--threads 1の時に対する倍率に直すとこんな感じ。

--threads 1 のときと比べると、最大で4.16倍速くなった。
i7 3770Kは物理4コアなので、ハイパースレッディングも十分活用できていて、かなり効率がよい並列化なのでは?
というわけで、(今回のテストでは)スレッド数はデフォルトの自動設定でいい、つまり論理コア数×1.5がちょうど、ということが確認できた。
x264の並列化は素晴らしいです。
続きます。(こちら>>)
スポンサーサイト