Let's 'C#で数値計算' with Mol & Dsl

Mol (Math object library for .Net) とインテル® MKL

Mol (Math object library for .Net) は、連立方程式や高速フーリェ計算(FFT)等、大規模高速性を要求される部分で インテル® MKL(Math Kernel Library)を直接利用しています。
MKL が提供する各種計算手法は既に確立していて、オープンソフトウェアの形でソースファイル等が公開されたものを多く含みます(BLAS、LAPACK、PARDISO等)。 MKL はそれらをインテルの CPU 用に、インテル自ら最適化(マルチコア・マルチスレッド化等)したものです。現状得られるインテルCPU上で動作する数値計算ライブラリーの中で圧倒的なパフォーマンスを誇っています。
※Mol には MKL をスタティックにリンクしたバージョンも付属しているので、特に MKL を別途用意する必要はありません。
  しかし、パフォーマンスや最新の MKL に追随できない等の問題があるので、最新の MKL をダウンロードしてダイナミックリンク版の使用を強くお勧めします。

MKL(有償・無償版)の入手

MKL はインテルのソフトウェア開発製品にバンドルされています(MKL 単体での購入は、現時点で、できません)。

[有償版]
インテルソフトウェア開発製品はXLSOFT等の代理店から購入できます。

無償版
同じインテルソフトウェア開発製品は「Community Licensing for Intel® Performance Libraries」に名前やメールアドレスを登録するだけ最新版を無償でダウンロードすることができます。
登録するには
 GET INTEL® PERFORMANCE LIBRARIES.FREE.
 (またはGet Intel® Performance Libraries for Free
に必要事項を記入してから送信(Submit)するだけです。

有償・無償版共にダウンロードサイト、パスワード、シリアル番号とライセンスファイル等がインテルよりメールで送付されてきます。同時に、ダウンロードの手順なども記述されていますので、それに従ってください。 次に、取得したユーザID(通常は登録時に使用した自分のメールアドレス)とパスワードを使用してダウンロードサイトにログインします。

※有償・無償で大きな差はありません。
無償版は「Intel Premier Support」が受けられないことと、常に最新版のみがダウンロード可能です。 サポートに関しては、誰でも各種のインテルソフトウェアフォーラムに参加できることでアドバイスや情報を収集できるし、 最新版で後方互換が無くなる可能性は少ないので、無償版で十分な気がします。

現状では Windows、Linux、Mac OS 版の3種類がダウンロード可能です。Mol/Dsl は Windows 専用ですので、Windows 版の MKL をダウンロード(実行形式)します。

MKL のインストール

ダウンロードした実行形式のファイル(例:w_mkl_11.3.1.146.exe)を実行して MKL をインストールします。 最初にライセンスファイルの格納場所を指定すればインストールが開始します。

インストールが正常に終了したら、コマンドプロンプト画面で set コマンドを実行するなどして、環境変数 PATH が正常に設定されているかどうか確認してください。 インストール先等を特に変更しなければ(デフォルトインストール)、以下のようなディレクトリーが PATH に含まれています。

[PATH に含まれる MKL の情報 ]


    C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\intel64_win\mpirt;
    C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\ia32_win\mpirt;
    C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\intel64_win\compiler;
    C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\ia32_win\compiler;
    C:\Program Files (x86)\IntelSWTools\compilers_and_libraries\windows\redist\intel64_win\mkl;
    C:\Program Files (x86)\IntelSWTools\compilers_and_libraries\windows\redist\ia32_win\mkl;
    C:\Program Files (x86)\IntelSWTools\compilers_and_libraries\windows\redist\intel64_mkl\compiler;
    C:\Program Files (x86)\IntelSWTools\compilers_and_libraries\windows\redist\ia32_win\compiler;
パソコン環境に違いがあるので、上記情報が全てに当てはまるとは限りません。 インストールの確認には、Mol に付属する例題 MolExamples.exe を実行してみてください。 正常に実行できない場合は、以下の手順で環境変数 PATH の設定を変更してください。 必ず libiomp5md.dll や mkl_rt.dll 等 MKL DLL の格納場所が PATH に含まれるように変更してください。

Mol(MolExamples.exe) の実行には、最低、上記2つの Dll が必要です。
各 Dll の(標準的な)格納先は以下の通りです。

libiomp5md.dll:


    C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\intel64_win\compiler;
    C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\ia32_win\compiler;

mkl_rt.dll:

    C:\Program Files (x86)\IntelSWTools\compilers_and_libraries\windows\redist\intel64_win\mkl;
    C:\Program Files (x86)\IntelSWTools\compilers_and_libraries\windows\redist\ia32_win\mkl;
環境変数を変更したらコマンドプロンプト画面(必ず一旦クローズしてから再オープンします)で set コマンドを確認後、 MolExamples.exe が正常に実行できるかどうか確認してください。

詳細なドキュメントも以下の場所にインストールされます。
"C:\Program Files (x86)\IntelSWTools\documentation_2016\ja\mkl\ps2016\get_started.htm"

インテルのウェブサイト から最新の情報を得ることもできます。

MKL と Microsoft Visual Studio

MKL はマイクロソフト社の開発環境 Microsoft Visual Studio から利用できます。
C/C++ の各種例題が用意されているので試してみてください。MKL が圧倒的なパフォーマンスを誇るとはいえ、 直接利用するには相当なプログラミングスキルとデータ構造等の予備知識が必要です。 特に急いでいるときなど、気楽にプログラミングするわけにはいかないと思います。 Mol (Math Object Library)は、計算本来の目的と関係のない複雑な C/C++ のデータ構造やインターフェースを隠蔽、 .Net 環境で C# 等から MKL の各種計算機能を簡単に利用できるオブジェクト指向のクラスライブラリーです。