C言語でオレオレ行列積ルーチンを作るプロジェクト (その8)
オレオレ行列積ルーチンがまた少しだけ速くなった。
プログラム
プログラム全体は以下のGitHubリポジトリにあります。 今回利用するプログラムは、
main.c
とmy_dgemm08.c
です。
コンパイル
$ gcc -static -fopenmp -mavx -O3 main.c my_dgemm08.c -I/opt/OpenBLAS/include -L/opt/OpenBLAS/lib -lopenblas -lpthread -lrt
実行結果
プログラムを5回実行した結果を以下に示します。
回数 | 秒 |
---|---|
1回目 | 2.362352 |
2回目 | 2.398940 |
3回目 | 2.374885 (中央値) |
4回目 | 2.364634 |
5回目 | 2.396504 |
速度の比較
BLAS | 秒 | 比率 |
---|---|---|
OpenBLAS | 1.475622 | 100% |
Intel MKL | 1.574675 | 93.7% |
my_dgemm08 | 2.374885 | 62.1% |
my_dgemm07 | 2.743161 | 53.8% |
ATLAS | 5.104218 | 28.9% |
まとめ
ついにOpenBLASのスピードの60%超を達成した。