プロセスピニングを使用する分散メモリー Co-Array プログラム

インテル® Fortran コンパイラー

この記事は、インテル® ソフトウェア・ネットワークに掲載されている「Distributed memory coarray programs with process pinning」(http://software.intel.com/en-us/articles/distributed-memory-coarray-programs-with-process-pinning/) の日本語参考訳です。



はじめに : この記事は、インテル® Fortran コンパイラー XE 12.0 を使用して、分散メモリー Co-Array プログラムをビルドし実行する方法を説明します。

バージョン : インテル® Fortran コンパイラー XE 12.0

アプリケーション・ノート : 分散メモリー Co-Array プログラムをビルドするには、コンパイラー・オプション -coarrays=distributed (Linux* OS) または /Qcoarrays:distributed (Windows* OS) を使用します。このビルドには、インテル® クラスター・ツールキットのライセンスが必要です。共有メモリー Co-Array プログラムをビルドするには、コンパイラー・オプション -coarrays=shared (Linux* OS) または /Qcoarrays:shared (Windows* OS) を使用します。この共有メモリー Co-Array プログラムのビルドには、インテル® クラスター・ツールキットのライセンスは不要です。

ソースコード : インテル® Composer XE の ‘coarray_samples’ ディレクトリーにある Co-Array プログラムを使用できます。

必要条件 : ビルドには、インテル® クラスター・ツールキットのライセンスが必要です。また、クラスターノードに、インテル® MPI ライブラリーがインストールされていなければなりません。

設定 : プロセスピニングを利用して分散メモリー Co-Array プログラムを実行する際の重要なポイントは、コンパイラー・オプション -coarray-config-file=filename (Linux* OS) または /Qcoarray-config-file:filename (Windows* OS) を使用することです。これで、Co-Array 環境でインテル® MPI ライブラリーの機能を最大限に活用することができます。これは、’mpiexec -config filename’ で mpiexec が ‘filename’ から設定を取得するのと同様です。

次に、この例で使用する設定ファイルの内容を示します。

-host host1 -env I_MPI_PIN_PROCESSOR_LIST 0,2,4 -n 3 <実行ファイルへのパス>coarry_dist_host.x : -host host2 -env I_MPI_PIN_PROCESSOR_LIST 1,3,5 -n 3 <実行ファイルへのパス>coarry_dist_host.x

上記は、6 つの Co-Array イメージ ‘coarry_dist_host.x’ を、ノード host1 のプロセッサー 0、2、4 とノード host2 のプロセッサー 1、3、5 で実行するように指示しています。I_MPI_PIN_PROCESSOR_LIST 環境変数は、指定したノードでプロセスピニングを行うのに使用されます。

ソースコードの変更 :正当性の検証」を参照してください。

アプリケーションのビルド : 分散メモリー Co-Array プログラムをビルドし、Co-Array イメージを 1 つ作成して、Co-Array 設定ファイルを指定します。ここでは、Linux* を使用した例を紹介します。

ifort -coarray=distributed -coarray-num-images=1 -coarray-config-file=coarray_config.txt coarry_dist_host.f90 -o coarry_dist_host.x

アプリケーションの実行 : 実行ファイルの名前を指定するだけです。
> <実行ファイルへのパス>/coarry_dist_host.x
Hello from image 1 out of 6
total images, and running on host: host1

Hello from image 2 out of 6
total images, and running on host: host1

Hello from image 3 out of 6
total images, and running on host: host1

Hello from image 5 out of 6
total images, and running on host: host2

Hello from image 4 out of 6
total images, and running on host: host2

Hello from image 6 out of 6
total images, and running on host: host2
>

正当性の検証 : Co-Array プログラムに ‘call hostnm(hostname)’ を埋め込み、’hostname’ を出力してイメージが正しいノード/プロセッサーで実行されているかを検証します。

メリット : この方法により、特定のノード/ノードのプロセッサーで Co-Array イメージのピニングが可能になります。クラスターノード全体でより良いロードバランスが得られたり、ノードの一部を簡単に分割できます。

既知の問題と制限事項 :

  • スタンドアロン形式で実行ファイルを実行しようとすると、MPI 環境で問題が発生することが報告されています。この問題は現在調査中ですが、回避策として mpiexec を使用して実行ファイルを起動してみてください。
  • 分散メモリー Co-Array はインテル® MPI でのみ動作します。その他の MPI 実装はサポートされていません。

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

タイトルとURLをコピーしました