インテル(R) マス・カーネル・ライブラリ (インテル® MKL) 8.0 Windows* 版入門ガイド  

目次

概要
はじめに
    ディレクトリ構造の概要
    ディレクトリ構造の詳細
インテル MKL の構成
インテル MKL へのアプリケーションのリンク
スレッド化
著作権/法律に基づく表示

概要

本ガイドは、インストール後に実行する必要のある手順や簡単な使用例など、インテル® マス・カーネル・ライブラリ (インテル® MKL) Windows* 版の習得に役立つ情報を提供します。アプリケーションのライブラリへのリンク方法、ライブラリの構成方法、その他の基本的な手順について説明します。

本ガイドは、インテル MKL が既にマシンにインストールされていることを前提として説明しています。

製品をまだインストールしていない場合は、「インテル® MKL インストール・ガイド」 (Install.htm ファイル) を参照してください。

はじめに

インテル MKL のインストール後、インストールとライブラリの構成が適切に行われたかどうかを次の手順で確認すると良いでしょう。 

  1. mkl\8.0 という名前のサブディレクトリが、指定したインストール・ディレクトリ (デフォルトでは C:\Program Files\intel\mkl\8.0) に作成されているか確認します。
  2. 複数のバージョンのインテル MKL をマシンにインストールしている場合は、ビルド・スクリプトを更新して、使用するバージョンのインテル MKL を指定します。1 台のマシンに複数のバージョンのインテル MKL をインストールすることができますが、ベータ版はアンインストールしなければならない点に注意してください。
  3. 次の 3 ファイルが tools\environment ディレクトリに配置されていることを確認します。
    mklvars32.bat
    mklvarsem64t.bat
    mklvars64.bat

    これらのファイルを使用して、ユーザー・シェルで環境変数 PATHLIB、および INCLUDE を設定することができます。

ディレクトリ構造の概要

インストール後のインテル 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 つで構成されています。

現在、IA-32 プロセッサ用に次の 2 つのライブラリが用意されています。それぞれのライブラリは、異なるインターフェイスをサポートします。

  1. mkl_c.lib  (cdecl インターフェイス)
  2. mkl_s.lib  (CVF デフォルト・インターフェイス)

インテル EM64T 対応プロセッサおよび Itanium プロセッサでは、関数呼び出しの基準が 1 つであるため、これらのインターフェイス・ライブラリは用意されていません。高度なライブラリ (LAPACK、スパースソルバ) はプロセッサに関係なく最適化されているため、インテル EM64T 対応プロセッサや Itanium プロセッサ、インテル® Pentium® プロセッサから IA-32 アーキテクチャ採用の Pentium 4 プロセッサまで、さまざまなプロセッサ上で効果的に使用することができます。BLAS、CBLAS、スパース BLAS、FFT、DFT、VML、VSL、および区間演算ルーチンを含むプロセッサ固有のカーネルは、それぞれのプロセッサ用に最適化されています。

また、スレッド化アプリケーションは次のように提供されます。

ライブラリの詳細なディレクトリ構造を次に示します。

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 の構成

インテル MKL のインストール時に、指定したインストール・ディレクトリを環境変数 PATH、LIB、INCLUDE に設定できます。
インストール後、tools\environment ディレクトリにあるファイル mklvars32.bat、mklvarsem64t.bat、mklvars64.bat を使用して、ユーザー・シェルで環境変数を設定できます。

さらにカスタマイズする場合は、構成ファイル mkl.cfg を使用します。このファイルには、変更可能な変数が含まれています。構成ファイルの使用に関する詳細は、「インテル MKL テクニカル・ユーザー・ノート 」を参照してください。

インテル MKL へのアプリケーションのリンク

IA-32 アプリケーションでは、インターフェイス・ファイルのみアプリケーションにリンクする必要があります。その他のライブラリは、インターフェイス・ライブラリ内でデフォルトのライブラリとして認識され、リンカにより自動的にリンクされます。インテル EM64T 対応アプリケーション、Itanium 2 ベース・アプリケーションでは、それぞれ mkl_em64t.libmkl_ipf.lib をリンクします。

