Unity 勉強メモ

ゲームエンジンのUnityを勉強するブログです。

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に負けるようである。