< 目次

インテル® MKL 2017 デベロッパー・ガイド

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

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

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

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

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

算術問題

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

  • BLAS
  • スパース BLAS
  • LAPACK
  • PBLAS
  • ScaLAPACK
  • スパース・ソルバー・ルーチン
  • クラスター用並列直接法スパースソルバー
  • ベクトルマス関数 (VM)
  • ベクトル統計関数 (VS)
  • フーリエ変換関数 (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、インテル® ストリーミング SIMD 拡張命令 3、インテル® ストリーミング SIMD 拡張命令 3 補足命令などの最適化が該当します。インテルは、他社製マイクロプロセッサーに関して、いかなる最適化の利用、機能、または効果も保証いたしません。本製品のマイクロプロセッサー依存の最適化は、インテル® マイクロプロセッサーでの使用を前提としています。インテル® マイクロアーキテクチャーに限定されない最適化のなかにも、インテル® マイクロプロセッサー用のものがあります。この注意事項で言及した命令セットの詳細については、該当する製品のユーザー・リファレンス・ガイドを参照してください。

注意事項の改訂 #20110804