インテル® Fortran コンパイラ 9.0 と CVF を使用した場合の例を以下に示します。

IA-32 アプリケーション

ifort myprog.f mkl_c.lib libguide.lib
32 ビット・プロセッサのスタティック・リンク、LAPACK、カーネル用 cdecl インターフェイス。
ifort myprog.f mkl_lapack95.lib mkl_c.lib libguide.lib
32 ビット・プロセッサのスタティック・リンク、Fortran-95 LAPACK インターフェイス、カーネル用 cdecl インターフェイス。
df myprog.f mkl_s.lib libguide.lib
IA-32 プラットフォーム上でのスタティック・リンク、LAPACK、カーネル用 CVF デフォルト・インターフェイス。
ifort myprog.f mkl_c_dll.lib libguide.lib
IA-32 プラットフォーム上でのダイナミック・リンク用 cdecl インターフェイス。DLL ディスパッチャにより、プロセッサのダイナミック・カーネルに対して適切な DLL がロードされます。
df myprog.f mkl_s_dll.lib libguide.lib
IA-32 プラットフォーム上でのダイナミック・リンク用 CVF デフォルト・インターフェイス。DLL ディスパッチャにより、プロセッサのダイナミック・カーネルに対して適切な DLL がロードされます。
ifort myprog.f mkl_solver.lib mkl_c.lib libguide.lib
スパースソルバおよび (スパースソルバをサポートするのに必要なカーネルを含む) その他のルーチンをインテル MKL へ静的にリンクするための 32 ビット・プロセッサ用 cdecl インターフェイス。

インテル EM64T 対応アプリケーション

ifort myprog.f mkl_em64t.lib libguide.lib
インテル EM64T 対応アプリケーション用 LAPACK およびカーネルのスタティック・リンク。
ifort myprog.f mkl_lapack95.lib mkl_em64t.lib libguide.lib
インテル EM64T 対応アプリケーション用 Fortarn-95 LAPACK インターフェイスおよびカーネルのスタティック・リンク。
ifort myprog.f mkl_dll.lib libguide.lib
インテル EM64T 対応アプリケーション用ダイナミック・リンク DLL ディスパッチャにより、プロセッサのダイナミック・カーネルに対する適切な DLL がロードされます。
ifort myprog.f mkl_solver.lib mkl_em64t.lib libguide.lib
インテル EM64T 対応アプリケーション用スタティック・リンク。スパースソルバおよび (スパースソルバをサポートするのに必要なカーネルを含む) インテル MKL 内のその他のルーチンを静的にリンクします。

Itanium 2 ベース・アプリケーション

ifort myprog.f mkl_ipf.lib libguide.lib
Itanium 2 ベース・アプリケーション用 LAPACK およびカーネルのスタティック・リンク
ifort myprog.f mkl_lapack95.lib mkl_ipf.lib libguide.lib
Itanium 2 ベース・アプリケーション用 Fortran-95 LAPACK インターフェイスおよびカーネルのスタティック・リンク
ifort myprog.f mkl_dll.lib libguide.lib
Itanium 2 ベース・アプリケーション用ダイナミック・リンク DLL ディスパッチャにより、プロセッサのダイナミック・カーネルに対して適切な DLL がロードされます。
ifort myprog.f mkl_solver.lib mkl_ipf.lib libguide.lib
Itanium 2 ベース・アプリケーション用スタティック・リンク。スパースソルバおよび (スパースソルバをサポートするのに必要なカーネルを含む) インテル MKL 内のその他のルーチンを静的にリンクします。

注意:

本リリースでは、次のライブラリはデフォルトのライブラリに含まれていません。

これらのライブラリは、上記の例に示すようにリンクする必要があります。

リンク例は、インテル 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.