コンパイラ最適化とロードストア競合:パフォーマンスの崖っぷち

2025-05-04

この記事では、予期せぬパフォーマンスの問題について説明します。単純なジオメトリデコーダが、異なるコンパイラバージョン間でパフォーマンスに大きなばらつきを示します。その根本原因は、あまり知られていないマイクロアーキテクチャの詳細、ロードストア競合です。GCC-14は巧妙なベクトル化によってパフォーマンスを向上させました。しかし、GCC-15は最適化戦略の変更により、ロードストア競合が頻発し、パフォーマンスが大幅に低下しました。一方、ClangはARMアーキテクチャで驚くべきパフォーマンスを示し、ロードストアの特性をうまく活用しました。これは、コンパイラ最適化が万能薬ではないことを示しています。生成されたコードと基礎となるハードウェアのマイクロアーキテクチャに細心の注意を払うことが重要です。