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

同カテゴリーの次の記事

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

この記事は、インテル® ソフトウェア・ネットワークに掲載されている「Hybrid applications: Intel MPI Library and 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』 (英語) の「Interoperability with OpenMP*」を参照してください。

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

関連記事

  • MPI と OpenMP* の併用によりハードウェアを活用するMPI と OpenMP* の併用によりハードウェアを活用する この記事は、インテル® ソフトウェア・ネットワークに掲載されている「Mixing MPI and OpenMP, hugging hardware and dealing with it」の日本語参考訳です。 今朝、私は珍しく時間がとれたため、Supercomputing […]
  • HPL 向けアプリケーション・ノートHPL 向けアプリケーション・ノート この記事は、インテル® ソフトウェア・ネットワークに掲載されている「HPL application note」の日本語参考訳です。 ステップ 1 - 概要 このガイドは、現在 HPL を使用しているユーザーが、より優れたベンチマーク結果を得られるように、インテル® マス・カーネル・ライブラリー (インテル® MKL) の […]
  • 効率良い並列化効率良い並列化 この記事は、インテル® ソフトウェア・サイトに掲載されている「Efficient Parallelization」の日本語参考訳です。 はじめに ここでは、並列化について説明します。さまざまな並列化手法および最適な並列パフォーマンスを達成するためのヒントや手法へのリンクを提供します。 目標 ここでは、インテル® […]
  • インテル® Fortran Studio XE によるマンデルブロー描画プログラムの高速化インテル® Fortran Studio XE によるマンデルブロー描画プログラムの高速化 1. はじめに インテル® Fortran Studio XE 2011 (Windows* 版および Linux* 版) は、ソフトウェア開発用言語として Fortran を採用している開発者を対象とするソフトウェア開発スイートです。インテル® (Visual) Fortran Composer XE 2011 […]
  • インテル® コンパイラー V15 におけるレポート機能の変更点インテル® コンパイラー V15 におけるレポート機能の変更点 インテル® コンパイラーの主要機能の一つに、コンパイル時にソースコードを解析して、ベクトル化、並列化、OpenMP […]