HPCシステムズではエンジニアを募集しています。詳しくはこちらをご覧ください。
HPCシステムズのエンジニア達による技術ブログ

Tech Blog

Intel Math Kernel Library ( Intel MKL ) について

時々、お客様からIntel Math Kernel Library ( Intel MKL ) に関する質問を受けます。
最近、Intel MKLはソース配布のHPC向けアプリケーションでも対応例が多いため、興味を持たれている方も多い印象です。

そのため、今回は Intel MKLについて解説します。

〇 Intel MKL とは

Intel MKLは数値演算ライブラリの1種で、主な機能としては BLAS ( Basic Linear Algebra Subprograms )、LAPACK ( Linear Algebra PACKage ) となります。

数値演算ライブラリ、BLAS、LAPACKと、専門用語が並んでいますので、少し解説しますと….

HPC分野の計算アプリケーションでは、殆どの場合、計算途中において大規模な数値演算が発生します。そのため、この大規模演算を高速に処理する演算ルーチンの研究がされており、その成果を元に作成された演算処理を専門に行うライブラリが数値演算ライブラリとなります。
BLAS、LAPACKというのは数値演算ライブラリの種類の名前で、科学技術計算で頻度の高い行列演算を処理するルーチン(関数)群となります。

餅は餅屋、という言葉もあるとおり、やはり、専門家が作成した演算ルーチンは高速ですので、HPC分野の計算アプリケーションでは大規模な行列演算を数値演算ライブラリに任せている場合が非常に多いです。

Intel MKLは、その名の通り Intel社が開発しており、Intel Compiler ( 商品名:Intel Paralle Studio XE ) に同梱されています。
Intel社製という事もあり、特に Intel製CPU環境において非常に高い性能を発揮します。
そのため、HPC Systems では、Intel製CPU環境において BLAS、LAPACK が必要な場合、基本的には Intel MKLの使用をお勧めしています。

〇 Intel MKL のリンク方法

Intel MKL の Developmer Guide から、MKLのリンク方法の部分を見てみると
解説は以下のようになっています。

-L<MKL path> -I<MKL include>
[-I<MKL include>intel64|{ilp64|lp64}}]
[-lmkl_blas{95|95_ilp64|95_lp64}][-lmkl_lapack{95|95_ilp64|95_lp64}][<cluster components>]
-lmkl_{intel|intel_ilp64|intel_lp64|intel_sp2dp|gf|gf_ilp64|gf_lp64}
-lmkl_{intel_thread|gnu_thread|pgi_thread|tbb_thread|sequential}
-lmkl_core[-liomp5] [-lpthread]  [-lm]  [-ldl]  [-ltbb -lstdc+]

もちろんそれぞれにきちんとした意味はあるのですが、ちょっと敷居が高いですね。

Intel MKLのリンク方法が煩雑である、ということはIntel社も把握しているようで、
Intel MKLのリンク補助のページが公式サイトとして用意されています。

Intel® Math Kernel Library Link Line Advisor

最近の Intel Compiler には、Intel MKLをリンクさせる Compiler Option ” -mkl ” が用意されていたりしますが、こちらのURLサイトの方がより正確な情報を教えてくれますので、このサイトを使用することをお勧めします。

Intel MKL については、インターネット上にマニュアルが公開されております。
今回説明できなかった Intel MKL の詳細については、MKLのマニュアルページを参照ください。