概要
ディレクトリ構造
インテル 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 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/) にあります。
その他の機能の向上
ハードウェア - 最小要件
ハードウェア - 推奨要件
ハードウェア - 対応プロセッサ
ソフトウェア - 最小要件
ソフトウェア - 推奨要件
ソフトウェア - サポートする Linux オペレーティング・システム
ソフトウェア - サポートする Linux コンパイラ (インテル MKL Linux 版は、次のコンパイラで動作確認されています)
インテル MKL のインストール時に、インストールに関するガイダンスが提供されます。ステップごとにインストール手順を説明したファイル (ファイル名: install.txt) へのリンクが示されます。このファイルは doc ディレクトリ以下にあります。
インテル MKL 8.0 スパースソルバの制限事項
インテル MKL 8.0 FFT 関数の制限事項
インテル MKL 8.0 区間演算関数の制限事項
インテル Itanium プロセッサ・ファミリ上で GNU コンパイラを使用すると、ZGSEP ScaLAPACK テストおよび ZINV ScaLAPACK テスト (倍精度複素数の場合、汎用対称固有値問題と逆計算) は失敗します。
インテル MKL を使用する場合、libm を明示的にリンクする必要があります。リンク行でインテル MKL ライブラリ・ファイルへの参照の後に -lm を指定してください。
インテル EM64T 対応プロセッサ上では、GNU Fortran コンパイラ (バージョン 3.2.3) でコンパイルされるプログラムは、単精度値を返すインテル MKL の BLAS レベル 1 関数で誤った結果をもたらすことがあります。GNU Fortran コンパイラは、返されたレジスタの最初の 8 バイトが REAL*4 であること (倍精度値として表現されること) を想定するのに対し、インテル Fortran コンパイラは、返されたレジスタの最初の 4 バイトが REAL*4 であることを想定します。インテル MKL の動作は、インテル Fortran コンパイラの動作と互換性があります。
DFT 関数、VML 関数、および VSL 関数は Fortran 77 コンパイラでは使用できません。
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 です。この制限を回避するには、上記のようにメモリー管理を無効にします。
メモリー管理では、各スレッドに割り当てられるバッファの数に制限があります。現在は、この数は 32 です。この制限を回避するには、上記のようにメモリー管理を無効にします。
Red Hat Enterprise Linux 3.0 では、正しいサポート・ライブラリがリンクされていることを確認するために、環境変数 LD_ASSUME_KERNEL を設定する必要があります。例: 'export LD_ASSUME_KERNEL=2.4.1'
チュートリアル、基本操作のヒント、製品に関する既知の問題点、製品のエラッタ、互換性に関する情報、FAQ など、多くのセルフヘルプ情報については、インテル® ソフトウェア開発製品テクニカル・サポート Web サイト (http://www.intel.com/software/products/geo/jpn/support/index.htm) を参照してください。問題に対する解決策をすばやく得たり、製品を効果的に使用するための情報を入手することができます。
インテル MKL ユーザー・フォーラム (英語) (http://softwareforums.intel.com/ids/board?board.id=MKL) は、ユーザー同士の意見交換や専門家への質問などの場としてご利用いただけます。
インテルでは、お客様からのフィードバックを非常に重視しております。本製品で提供されるツールについてテクニカル・サポートを利用したり、製品アップデートを入手するには、インテル® レジストレーション・センター () で登録する必要があります。
インテル MKL に関する質問または問題は、サポート (https://registrationcenter.intel.com/support/) までお問い合わせください。
インテル® プレミア・サポートから問題を送信する場合は、次の手順に従ってください。
問題の報告や製品に対するご意見を送信する際は、次のガイドラインに従ってください。
インテル・ソフトウェア開発製品の詳しい情報については、http://www.intel.com/cd/software/products/ijkk/jpn/index.htm を参照してください。関連製品には次のものが含まれます。
本資料に掲載されている情報は、インテル製品の概要説明を目的としたものです。本資料は、明示、黙示、禁反言またはその他の如何を問わず、いかなる知的財産権のライセンスを許諾するためのものではありません。製品に付属の売買契約書『Intel's Terms and conditions of Sales』に規定されている場合を除き、インテルはいかなる責を負うものではなく、またインテル製品の販売や使用に関する明示または黙示の保証(特定目的への適合性、商品性に関する保証、第三者の特許権、著作権、その他、知的所有権を侵害していないことへの保証を含む)に関しても一切責任を負わないものとします。インテル製品は、医療、救命、延命措置などの目的に使用することを前提としたものではありません。
本資料およびこれに記載されているソフトウェアはライセンス契約に基づいて提供されるものであり、その使用および複製はライセンス契約で定められた条件下でのみ許可されます。本資料で提供される情報は、情報供与のみを目的としたものであり、予告なしに変更されることがあります。また、本資料で提供される情報は、インテルによる確約と解釈されるべきものではありません。インテルは本資料の内容およびこれに関連して提供されるソフトウェアにエラー、誤り、不正確な点が含まれていたとしても一切の責任を負いません。
「未使用 (reserved)」、「未定義 (undefined)」と記述されている機能や命令に関しては、今後新たに定義づけが行われる可能性があるため、設計には利用しないようご注意ください。これらの機能や命令を設計に利用した場合、定義の追加によって機能性や互換性などの面でいかなる問題が生じてもインテルは一切その責を負いません。
本資料で説明されているソフトウェアは、設計上の不具合が含まれている可能性があり、公表されている仕様とは異なる動作をする場合があります。現在確認済みの不具合については、インテルまでお問い合わせください。
Intel、インテル、Itanium、MMX、Pentium、Pentium M、Xeon、VTune は、米国およびその他の国における Intel Corporation またはその子会社の商標または登録商標です。
* その他の社名、製品名などは、一般に各社の商標または登録商標です。
(c) 2005, Intel Corporation.