LinuxでIntel MKLを使って行列積の計算をしてみた
インテル Parallel Studio XE 2015 Composer Edition for Fortran & C++ の 30日間の体験版を申し込んだので、Intel MKLを使って行列積の計算をしてみた。
プログラム
プログラムは前回の記事「LinuxでOpenBLASとATLASを使って行列積の計算をしてみた - Unity 勉強メモ」 と基本的に同じです。ただし、インクルードするヘッダーファイルを、
#include <cblas.h>
から
#include "mkl.h"
に変更した。
コンパイル
シェルで以下のように入力するとコンパイルできる。 コンパイラにはiccを使った。
$ icc -mkl -o dgemm_test dgemm_test.c -lrt
実行結果
プログラムを5回実行した結果を以下に示す。
回数 | 秒 |
---|---|
1回目 | 2.014311 (中央値) |
2回目 | 2.164319 |
3回目 | 2.013706 |
4回目 | 1.992157 |
5回目 | 2.068593 |
まとめ
前回の結果と統合すると以下のようになる。
BLAS | 秒 (中央値) |
---|---|
Open BLAS | 1.610352 |
Intel MKL | 2.014311 |
ATLAS | 3.169463 |
この結果はとても意外である。
Intel謹製のライブラリがオープンソースの実装に負けてしまっているのである。
今回の測定では行列のサイズをN = 2000
に固定した場合のものなので、
他のサイズの場合は変わる可能性もあるが、それでも少なくともN = 2000
のときは
Intel MKLはOpen BLASに負けるようである。