51
FFmpeg開発者は、手書きのAVX-512アセンブリコードを実装することで、最大94倍のパフォーマンス向上を誇っています。
パナソニック
(画像提供:パナソニック)

現代の高水準プログラミング言語と高度なコンパイラは、ソフトウェア開発を大幅に簡素化し、コストを削減します。しかし、こうしたプログラミング方法では、アプリケーション・プログラミング・インターフェース(API)の非効率性などにより、最新のハードウェアの性能が発揮されない可能性があります。FFmpegによると、古き良きアセンブリコードパスは、ワークロードに応じて3倍から94倍のパフォーマンス向上を実現する可能性があるとのことです。このパフォーマンス向上を実現したハードウェアは公表されていません。

FFmpegは、コードベースへの貢献、バグ修正、新機能の追加を行うボランティアによって開発されたオープンソースのビデオデコードプロジェクトです。このプロジェクトは、コア開発者とメンテナーからなる少人数のグループによって主導されており、彼らはプロジェクトの方向性を監督し、貢献が一定の基準を満たしていることを確認しています。彼らはプロジェクトの開発サイクルとリリースサイクルを調整し、他の開発者からの貢献をマージしています。この開発者グループは、手書きのAVX512アセンブリコードパスの実装を試みました。これは、少なくともビデオ業界ではこれまでほとんど行われていなかったことです。

開発者たちは、AVX-512命令セットを用いて最適化されたコードパスを作成し、FFmpegマルチメディア処理ライブラリ内の特定の機能を高速化しました。AVX-512を活用することで、標準実装と比較して3倍から94倍という大幅なパフォーマンス向上を実現しました。AVX-512は、512ビットレジスタを用いて大規模なデータチャンクを並列処理することを可能にし、1回の演算で最大16単精度FLOPSまたは8倍精度FLOPSを処理できます。この最適化は、一般的に計算負荷の高いタスクに最適ですが、特にビデオおよび画像処理に適しています。

ベンチマーク結果によると、新しく手書きされたAVX-512コードパスは、ベースラインのCコードやAVX2、SSE3などの低SIMD命令セットを含む他の実装と比較して、大幅に高速化しています。場合によっては、改良されたAVX-512コードパスはベースラインの約94倍の高速化を達成しており、AVX-512向けに手動で最適化されたアセンブリコードの効率性が際立っています。

この開発は、AVX-512対応の高性能ハードウェアを使用しているユーザーにとって特に有益であり、メディアコンテンツをより効率的に処理できるようになります。しかし、問題が1つあります。Intelは第12世代、第13世代、第14世代CoreプロセッサーでAVX-512を無効化したため、これらのCPUのユーザーはAVX-512を利用できなくなっています。一方、AMDのRyzen 9000シリーズCPUはAVX-512 FPUをフルサポートしているため、これらのプロセッサーのユーザーはFFmpegの成果を活用できます。

残念ながら、AVX-512 の複雑さと特殊性のため、このような最適化は通常、パフォーマンスが重要なアプリケーションにのみ使用され、低レベルのプログラミングとプロセッサのマイクロアーキテクチャに関する専門知識が必要になります。

Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。

アントン・シロフはTom's Hardwareの寄稿ライターです。過去数十年にわたり、CPUやGPUからスーパーコンピュータ、最新のプロセス技術や最新の製造ツールからハイテク業界のトレンドまで、あらゆる分野をカバーしてきました。