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

同カテゴリーの次の記事

インテル® コンパイラーによる OpenMP* 入門 (全8回)

この記事は、インテル® ソフトウェア・ネットワークに掲載されている「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 実装はサポートされていません。

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

関連記事

  • インテル® Fortran Studio XE によるマンデルブロー描画プログラムの高速化インテル® Fortran Studio XE によるマンデルブロー描画プログラムの高速化 1. はじめに インテル® Fortran Studio XE 2011 (Windows* 版および Linux* 版) は、ソフトウェア開発用言語として Fortran を採用している開発者を対象とするソフトウェア開発スイートです。インテル® (Visual) Fortran Composer XE 2011 […]
  • OpenMP* のサポート・ライブラリーOpenMP* のサポート・ライブラリー この記事は、インテル® ソフトウェア・ネットワークに掲載されている「OpenMP* Support Libraries」の日本語参考訳です。 編集部注: 本記事には旧製品(インテル® コンパイラー・バージョン 11.1 以前)向けの情報が含まれます。バージョン 12.0 […]
  • OMP_PROC_BIND の振る舞いがインテル製品以外のプロセッサーとの互換性をサポートしましたOMP_PROC_BIND の振る舞いがインテル製品以外のプロセッサーとの互換性をサポートしました この記事は、インテル® ソフトウェア・サイトに掲載されている「OMP_PROC_BIND is now supported on compatible non-Intel processors」の日本語参考訳です。 最新のインテル® C++ コンパイラーおよびインテル® Fortran コンパイラーでは、OpenMP* […]
  • ガイド付き自動並列化 (GAP)ガイド付き自動並列化 (GAP) この記事は、インテル® ソフトウェア・ネットワークに掲載されている「Guided Auto-Parallel (GAP)」の日本語参考訳です。 ガイド付き自動並列化の概要 インテル® […]
  • ガイド付き自動並列化ガイド付き自動並列化 この記事は、インテル® デベロッパー・ゾーンに掲載されている「Guided Autoparallelism」の日本語参考訳です。 インテル® Composer XE Linux* 版には、ガイド付き自動並列化 (GAP) 機能が含まれており、Fortran と C/C++ […]