OpenBLAS VS AOCL_BLAS
PLASMA ライブラリでは,Single Thread の BLAS を良く利用する.
このたび,Ryzen7 9800X3D が手に入ったので,試しにAMD謹製とOpenBLASとで速度差があるのか調べてみた.
OpenBLAS
GotoBLAS を発端とするオープンソースのBLAS ライブラリ.Zen5 向けには最適化されていない.
AOCL-BLIS
AMD謹製のBLASライブラリ.こちらもオープンソース.Zen5 向けに最適化されているようである.
計測条件
コンパイラ:AOCC 5.0(ライブラリもこちらでコンパイル)
CPU: Ryzen7 9800X3D
メモリ: DDR5 5600
性能測定: DGEMM
ソースコード: https://github.com/selphie-til/BLAS_CHECK
ピーク性能
周波数:5.2GHz
命令セット:AVX512 - 倍精度8個
FMA: 1コアに付き2個
$ PEAK = 5.2 * 10^9 * 8 * 2 *2 = 166.4 [GFLOPS]$
結果
以下の通り.PLASMAライブラリではタイル化のためそんなに大きな行列サイズは必要無い.
そのため,16から1024の間で計測.
結論
どちらも理論性能の75%から80%のあたり.
小さいサイズだと,AOCL-BLASの方が優秀だが,大きくなるとOpenBLASの方が優秀.
この感じだと,OpenBLASを使っておけばOkなのかな.
スイートスポット256~512あたりはAOCL-BLASの方が良さそう.
AMDはソフトウェアをなんとかしろ
