インテル® MKL 2017 デベロッパー・ガイド
異なるメッセージ・パッシング・インターフェイス (MPI) ライブラリーはアプリケーション・プログラミング・インターフェイス (API) レベルでは互換性がありますが、アプリケーション・バイナリー・インターフェイス (ABI) レベルでは互換性がない場合があります。そのため、インテル® MKL では特定の MPI ライブラリーをサポートする事前ビルド BLACS ライブラリーのセットを提供しています。しかし、ほかの MPI ライブラリーをインテル® MKL で使用することはできません。この問題を解決するため、インテル® MKL には、MPI に依存しない ABI をインテル® MKL に提供する、MKLMPI アダプターが含まれています。アダプターはソースコードで提供されます。デフォルトでサポートされていない MPI ライブラリーをインテル® MKL で使用するには、アダプターを使用してカスタム・スタティックまたはダイナミック BLACS ライブラリーをビルドし、事前ビルド・ライブラリーと同様に使用します。
MKLMPI アダプターは、<mkl ディレクトリー>\interfaces\mklmpi ディレクトリーにあります。
カスタム BLACS ライブラリーをビルドするには、上記のディレクトリーから nmake コマンドを実行します。
次に例を示します。
nmake libintel64
このコマンドは、システムのデフォルト MPI コンパイラーを使用して、スタティック・カスタム BLACS ライブラリー mkl_blacs_custom_lp64.lib をビルドします。カスタム・ライブラリーのビルド方法を定義するターゲットおよび変数は、<mkl ディレクトリー>\interfaces\mklmpi\makefile を参照してください。MPICC 変数でコンパイラーを指定できます。
ビルドプロセスの制御についての詳細は、次のコマンドを使用してドキュメントを参照してください。
nmake help
スタティック・リンクの場合、事前ビルド BLACS ライブラリーを使用するのと全く同じ方法でカスタム BLACS ライブラリーを使用し、カスタム・ライブラリーをリンカーに渡します。例えば、mkl_blacs_intelmpi_lp64.lib スタティック・ライブラリーを渡す代わりに、mkl_blacs_custom_lp64.lib を渡します。
ダイナミック・カスタム BLACS ライブラリーを使用するには、次の操作を行います。
事前ビルド BLACS ライブラリーを使用するときと同じ方法でアプリケーションをリンクします。
mkl_set_mpi サポート関数を呼び出すか、MKL_BLACS_MPI 環境変数を次のいずれかの値に設定します。
CUSTOM
アプリケーションにリンクした BLACS インターフェイスに応じて、デフォルト名 mkl_blacs_custom_lp64.dll (LP64) または mkl_blacs_custom_ilp64.dll (ILP64) でカスタム・ライブラリーをロードします。
<dll_name>
指定された BLACS DLL をロードします。
インテル® MKL は、インテル® MKL ダイナミック・ライブラリーのディレクトリーまたはアプリケーション実行ファイルのディレクトリーのいずれかで指定された DLL を探します。
mkl_set_mpi 関数の詳細については、『インテル® MKL デベロッパー・リファレンス』を参照してください。