インテル® マス・カーネル・ライブラリ (インテル® MKL) 8.0 Windows* 版
リリースノート
目次
概要
ディレクトリ構造
インテル MKL 8.0 の新機能
動作環境
インストール
既知の制限事項
テクニカル・サポートとフィードバック
関連製品とサービス
著作権/法律に基づく表示
インテル® マス・カーネル・ライブラリ (インテル® MKL) は、工学、科学、金融系ソフトウェアの開発者向けに、線形代数ルーチン、高速フーリエ変換、ベクトル・マス・ライブラリ関数、乱数生成関数を提供します。これらのルーチンや関数はすべて、最新のインテル® Pentium® 4 プロセッサ、ストリーミング SIMD 拡張命令 3 (SSE3) およびインテル® エクステンデッド・メモリー 64 テクノロジー (インテル® EM64T) に対応したインテル® Xeon® プロセッサ、インテル® Itanium® 2 プロセッサ用に最適化されています。本ソフトウェアは、インテル以外の (x86) プロセッサでも問題なく動作します。
インテル MKL は、線形代数機能として、LAPACK (ソルバおよび固有ソルバ) に加え、複雑な演算ソフトウェアで必要な BLAS レベル 1 (ベクトル演算)、レベル 2 (ベクトル-行列演算)、レベル 3 (行列-行列演算) を提供します。FORTRAN 90/95 用に、少ない引数で LAPACK ドライバ・サブルーチンや計算サブルーチンを呼び出すことができるインターフェイスも用意しています。スパース連立方程式の解の算出用には、スパース BLAS レベル 1、レベル 2、レベル 3 のサポートに加え、直接法スパースソルバおよび反復法スパースソルバも用意しています。インテル MKL は、(変換の長さが 2 の累乗に限定されない) 混合基数に対応する多次元離散フーリエ変換 (1 次元、2 次元、3 次元) を備えています。インテル MKL のベクトル化された超越関数 (ベクトル・マス・ライブラリ (VML) と呼ぶ) は、多くのプロセッサ上で、LibM (スカラ) 関数よりも優れたパフォーマンスと精度を実現します。ベクトル・スタティスティカル・ライブラリ (VSL) は、さまざまな確率分布および畳み込み/相関ルーチン用の高性能かつベクトル化された乱数ジェネレータを提供します。また、浮動小数点値の区間に対して演算を行う関数群も用意しています。区間演算パッケージには、区間線形連立方程式のソルバ、逆区間行列のソルバ、および区間行列の正則性/特異性をテストするための関数が含まれています。インテル MKL の BLAS、LAPACK、直説法スパース・ソルバ (DSS)、FFT 関数は、OpenMP* を使用してスレッド化されています。インテル MKL は完全にスレッドセーフです。
インテル MKL 8.0 の新機能
- 反復法スパースソルバ
- スパースソルバのサポート強化
- 区間演算
- 区間線形連立方程式のソルバ
- 逆区間行列
- 区間行列の正則性/特異性をテストするための関数
- ベクトル・スタティスティカル・ライブラリの新機能
- 畳み込みと相関
- 新しい乱数ジェネレータとサービス関数
- インテル MKL の DFT 用 FFTW インターフェイス
- LAPACK サブルーチン用 FORTRAN 90/95 インターフェイス
- パフォーマンスの向上とバグ修正
これらの機能に関する詳細は、次の「インテル MKL 8.0 の新機能」セクションを参照してください。
インテル MKL の一部の基となった BLAS の原版は http://www.netlib.org/blas/index.html から、LAPACK の原版は http://www.netlib.org/lapack/index.html から入手できます。LAPACK の開発は、E.Anderson、Z.Bai、C.Bischof、S.Blackford、J.Demmel、J.Dongarra、J.Du Croz、A.Greenbaum、S.Hammarling、A.McKenney、D.Sorensen らによって行われました。LAPACK 用 FORTRAN 90/95 インターフェイスは、http://www.netlib.org/lapack95/index.html にある LAPACK95 パッケージと類似しています。
インテル MKL のディレクトリ構造については、入門ガイド (ファイル名: Getting_Started.htm) を参照してください。入門ガイドおよびその他のドキュメントは、doc ディレクトリまたはインテル MKL 製品 Web サイト (http://www.intel.com/software/products/clustermkl/) にあります。
インテル MKL 7.2 からのパフォーマンスの向上
- インテル Itanium 2 プロセッサにおけるパフォーマンスの向上
- BLAS
- BLAS レベル 2 関数のパフォーマンスの向上
- Sger - 20% から 70%
- Cgeru、cgerc - 50%
- Dsyr - 10% から 70%
- Ssyr - 10% から 50%
- zgemv - 100 から 700 までのサイズでは 5% から 15%
- cdotc、cdotu - キャッシュで 5% から 10%、メモリーで最大 5 倍
- zdotc、zdotu - メモリーで最大 3 倍
- dzasum、scasum - メモリーで最大 2.5 倍
- ddot、sdot - キャッシュで 10% から 20%
- dscal、sscal - キャッシュで 10% から 20%
- FFT
- 基数 7 と基数 11 の変換で 2 倍から 4 倍向上
- SSE3 対応のインテル Pentium 4 プロセッサおよびインテル Xeon プロセッサにおけるパフォーマンスの向上
- BLAS
- 4 分割できないサイズにおけるインテル EM64T 向け DGEMM のパフォーマンスの向上
- 小さなサイズでは約 30% から 40%、1000 から 2000 までのサイズでは 4% の向上
- 約 95.5% の効率化
- BLAS レベル 2 関数のパフォーマンスの向上
- CGERU、CGERC - L2 キャッシュで 2 倍、メモリーで 12%
- CHER - L2 キャッシュで大文字の場合は 2 倍、小文字の場合は 40%。メモリーで 5% から 8%
- CHER2 - L2 キャッシュで 8% から 25%、メモリーで 4%
- CHPR - L2 キャッシュで小文字の場合は最大 2.5 倍、大文字の場合は 10%。メモリーで 3% から 15%
- CHPR2 - L2 キャッシュで小文字の場合は最大 2 倍、大文字の場合は 7%。メモリーで 5% から 70%
- CHBMV - L2 キャッシュで最大 2 倍、メモリーで 20% から 30%
- CHPMV - L2 キャッシュで小文字の場合は最大 2 倍、大文字の場合は 75%。メモリーで 50% から 80%
- BLAS レベル 1 関数のパフォーマンスの向上
- DDOT - 16 バイト境界にアライメントされているデータの場合は 6% から 15%、アライメントされていないデータの場合は 10%、キャッシュ内のデータの場合は 200%
- DAXPY - キャッシュ内のデータの場合は 2 から 3 倍、アライメントされていないデータの場合は 15%
- CDOTU - キャッシュ内のデータの場合は 2 から 3 倍、メモリー内のデータの場合は 1.5 倍
- DFT
- L2 キャッシュの 2 次元で、複素数型のデータの場合は 25% から 100%、単精度実数型のデータの場合は最大 30%、倍精度実数型のデータの場合は最大 16% 向上
- L2 キャッシュの 3 次元で、複素数型のデータの場合は 5% から 50% 向上
- LAPACK の最適化
- *BDSQR のパフォーマンスが、更新される特異ベクトル数に依存して、10% から 500% 向上 (更新されるベクトルが少ないほど、より最適化されます)
- DSTEQR のパフォーマンスが 30% から 500% 向上
その他の機能の向上
- 反復法スパースソルバ
- リバース・コミュニケーションに基づく共役勾配法ソルバ
- コード例
- スパースソルバのサポート強化
- 最も一般的に使用されている 5 つのスパース BLAS 形式に対応したスパース BLAS レベル 2 およびレベル 3 のルーチンを装備
- mkl_dcsrgemv 関数および dcsrmmgen 関数のスレッド化
- 実数の 3 次元 FFT (アウトオブプレースのみ)
- 区間演算
- 区間線形連立方程式のソルバ
- 逆区間行列
- 区間行列の正則性/特異性をテストするための関数
- ベクトル・スタティスティカル・ライブラリの新機能
- 畳み込み/相関演算 (1 次元および多次元の畳み込み/相関演算用一次関数およびフーリエ・ベースの関数)
- 新しい乱数ジェネレータ
- ガンマ分布生成器およびベータ分布生成器
- 2 つの Mersenne Twister BRNG (MT19937 および MT2203)
- 抽象 BRNG (詳細は VSL Notes を参照)
- ランダム・ストリームの保存とバイナリファイルからの回復
- エラー・ステータス報告の改善
- インテル MKL の DFT 用 FFTW インターフェイス
- LAPACK サブルーチン用 FORTRAN 90/95 インターフェイス
- 新しいメモリー・マネージャ
- スレッド化ライブラリ (libguide.lib) をデフォルト・ライブラリから除外
- パフォーマンスの向上とバグ修正
ハードウェア - 最小要件
- 300MHz 版以上のインテル® MMX® テクノロジー Pentium® プロセッサ
- 360MB のディスク空き容量 (ホストシステム)
ハードウェア - 推奨要件
- インテル Itanium 2 プロセッサ
- 64 ビット インテル Xeon プロセッサ
- ストリーミング SIMD 拡張命令 3 (SSE3) 対応インテル Pentium 4 プロセッサ
ハードウェア - 対応プロセッサ
- インテル MMX テクノロジー Pentium プロセッサ (300MHz 以上)
- インテル Pentium II プロセッサ用カーネル
- インテル Pentium III プロセッサ用カーネル
- インテル Pentium 4 プロセッサ
- ストリーミング SIMD 拡張命令 3 (SSE3) 対応インテル Pentium 4 プロセッサ
- インテル Xeon プロセッサ
- 64 ビット インテル Xeon プロセッサ
- インテル Itanium 2 プロセッサ
- インテル Pentium M プロセッサ
- AMD Athlon* および Opteron* プロセッサ
ソフトウェア - 最小要件
- Windows Server* 2003
- 互換コンパイラ
- Adobe Acrobat* Reader 6.0 またはそれ以降
ソフトウェア - 推奨要件
- IA-32 プロセッサ向け Windows XP
- 64 ビット インテル Xeon プロセッサ向け Windows Server 2003, Enterprise X64 Edition SP1, v.1433
- Itanium 2 プロセッサ向け Windows Server 2003, 64-bit Edition SP1
- インテル® Fortran コンパイラ 9.0 Windows 版
- インテル® C++ コンパイラ 9.0 Windows 版
ソフトウェア - サポートする Windows オペレーティング・システム
- インテル Xeon プロセッサおよびインテル Pentium 4 プロセッサ向け Windows 2003 Server
- インテル Xeon プロセッサおよびインテル Pentium 4 プロセッサ向け Windows XP
- インテル® エクステンデッド・メモリー 64 テクノロジー (インテル® EM64T) 搭載システム向け Windows Server 2003 Enterprise X64 Edition SP1, v.1433
- Itanium プロセッサ向け Windows 2003 Server, 64-bit Edition SP1
ソフトウェア - サポートする Windows コンパイラ (インテル MKL Windows 版は、次のコンパイラで動作確認されています)
- インテル® Visual Fortran コンパイラ 8.0 Windows 版 (インテル EM64T 搭載システムを除く)
- インテル Visual Fortran コンパイラ 8.1 Windows 版
- インテル Visual Fortran コンパイラ 9.0 Windows 版
- インテル C++ コンパイラ 8.0 Windows 版 (インテル EM64T 搭載システムを除く)
- インテル C++ コンパイラ 8.1 Windows 版
- インテル C++ コンパイラ 9.0 Windows 版
- Compaq* Visual Fortran 6.6 (インテル Xeon プロセッサおよびインテル Pentium 4 プロセッサ上でのみ)
- Microsoft* Visual C++* 6.0 (インテル Xeon プロセッサおよびインテル Pentium 4 プロセッサ上でのみ)
- Microsoft Visual C++ .NET 2003 (インテル Xeon プロセッサおよびインテル Pentium 4 プロセッサ上でのみ)
注意: インテル MKL には、Fortran と C の インターフェイスおよびそのデータ構造が含まれています。インテル MKL を異なるコンパイラとリンクする方法については、テクニカル・ユーザー・ノート (doc ディレクトリにある mkluse.htm ファイル) を参照してください。
インテル MKL のインストール時に、インストールに関するガイダンスが提供されます。ステップごとにインストール手順を説明したファイル (ファイル名: install.txt) へのリンクが示されます。このファイルは doc ディレクトリ以下にあります。
インテル MKL 8.0 スパースソルバの制限事項
- デフォルトのスレッド数 (OMP_NUM_THREADS が設定されていない場合) は、システムのプロセッサ数になります。これは、インテル MKL のデフォルトの OpenMP モード (デフォルトのスレッド数は 1) とは異なります。
- 本リリースでは、静的にリンク可能なスパース・ソルバ・ファイルのみ提供しています。
- 拡張精度の蓄積は、long 倍精度データ型 (10 バイトの実数精度) として実装されています。
- Compaq Visual Fortran (CVF) 6.5 の制限事項: 現在、インテル MKL で利用可能なスパースソルバのコード例は、INTEGER*8 データ型を使用しています。CVF 6.5 はこのデータ型をサポートしていません。コード例をコンパイルするには、Compaq Visual Fortran 6.6 にアップデートするか、別のコンパイラを使用するか、または INTEGER*4 データ型を使用するようにコードを変更してください。
インテル MKL 8.0 FFT 関数の制限事項
- DftiCopyDescriptor 関数は実装されていません。
- DFTI_TRANSPOSE モードは、デフォルト・ケースでのみ実装されます。
- インプレース 3 次元 real DFT は、現在実装されていません。
- DFTI_REAL_STORAGE モードにはデフォルト値のみ指定可能で、DftiSetValue 関数 (例えば、DFTI_REAL_STORAGE = DFTI_REAL_REAL) によって変更することはできません。
インテル MKL 8.0 区間演算関数の制限事項
- 区間ライブラリには、インテル Fortran コンパイラ 8.1 の libifcore ライブラリが必要です。
- 区間演算関数のデフォルト・バージョンはありません。つまり、すべてのバージョンに SSE 命令が含まれます。
VSL 関数はすべて、現在の演算のエラー・ステータスを返します。例えば、VSL の API のデフォルトは、以前のバージョンの MKL ではサブルーチン形式でしたが、現在では関数形式です。つまり、Fortran のユーザーは、VSL ルーチンを関数として呼び出す必要があります。
関数の呼び出し例:
errstatus = vslrnggaussian(method, stream, n, r, a, sigma)
サブルーチンの呼び出し例:
call vslrnggaussian(method, stream, n, r, a, sigma)
ただし、インテル MKL では、下位互換用にサブルーチン形式も用意しています。サブルーチン形式のインターフェイスを使用するには、手動で include\mkl.fi ファイル内の include 'mkl_vsl.fi' という行を include 'mkl_vsl_subroutine.fi' に変更し、 mkl_vsl.fi ファイルの代わりに mkl_vsl_subroutine.fi ファイルを組み込みます。VSL の API 変更は、C/C++ ユーザーには影響しません。
ハイパー・スレッディング・テクノロジー (HT テクノロジー) は、各スレッドが異なる演算を実行している場合、またはプロセッサ上に十分に活用されていないリソースがある場合に特に有効です。インテル MKL は、このどちらにもあてはまりません。ライブラリのスレッド化された部分が効率的に (利用可能なリソースの大半を使用して) 実行され、各スレッドで同一の演算を行っているためです。HT テクノロジーを有効にせずにインテル MKL を使用すると、より高いパフォーマンスを得られることがあります。
メモリー割り当て: より高いパフォーマンスを得るため、インテル MKL によって割り当てられたメモリーは解放されません。これは仕様で、インテル MKL ルーチンがメモリーバッファを操作するのは 1 回 (割り当て) だけです。ツールによっては、これをメモリーリークとして報告することがあるため、注意が必要です。必要に応じて、メモリーを解放することができます。プログラムでインテル MKL の MKL_FreeBuffers() 関数を使用するか、各呼び出しの後に MKL_DISABLE_FAST_MM 環境変数を設定します (詳細は、doc ディレクトリにあるテクニカル・ユーザー・ノートを参照してください)。しかし、これらの方法を使用してメモリーを解放しても、メモリーリークが報告されなくなるとは限りません。実際、ライブラリを複数回呼び出す場合、各呼び出しごとに新しいメモリーの割り当てが必要になり、報告される数は増えることもあります。上記の方法で解放されなかったメモリーは、プログラムの終了時にシステムによって解放されます。各スレッドに割り当てられるバッファの最大数は 32 です。この制限を回避するには、上記のようにメモリー管理を無効にします。
セルフヘルプおよびユーザー・フォーラム
チュートリアル、基本操作のヒント、製品に関する既知の問題点、製品のエラッタ、互換性に関する情報、FAQ など、多くのセルフヘルプ情報については、インテル® ソフトウェア開発製品テクニカル・サポート Web サイト (http://www.intel.com/software/products/geo/jpn/support/index.htm) を参照してください。問題に対する解決策をすばやく得たり、製品を効果的に使用するための情報を入手することができます。
インテル MKL ユーザー・フォーラム (英語) (http://softwareforums.intel.com/ids/board?board.id=MKL) は、ユーザー同士の意見交換や専門家への質問などの場としてご利用いただけます。
問題の送信方法
インテルでは、お客様からのフィードバックを非常に重視しております。本製品で提供されるツールについてテクニカル・サポートを利用したり、製品アップデートを入手するには、インテル® レジストレーション・センター (https://registrationcenter.intel.com/) で登録する必要があります。
インテル MKL に関する質問または問題は、サポート (https://registrationcenter.intel.com/support/) までお問い合わせください。
インテル® プレミア・サポートから問題を送信する場合は、次の手順に従ってください。
- ブラウザで Java* および Java スクリプトが有効になっていることを確認します。
- https://premier.intel.com にアクセスします。
- ログイン名とパスワードを入力します。どちらも大文字と小文字が区別されます。半角英数字と一部の記号のみ使用できます。
- [Submit Issues] ボタンをクリックします。
- 「Confidentiality Statement (機密保護について)」を読み、[I Accept] ボタンを押します。
- [Product] ドロップダウン・リストの隣にある [Go] ボタンをクリックします。
- 左側のナビゲーション・バーの [Submit Issue] リンクをクリックします。
- [Product Type] ドロップダウン・リストから [Development Environment (tools,SDV,EAP)] を選択します。
- ソフトウェアまたはライセンスに関連する問題の場合は、[Product Name] ドロップダウン・リストから [Intel® MKL for Windows*] を選択します。
- 質問を入力し、ウィンドウの残りのフィールドも記入します。
問題の報告や製品に対するご意見を送信する際は、次のガイドラインに従ってください。
- 問題、その他ご意見を入力してください。
問題を報告する場合は、その問題を再現できるように、できるだけ具体的に (コンパイラやリンク・コマンドライン・オプションなども含めて) 説明してください。可能な場合は、テストファイル (小さなもの) を含めるようにしてください。
- システム構成情報を入力します。
オペレーティング・システム、インストールされているアプリケーションの名前とバージョンなど、問題の特定に役立つと思われるすべての情報が含まれていることを確認してください。
インテル・ソフトウェア開発製品の詳しい情報については、http://www.intel.com/cd/software/products/ijkk/jpn/index.htm を参照してください。関連製品には次のものが含まれます。
- インテル® ソフトウェア・カレッジでは、インテル® アーキテクチャおよびソフトウェア最適化技法を習得するための、インタラクティブなチュートリアル、ドキュメント、コードサンプルを提供しています。
- インテル® VTune(TM) パフォーマンス・アナライザは、アプリケーションの CPU 利用状況を評価し、パフォーマンスを改善するために修正を行うべきかどうかを判断するのに役立ちます。
- インテル C++ コンパイラおよびインテル Fortran コンパイラは、最新の IA-32 プロセッサおよびインテル Itanium プロセッサをサポートしており、ソフトウェアの実行を高速化する上で重要な役割を果たします。
- インテル® パフォーマンス・ライブラリには、各種のインテル® プロセッサ向けに最適化されたルーチン群が収められています。インテル MKL は、数学、科学、工学などのソフトウェア開発に役立つ、最新のインテル Pentium プロセッサおよびインテル Itanium プロセッサ向けに最適化された線形代数、高速フーリエ変換、ベクトル演算関数を提供します。インテル® インテグレーテッド・パフォーマンス・プリミティブは、複数のインテル・アーキテクチャおよびオペレーティング・システム用のハイパフォーマンスなソフトウェアをビルドするクロス・プラットフォーム・ツールで構成されています。
本資料に掲載されている情報は、インテル製品の概要説明を目的としたものです。本資料は、明示、黙示、禁反言またはその他の如何を問わず、いかなる知的財産権のライセンスを許諾するためのものではありません。製品に付属の売買契約書『Intel's Terms and conditions of Sales』に規定されている場合を除き、インテルはいかなる責を負うものではなく、またインテル製品の販売や使用に関する明示または黙示の保証(特定目的への適合性、商品性に関する保証、第三者の特許権、著作権、その他、知的所有権を侵害していないことへの保証を含む)に関しても一切責任を負わないものとします。インテル製品は、医療、救命、延命措置などの目的に使用することを前提としたものではありません。
本資料およびこれに記載されているソフトウェアはライセンス契約に基づいて提供されるものであり、その使用および複製はライセンス契約で定められた条件下でのみ許可されます。本資料で提供される情報は、情報供与のみを目的としたものであり、予告なしに変更されることがあります。また、本資料で提供される情報は、インテルによる確約と解釈されるべきものではありません。インテルは本資料の内容およびこれに関連して提供されるソフトウェアにエラー、誤り、不正確な点が含まれていたとしても一切の責任を負いません。
「未使用 (reserved)」、「未定義 (undefined)」と記述されている機能や命令に関しては、今後新たに定義づけが行われる可能性があるため、設計には利用しないようご注意ください。これらの機能や命令を設計に利用した場合、定義の追加によって機能性や互換性などの面でいかなる問題が生じてもインテルは一切その責を負いません。
本資料で説明されているソフトウェアは、設計上の不具合が含まれている可能性があり、公表されている仕様とは異なる動作をする場合があります。現在確認済みの不具合については、インテルまでお問い合わせください。
Intel、インテル、Itanium、MMX、Pentium、Pentium M、Xeon、VTune は、米国およびその他の国における Intel Corporation またはその子会社の商標または登録商標です。
* その他の社名、製品名などは、一般に各社の商標または登録商標です。
(c) 2005, Intel Corporation.