共配列(Coarray)チュートリアル: Hello Parallel

ナビゲーション:前へ   上へ   次へ

2 Hello Parallel

2.1 例題プログラム

まず最初に、共配列を利用するプログラムを作成し、コンパイル、実行するまでの手順を以下の「Hello Parallel」プログラムを用いて説明します。

[ hello_parallel.f90 ] - Hello Parallel プログラム

 1: Program hello_parallel
 2:  Implicit None
 3:  Integer my_image, n_images
 4:
 5:  my_image = this_image()
 6:  n_images = num_images()
 7:  Print '("I am image ",I2,"/", I2)', my_image, n_images
End Program

一つのプログラムが複数の像で実行されることは前述のとおりですが、各像はそれぞれ一意の「像番号」を持っています。 (像番号は1から像の総数までの連続した整数です。) 本プログラムはこの像番号と、像の総数を画面に出力するというシンプルなものです。

このプログラムでは、まず像番号を組込み関数THIS_IMAGEにより取得(5行目)します。 引き続き像の総数も別の組込み関数NUM_IMAGESにより取得(6行目)します。 そして最後にそれらを画面に出力(7行目)します。

2.2 共配列プログラムのコンパイル

共配列プログラムのコンパイル時には、共配列を利用する旨をコンパイラに伝えるためのオプションを指定します。以下に代表的なコンパイラのいくつかについて、そのオプションを示します。
(オプションの詳細につきましては、各コンパイラのマニュアル等をご参照下さい)

コンパイラ   共配列利用オプション   像数指定オプション 
nagfor -coarray -num_images=N 
ifort -coarray -coarray-num-images=N 
gfortran -fcoarray=lib※1 N/A※2
※1 リンク時に共配列ライブラリの指定が別途必要です。代表的な共配列ライブラリにOpenCoarrayがあります。
※2 利用する共配列ライブラリに依存します。例えばOpenCoarrayを利用する場合は、MPIプロセスの数を指定する事でこれを行います。

一例として、共配列プログラム「hello_parallel.f90」を nAG Fortranコンパイラ(nagfor) でコンパイルし、a.out という実行形式プログラムを作成する例を示します。

    nagfor -coarray -o a.out hello_parallel.f90

2.3 プログラムの実行

共配列プログラムの実行は、多くのコンパイラ環境で、通常のプログラム実行と同じように行えます。 例えば実行形式プログラムの名前が a.out である場合には

    ./a.out
等と指定します。

補足: gfortranの場合にOpenCoarrayを利用する場合は、(OpenCoarrayがMPIを用いて共配列の機能を実装しているため)通常のmpiプログラムの実行と同じように、例えば以下のように行います。

    mpirun -np 4 ./a.out

前述のとおり、共配列プログラムの像数はコンパイル時のオプションで指定可能ですが、 多くのコンパイラ環境では、実行時の環境変数によっても設定することができます。

以下に代表的なコンパイラいくつかについて、環境変数と、bashにおける指定例を示します。
(詳細につきましては、各コンパイラのマニュアル等をご参照下さい)

コンパイラ   環境変数名   像数を4に指定する例 
nagfor nAGFORTRAN_NUM_IMAGES export nAGFORTRAN_NUM_IMAGES=4
ifort FOR_COARRAY_NUM_IMAGES export FOR_COARRAY_NUM_IMAGES=4
gfortran N/A N/A



ナビゲーション:前へ   上へ   次へ
関連情報
ご案内
© 日本ニューメリカルアルゴリズムズグループ株式会社 2025
Privacy Policy  /  Trademarks