概要
はじめに
ディレクトリ構造の概要
ディレクトリ構造の詳細
インテル MKL の構成
インテル MKL へのアプリケーションのリンク
スレッド化
著作権/法律に基づく表示
本ガイドは、インストール後に実行する必要のある手順や簡単な使用例など、インテル® マス・カーネル・ライブラリ (インテル® MKL) Windows* 版の習得に役立つ情報を提供します。アプリケーションのライブラリへのリンク方法、ライブラリの構成方法、その他の基本的な手順について説明します。
本ガイドは、インテル MKL が既にマシンにインストールされていることを前提として説明しています。
製品をまだインストールしていない場合は、「インテル® MKL インストール・ガイド」 (Install.htm ファイル) を参照してください。
インテル MKL のインストール後、インストールとライブラリの構成が適切に行われたかどうかを次の手順で確認すると良いでしょう。
インストール後のインテル MKL のディレクトリ構造を以下に示します。ライブラリのインストール時に指定したマシン上のインストール・ディレクトリに mkl\8.0 ディレクトリが作成されます。
mkl\8.0 | メイン・ディレクトリ | |
mkl\8.0\doc | ドキュメント・ディレクトリ | |
mklEULA.rtf | インテル MKL ライセンス | |
Doc_Index.htm | インテル MKL ドキュメント・インデックス | |
Getting_Started.htm | インテル MKL 入門ガイド (本ガイド) | |
Install.htm | インストール・ガイド | |
Readme.txt | 製品に関する基本情報 | |
Release_Notes.htm | リリースノート | |
mklman.pdf | インテル MKL リファレンス・マニュアル (英語) | |
mklman61_j.pdf | インテル MKL リファレンス・マニュアル (日本語) | |
mklqref/index.htm | インテル MKL クイック・リファレンス | |
mklsupport.txt | サポート用のパッケージ ID 情報 | |
mkluse.htm | インテル MKL テクニカル・ユーザー・ノート | |
vmlnotes.htm | VML の概要 | |
vslnotes.pdf | VSL の概要 | |
mkl\8.0\examples | ソースおよびデータ例 | |
mkl\8.0\include | ライブラリ・ルーチンの INCLUDE ファイル、テストの INCLUDE ファイル、プログラム例 | |
mkl\8.0\tests | テストのソースおよびデータ | |
mkl\8.0\ia32\bin | IA-32 アプリケーション用 DLL | |
mkl\8.0\ia32\lib | IA-32 アプリケーション用スタティック・ライブラリおよび IA-32 アプリケーション用 DLL に対するスタティック・インターフェイス | |
mkl\8.0\em64t\bin | インテル® エクステンデッド・メモリー 64 テクノロジー (インテル® EM64T) 対応プロセッサ上で実行されるアプリケーション用 DLL | |
mkl\8.0\em64t\lib | インテル EM64T 対応プロセッサ上で実行される IA-32 アプリケーション用スタティック・ライブラリおよびインテル EM64T 対応プロセッサ上で実行される IA-32 アプリケーション用 DLL に対するスタティック・インターフェイス | |
mkl\8.0\ia64\bin | Itanium® 2 ベース・アプリケーション用 DLL | |
mkl\8.0\ia64\lib | Itanium 2 ベース・アプリケーション用スタティック・ライブラリおよび Itanium 2 ベース・アプリケーション用 DLL に対するスタティック・インターフェイス | |
mkl\8.0\tools\builder | 動的にリンク可能なカスタム・ライブラリを作成するためのツール | |
mkl\8.0\tools\environment | ユーザー・シェルで環境変数を設定するバッチファイル | |
mkl\8.0\tools\support | インテル(R) プレミア・サポートへパッケージ ID とライセンス・キー情報を報告するためのユーティリティ |
インテル MKL では、IA-32 プロセッサ用、インテル EM64T 対応プロセッサ用、およびインテル Itanium 2 プロセッサ用に、別々のライブラリを用意しています。
インテル MKL は、次の 3 つで構成されています。
mkl_ia32.lib
、mkl_em64t.lib
、および mkl_ipf.lib
内のプロセッサ固有のカーネル
現在、IA-32 プロセッサ用に次の 2 つのライブラリが用意されています。それぞれのライブラリは、異なるインターフェイスをサポートします。
mkl_c.lib
(cdecl インターフェイス)mkl_s.lib
(CVF デフォルト・インターフェイス)インテル EM64T 対応プロセッサおよび Itanium プロセッサでは、関数呼び出しの基準が 1 つであるため、これらのインターフェイス・ライブラリは用意されていません。高度なライブラリ (LAPACK、スパースソルバ) はプロセッサに関係なく最適化されているため、インテル EM64T 対応プロセッサや Itanium プロセッサ、インテル® Pentium® プロセッサから IA-32 アーキテクチャ採用の Pentium 4 プロセッサまで、さまざまなプロセッサ上で効果的に使用することができます。BLAS、CBLAS、スパース BLAS、FFT、DFT、VML、VSL、および区間演算ルーチンを含むプロセッサ固有のカーネルは、それぞれのプロセッサ用に最適化されています。
また、スレッド化アプリケーションは次のように提供されます。
libguide.lib
: スタティック・リンク用の別ライブラリlibguide40.dll
: インテル MKL へ動的にリンクするためのダイナミック・リンク・ライブラリ
ライブラリの詳細なディレクトリ構造を次に示します。
ia32 | 32 ビット・アプリケーション用のすべてのライブラリ | |
ia32\bin | IA-32 アプリケーション用 DLL | |
mkl_lapack32.dll | 単精度データ型 LAPACK ルーチンおよびドライバ | |
mkl_lapack64.dll | 倍精度データ型 LAPACK ルーチンおよびドライバ | |
mkl_def.dll | デフォルトのカーネル (Pentium プロセッサ、Pentium Pro プロセッサ、Pentium II プロセッサ用) | |
mkl_p3.dll | Pentium III プロセッサ用カーネル | |
mkl_p4.dll | Pentium 4 プロセッサ用カーネル | |
mkl_p4p.dll | ストリーミング SIMD 拡張命令 3 (SSE3) 対応インテル Pentium 4 プロセッサ用カーネル | |
mkl_vml_def.dll | デフォルト・カーネルの VML 部分 (Pentium プロセッサ、Pentium Pro プロセッサ、Pentium II プロセッサ用) | |
mkl_vml_p3.dll | Pentium III プロセッサ用カーネルの VML 部分 | |
mkl_vml_p4.dll | Pentium 4 プロセッサ用カーネルの VML 部分 | |
mkl_vml_p4p.dll | ストリーミング SIMD 拡張命令 3 (SSE3) 対応インテル Pentium 4 プロセッサ用 VML/VSL | |
mkl_ias.dll | 区間演算ルーチン | |
libguide40.dll | ダイナミック・スレッディング・ライブラリ | |
ia32\lib | 32 ビット・アプリケーション用スタティック・ライブラリおよび 32 ビット・アプリケーション用 DLL に対するスタティック・インターフェイス | |
mkl_c.lib | cdecl インターフェイス・ライブラリ | |
mkl_s.lib | CVF デフォルト・インターフェイス・ライブラリ | |
mkl_c_dll.lib | ダイナミック・ライブラリ用 cdecl インターフェイス・ライブラリ | |
mkl_s_dll.lib | ダイナミック・ライブラリ用 CVF デフォルト・インターフェイス・ライブラリ | |
mkl_lapack.lib | LAPACK ルーチンおよびドライバ | |
mkl_lapack95.lib | LAPACK ルーチンおよびドライバに対する Fortran-95 インターフェイス | |
mkl_blas95.lib | BLAS ルーチンに対する Fortran-95 インターフェイス | |
mkl_solver.lib | スパース・ソルバ・ルーチン | |
mkl_ia32.lib | Pentium プロセッサ、Pentium III プロセッサ、Pentium 4 プロセッサ用に最適化されたカーネル (BLAS、CBLAS、スパース BLAS、FFT、DFT、VML、VSL、区間演算) | |
libguide40.lib | ダイナミック・スレッディング・ライブラリ用インターフェイス・ライブラリ | |
libguide.lib | スタティック・スレッディング・ライブラリ | |
em64t | インテル EM64T 対応アプリケーション用のすべてのライブラリ | |
em64t\bin | インテル EM64T 対応アプリケーション用 DLL | |
mkl_lapack32.dll | 単精度データ型 LAPACK ルーチンおよびドライバ | |
mkl_lapack64.dll | 倍精度データ型 LAPACK ルーチンおよびドライバ | |
mkl_def.dll | インテル EM64T 対応プロセッサ用のデフォルト・カーネル | |
mkl_p4n.dll | インテル EM64T 対応インテル® Xeon (TM) プロセッサ用カーネル | |
mkl_vml_def.dll | インテル EM64T 対応プロセッサ用デフォルト・カーネルの VML 部分 | |
mkl_vml_p4n.dll | インテル EM64T 対応インテル Xeon プロセッサ用 VML/VSL | |
mkl_ias.dll | 区間演算ルーチン | |
libguide40.dll | ダイナミック・スレッディング・ライブラリ | |
em64t\lib | インテル EM64T 対応プロセッサ用スタティック・ライブラリおよびインテル EM64T 対応プロセッサ用 DLL に対するスタティック・インターフェイス | |
mkl_dll.lib | ダイナミック・ライブラリ用インターフェイス・ライブラリ | |
mkl_lapack.lib | LAPACK ルーチンおよびドライバ | |
mkl_blas95.lib | BLAS ルーチンに対する Fortran-95 インターフェイス | |
mkl_lapack95.lib | LAPACK ルーチンおよびドライバに対する Fortran-95 インターフェイス | |
mkl_solver.lib | スパース・ソルバ・ルーチン | |
mkl_em64t.lib | インテル EM64T 対応プロセッサ用に最適化されたカーネル (BLAS、CBLAS、スパース BLAS、FFT、DFT、VML、VSL、区間演算) | |
libguide40.lib | ダイナミック・スレッディング・ライブラリ用インターフェイス・ライブラリ | |
libguide.lib | スタティック・スレッディング・ライブラリ | |
ia64 | Itanium 2 ベース・アプリケーション用のすべてのライブラリ | |
ia64\bin | Itanium 2 ベース・アプリケーション用 DLL | |
mkl_lapack32.dll | 単精度データ型 LAPACK ルーチンおよびドライバ | |
mkl_lapack64.dll | 倍精度データ型 LAPACK ルーチンおよびドライバ | |
mkl_i2p.dll | Itanium 2 プロセッサ用カーネル | |
mkl_vml_i2p.dll | Itanium 2 プロセッサ用カーネルの VML 部分 | |
mkl_ias.dll | 区間演算ルーチン | |
libguide40.dll | スレッディング・ライブラリ | |
ia64\lib | Itanium 2 ベース・アプリケーション用スタティック・ライブラリおよび Itanium 2 ベース・アプリケーション用 DLL に対するスタティック・インターフェイス | |
mkl_dll.lib | DLL に対するインターフェイス・ライブラリ | |
mkl_lapack.lib | LAPACK ルーチンおよびドライバ | |
mkl_lapack95.lib | LAPACK ルーチンおよびドライバに対する Fortran-95 インターフェイス | |
mkl_blas95.lib | BLAS ルーチンに対する Fortran-95 インターフェイス | |
mkl_solver.lib | スパース・ソルバ・ルーチン | |
mkl_ipf.lib | Itanium 2 プロセッサ用カーネル (BLAS、CBLAS、スパース BLAS、FFT、DFT、VML、VSL、区間演算) | |
libguide40.lib | ダイナミック・スレッディング・ライブラリ用インターフェイス・ライブラリ | |
libguide.lib | スタティック・スレッディング・ライブラリ |
さらにカスタマイズする場合は、構成ファイル mkl.cfg を使用します。このファイルには、変更可能な変数が含まれています。構成ファイルの使用に関する詳細は、「インテル MKL テクニカル・ユーザー・ノート 」を参照してください。
IA-32 アプリケーションでは、インターフェイス・ファイルのみアプリケーションにリンクする必要があります。その他のライブラリは、インターフェイス・ライブラリ内でデフォルトのライブラリとして認識され、リンカにより自動的にリンクされます。インテル EM64T 対応アプリケーション、Itanium 2 ベース・アプリケーションでは、それぞれ mkl_em64t.lib
と mkl_ipf.lib
をリンクします。
インテル® Fortran コンパイラ 9.0 と CVF を使用した場合の例を以下に示します。
IA-32 アプリケーション
ifort myprog.f mkl_c.lib libguide.lib
ifort myprog.f mkl_lapack95.lib mkl_c.lib libguide.lib
df myprog.f mkl_s.lib libguide.lib
ifort myprog.f mkl_c_dll.lib libguide.lib
df myprog.f mkl_s_dll.lib libguide.lib
ifort myprog.f mkl_solver.lib mkl_c.lib libguide.lib
インテル EM64T 対応アプリケーション
ifort myprog.f mkl_em64t.lib libguide.lib
ifort myprog.f mkl_lapack95.lib mkl_em64t.lib libguide.lib
ifort myprog.f mkl_dll.lib libguide.lib
ifort myprog.f mkl_solver.lib mkl_em64t.lib libguide.lib
Itanium 2 ベース・アプリケーション
ifort myprog.f mkl_ipf.lib libguide.lib
ifort myprog.f mkl_lapack95.lib mkl_ipf.lib libguide.lib
ifort myprog.f mkl_dll.lib libguide.lib
ifort myprog.f mkl_solver.lib mkl_ipf.lib libguide.lib
注意:
本リリースでは、次のライブラリはデフォルトのライブラリに含まれていません。
mkl_solver.lib
(スパースソルバ・ライブラリ)mkl_lapack95.lib
(LAPACK ルーチンとドライバに対する Fortran-95 インターフェイス)mkl_blas95.lib
(BLAS ルーチンに対する Fortran-95 インターフェイス)これらのライブラリは、上記の例に示すようにリンクする必要があります。
リンク例は、インテル MKL サポート Web サイトよりご覧いただけます。 http://www.intel.com/support/jp/performancetools/
インテル EM64T 対応アプリケーションおよび Itanium 2 ベース・アプリケーションの場合の注意
1289 以降の新しい SDK には、外部参照 _security_cookie
を解決する bufferoverflowu.lib
が含まれています。このライブラリは、"BUF_LIB=bufferoverflowu.lib"
マクロと共に、例とテストの makefile に含まれます。古い SDK を使用する場合は、このマクロを空にする ("BUF_LIB="
) か、またはリンク文字列から削除します。
インテル MKL は、多くの箇所でスレッド化されています。また、 OpenMP* を使用しています。
OpenMP ソフトウェアは、使用するスレッド数を設定する OMP_NUM_THREADS
環境変数を基にスレッド化を実行します。スレッド数の設定は、環境変数で設定 (Microsoft* Windows* の [コントロール パネル] から [システムのプロパティ] ボックスを開き、[環境変数] パネルで設定) するか、 またはプログラムを実行するシェルで設定することができます。
変数 OMP_NUM_THREADS
が設定されていないと、インテル MKL はスレッド数を 1 とみなして実行します (ただし、スパースソルバの場合はデフォルトのスレッド数である、システムのプロセッサ数が使用されます)。OMP_NUM_THREADS
はアプリケーションで使用するプロセッサ数に設定しておくことを推奨します。
スレッド数を変更するには、プログラムを実行するコマンドライン・シェルで次のように入力します。
set OMP_NUM_THREADS=
<使用するスレッド数>
シェルによっては、以下のように設定します。
export OMP_NUM_THREADS=
<使用するスレッド数>
Microsoft Windows 98 または Windows Me ではマルチプロセッシングがサポートされていないため、この変数を設定してもその利点を得ることはできない点に注意してください。
インテル MKL のテクニカル情報に関する詳細は、「インテル MKL テクニカル・ユーザー・ノート 」 (mkluse.htm) を参照してください。
本資料に掲載されている情報は、インテル製品の概要説明を目的としたものです。本資料は、明示、黙示、禁反言またはその他の如何を問わず、いかなる知的財産権のライセンスを許諾するためのものではありません。製品に付属の売買契約書『Intel's Terms and conditions of Sales』に規定されている場合を除き、インテルはいかなる責を負うものではなく、またインテル製品の販売や使用に関する明示または黙示の保証(特定目的への適合性、商品性に関する保証、第三者の特許権、著作権、その他、知的所有権を侵害していないことへの保証を含む)に関しても一切責任を負わないものとします。インテル製品は、医療、救命、延命措置などの目的に使用することを前提としたものではありません。
本資料およびこれに記載されているソフトウェアはライセンス契約に基づいて提供されるものであり、その使用および複製はライセンス契約で定められた条件下でのみ許可されます。本資料で提供される情報は、情報供与のみを目的としたものであり、予告なしに変更されることがあります。また、本資料で提供される情報は、インテルによる確約と解釈されるべきものではありません。インテルは本資料の内容およびこれに関連して提供されるソフトウェアにエラー、誤り、不正確な点が含まれていたとしても一切の責任を負いません。
「未使用 (reserved)」、「未定義 (undefined)」と記述されている機能や命令に関しては、今後新たに定義づけが行われる可能性があるため、設計には利用しないようご注意ください。これらの機能や命令を設計に利用した場合、定義の追加によって機能性や互換性などの面でいかなる問題が生じてもインテルは一切その責を負いません。
本資料で説明されているソフトウェアは、設計上の不具合が含まれている可能性があり、公表されている仕様とは異なる動作をする場合があります。現在確認済みの不具合については、インテルまでお問い合わせください。
Intel、インテル、Itanium、Pentium、Xeon は、米国およびその他の国における Intel Corporation またはその子会社の商標または登録商標です。
* その他の社名、製品名などは、一般に各社の商標または登録商標です。
(C) 2005, Intel Corporation.