インテル® MKL 11.3 ユーザーズガイド

インテル® MKL の使用を開始する前に知っておくべき項目

ターゲット・プラットフォーム

ターゲットマシンのアーキテクチャーを特定します。

  • IA-32 または IA-32 互換
  • インテル® 64 またはインテル® 64 互換

理由: インテル® MKL ライブラリーは、使用するアーキテクチャー (「サポートしているアーキテクチャー」を参照) に対応するディレクトリーにあるため、リンク行で適切なパスを指定する必要があります (「リンクの例」を参照)。 インテル® MKL を利用できるように開発環境を設定するには、使用するアーキテクチャーに対応するスクリプトを使って環境変数を設定します (詳細は、「環境変数の設定」を参照)。

算術問題

必要なインテル® MKL 関数ドメインをすべて特定します。

  • BLAS
  • スパース BLAS
  • LAPACK
  • PBLAS
  • ScaLAPACK
  • スパース・ソルバー・ルーチン
  • クラスター用並列直接法スパースソルバー
  • ベクトル・マス・ライブラリー関数 (VML)
  • ベクトル統計ライブラリー関数
  • フーリエ変換関数 (FFT)
  • クラスター FFT
  • 三角変換ルーチン
  • ポアソン、ラプラス、およびヘルムホルツ・ソルバー・ルーチン
  • 最適化 (Trust-Region) ソルバールーチン
  • データ・フィッティング関数
  • 拡張固有値ソルバー関数

理由: 使用する関数ドメインを特定することで、『インテル® MKL リファレンス・マニュアル』でルーチンを検索する項目が少なくなります。 さらに、インテル® MKL クラスターを使用している場合、リンク行は関数ドメイン固有になります (「インテル® MKL クラスター・ソフトウェアの使用」を参照)。 コーディングのヒントは、関数ドメインにより異なります (「パフォーマンスを向上させるためのヒントと手法」を参照)。

プログラミング言語

インテル® MKL は Fortran と C/C++ プログラミングの両方をサポートします。使用する関数ドメインでサポートされる言語インターフェイスを特定します (「付録 A: インテル® MKL 言語インターフェイスのサポート」を参照)。

理由: インテル® MKL には、プログラム開発を容易にするため各関数ドメイン用に言語固有のインクルード・ファイルが用意されています (「言語インターフェイスのサポート、関数ドメイン別」を参照)。

言語固有のインターフェイス・ライブラリーとモジュールの一覧、および使用例は、「言語固有インターフェイスとインテル® MKL の使用」を参照してください。

整数データの範囲

インテル® 64 アーキテクチャー・ベースのシステムの場合、アプリケーションで大規模なデータ配列 (231-1 以上の要素を含む配列) の計算を実行するかどうかを決定します。

理由: 大規模なデータ配列を処理するには、ILP64 インターフェイス (整数が 64 ビット) を選択する必要があります。その他の場合は、デフォルトの LP64 インターフェイス (整数が 32 ビット) を使用します (「ILP64 インターフェイスと LP64 インターフェイスの使用」を参照)。

スレッド化モデル

アプリケーションをスレッド化するかどうか、スレッド化する場合はその方法を決定します。

  • インテル® コンパイラーを使用してスレッド化する
  • サードパーティー製のコンパイラーを使用してスレッド化する
  • スレッド化しない

理由: アプリケーションのスレッド化に使用するコンパイラーにより、アプリケーションとリンクするスレッド・ライブラリーが決まります。サードパーティー製のコンパイラーを使用してアプリケーションをスレッド化する場合、インテル® MKL をシーケンシャル・モードで使用する必要があります (詳細は、「スレッド・ライブラリーのリンク」を参照)。

スレッド数

アプリケーションが OpenMP* スレッド・ランタイム・ライブラリーを使用する場合は、インテル® MKL で使用するスレッド数を決定します。

理由:OpenMP ランタイム・ライブラリーは、インテル® MKL のスレッド数を自動的に設定します。 異なる数が必要な場合、プログラマーが数を設定する必要があります。詳細は、「スレッド化を使用してパフォーマンスを向上する」を参照してください。

リンクモデル

アプリケーションとインテル® MKL ライブラリーをリンクする適切なリンクモデルを決定します。

  • スタティック
  • ダイナミック

理由: スタティック・リンクとダイナミック・リンクでリンク・ライブラリーは異なります。 スタティックおよびダイナミック・モデルのリンク・ライブラリーのリスト、リンクの例、その他の関連情報 (カスタム・ダイナミック・ライブラリーを作成してディスク容量を節約する方法など) は、「アプリケーションとインテル® MKL のリンク」を参照してください。

使用する MPI

インテル® MKL クラスターで使用する MPI を決定します。インテル® MPI の最新バージョンを使用することを強く推奨します。

理由: アプリケーションと ScaLAPACK やクラスター FFT をリンクする際に、使用する MPI に対応するライブラリーをリンク行で指定する必要があるためです (「インテル® MKL クラスター・ソフトウェアの使用」を参照)。

最適化に関する注意事項

インテル® コンパイラーは、互換マイクロプロセッサー向けには、インテル製マイクロプロセッサー向けと同等レベルの最適化が行われない可能性があります。これには、インテル® ストリーミング SIMD 拡張命令 2 (インテル® SSE2)、インテル® ストリーミング SIMD 拡張命令 3 (インテル® SSE3)、ストリーミング SIMD 拡張命令 3 補足命令 (SSSE3) 命令セットに関連する最適化およびその他の最適化が含まれます。インテルでは、インテル製ではないマイクロプロセッサーに対して、最適化の提供、機能、効果を保証していません。本製品のマイクロプロセッサー固有の最適化は、インテル製マイクロプロセッサーでの使用を目的としています。インテル® マイクロアーキテクチャーに非固有の特定の最適化は、インテル製マイクロプロセッサー向けに予約されています。この注意事項の適用対象である特定の命令セットの詳細は、該当する製品のユーザー・リファレンス・ガイドを参照してください。

改訂 #20110804