ハイブリッド・アプリケーション: インテル® MPI ライブラリーと OpenMP*

同カテゴリーの次の記事

高度な OpenMP* プログラミング

この記事は、インテル® ソフトウェア・ネットワークに掲載されている「Hybrid applications: Intel MPI Library and OpenMP*」(http://software.intel.com/en-us/articles/hybrid-applications-intelmpi-openmp/) の日本語参考訳です。


MPI と OpenMP* の両方を使用するアプリケーションがありますが、インテル® MPI ライブラリーでは、このようなハイブリッド機能をサポートしていますか?

はい、インテル® MPI は MPI/OpenMP* が混在するアプリケーションをサポートしています。ハイブリッド・コードが正しく実行されるように、次の操作を行ってください。

  1. -mt_mpi コンパイラー・ドライバー・オプションを指定し、インテル® MPI ライブラリーのスレッドセーフなバージョンを使用します。
  2. I_MPI_PIN_DOMAIN 環境変数を任意のプロセスピニング・スキームに設定します。推奨される設定は omp です。
    $ export I_MPI_PIN_DOMAIN=omp

    この設定は、プロセスピニングのドメインサイズが OMP_NUM_THREADS の値と同じになります。そのため、各 MPI プロセスは、対応するドメイン内で実行する子スレッドを $OMP_NUM_THREADS 個作成できます。OMP_NUM_THREADS が設定されていない場合、各ノードは別々のドメインとして扱われます (その場合、MPI プロセスごとのスレッド数は最大でコア数までになります)。

    注: OpenMP* スレッドをドメイン内でプロセッサー・コアに割り当てるには、KMP_AFFINITY 環境変数を設定して、対応する OpenMP* 機能を使用します。

  3. 詳細は、『Intel® MPI Library for Linux* Reference Manual』(http://software.intel.com/en-us/articles/intel-mpi-library-documentation/) の「Interoperability with OpenMP*」を参照してください。

コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください。

関連記事