11月5日、海外のテクノロジーメディア「Tom's Hardware」が、「FFmpegがAVX-512アセンブリコードによる最大94倍のパフォーマンス向上を実現」と題した記事を公開した。この記事では、AVX-512アセンブリコードを手書きで実装することによってFFmpegのパフォーマンスが飛躍的に向上した事例について詳しく紹介されている。以下に、その内容を紹介する。
FFmpegは、ボランティアによって開発されているオープンソースの動画デコードプロジェクトであり、少数のコア開発者とメンテナーによって運営されている。この開発者たちはプロジェクトの方向性を統括し、品質基準に合うように貢献を管理している。今回、開発チームは手書きのAVX-512アセンブリコードパスを実装し、特定の処理を大幅に高速化することに成功した。これにより、通常の実装と比較して最大で94倍ものパフォーマンス向上を実現した。
AVX-512は、512ビットのレジスタを使用して大規模なデータを並列に処理する命令セットであり、単精度なら最大16回、倍精度なら8回の浮動小数点演算を1回の操作で処理できる。この最適化により、特に動画や画像の処理といった計算集約型のタスクでの性能向上が期待できる。
具体的なベンチマーク結果によると、この新たな手書きAVX-512コードパスは、従来のCコードやAVX2、SSSE3といった低レベルSIMD命令セットを大きく上回る速度を発揮している。特にベースラインの実装に対して約94倍の速度を達成したケースもあり、AVX-512を活用した手動の最適化がいかに効率的であるかを示している。
この開発は、AVX-512対応の高性能ハードウェアを持つユーザーにとって特に価値があるとされている。メディアコンテンツの処理をはるかに効率的に行える一方、Intelの第12世代、第13世代、第14世代のCoreプロセッサではAVX-512が無効化されており、これらのCPUを使用するユーザーはこの恩恵を受けることができない。しかし、AMDのRyzen 9000シリーズCPUはAVX-512の完全なFPUを備えているため、これらのプロセッサを持つユーザーは今回のFFmpegの改善を最大限に活用できる。
ただし、AVX-512はその複雑さと専門性の高さから、一般的なプログラミングではなくパフォーマンスが重要なアプリケーション向けに限定される傾向がある。また、この最適化には低レベルのプログラミングやプロセッサのマイクロアーキテクチャに関する専門的な知識が求められる。
詳細はFFmpeg devs boast of up to 94x performance boost after implementing handwritten AVX-512 assembly codeを参照していただきたい。