Difference between revisions of "Tutorials:ALPS Fortran Introduction/ja"
(Created page with "{{Languages|Tutorials:ALPS Fortran Introduction}} ALPS Fortranのチュートリアルです。ALPS Fortranのインストール方法及び利用方法について説明して…") |
|||
Line 1: | Line 1: | ||
{{Languages|Tutorials:ALPS Fortran Introduction}} | {{Languages|Tutorials:ALPS Fortran Introduction}} | ||
− | ALPS | + | ALPS Fortranのチュートリアルです。ALPSを使ったFortranアプリケーションのコンパイル方法および実行方法について説明しています。なお、このチュートリアルはFortranプログラミングの知識を有する読者を想定しています。 |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==ALPS Fortranインストール == | ==ALPS Fortranインストール == | ||
− | ALPS | + | ALPS Fortranのソースコードは、ALPS 本体に含まれています。ALPS Fortranの機能を使うには、ALPSのCMake時に -DALPS_BUILD_FORTRAN=ON を指定します。(必要に応じて、-DCMAKE_Fortran_COMPILER オプションでFortranコンパイラも指定します。) |
− | |||
− | |||
− | + | cmake -DALPS_BUILD_FORTRAN=ON /somewhere/alps/source/code | |
− | + | make | |
+ | make install | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
ALPS Fortranが正しくインストールされると以下のファイルが生成されます。<br/> | ALPS Fortranが正しくインストールされると以下のファイルが生成されます。<br/> | ||
− | * ${ | + | * ${ALPS_HOME}/lib/libalps_fortran.a<br/> |
− | * ${ | + | * ${ALPS_HOME}/include/alps/fortran/alps_fortran.h<br/> |
− | * ${ | + | * ${ALPS_HOME}/include/alps/fortran/fortran_wrapper.h<br/> |
− | * ${ | + | * ${ALPS_HOME}/include/alps/fortran/fwrapper_impl.h<br/> |
− | |||
− | |||
+ | ※${ALPS_HOME}はALPSのインストールフォルダを指します。 | ||
==サンプルコード == | ==サンプルコード == | ||
− | + | ALPSのソースコードには、サンプルとして、以下のコードが含まれています。 | |
− | + | [[https://alps.comp-phys.org/svn/alps1/trunk/alps/tutorials/alpsize-10-fortran-scheduler helloアプリケーション]] | |
− | helloアプリケーション | ||
*計算は行わず、パラメータファイルの内容を標準出力に出力するのみのアプリケーションです。 | *計算は行わず、パラメータファイルの内容を標準出力に出力するのみのアプリケーションです。 | ||
− | isingアプリケーション | + | [[https://alps.comp-phys.org/svn/alps1/trunk/alps/tutorials/alpsize-11-fortran-ising isingアプリケーション]] |
− | * | + | *Isingモデルの計算を行う簡単なアプリケーションです。 |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | 次節より、helloアプリケーションのビルド方法及び実行方法について説明します。isingアプリケーションについてもhelloと同様の手順でビルド・実行できます。 | ||
===helloアプリケーション === | ===helloアプリケーション === | ||
− | + | [[https://alps.comp-phys.org/svn/alps1/trunk/alps/tutorials/alpsize-10-fortran-scheduler helloアプリケーション]] | |
− | * hello_impl.f90:アプリケーションの実装 | + | は以下のファイルから構成されています。 |
− | * hello.C:アプリケーションのエントリポイント | + | * hello_impl.f90:アプリケーションの実装 |
− | * hello_params:パラメータファイル | + | * hello.C:アプリケーションのエントリポイント |
− | * CMakeLists.txt:ビルド設定ファイル | + | * hello_params:パラメータファイル |
− | + | * CMakeLists.txt:ビルド設定ファイル | |
====helloアプリケーションのコンパイル ==== | ====helloアプリケーションのコンパイル ==== | ||
Line 90: | Line 44: | ||
helloアプリケーションのコンパイル手順は以下の通りです。 | helloアプリケーションのコンパイル手順は以下の通りです。 | ||
− | + | 1. ビルド用ワークフォルダの作成 | |
helloアプリケーションのビルド結果を保存するためのワークフォルダを作成します。 | helloアプリケーションのビルド結果を保存するためのワークフォルダを作成します。 | ||
Line 96: | Line 50: | ||
$ cd ${HOME}/alps_fortran_build/hello | $ cd ${HOME}/alps_fortran_build/hello | ||
− | + | 2. cmakeの実行 | |
− | ソースコードフォルダを指定してcmakeを実行します。(${ | + | ソースコードフォルダを指定してcmakeを実行します。(${ALPS_HOME}はALPSがインストールされているフォルダです) |
− | $ cmake | + | $ cmake –DALPS_ROOT_DIR=${ALPS_HOME} ${ALPS_HOME}/tutorials/alpsize-10-fortran-scheduler |
− | |||
− | + | 3. helloアプリケーションのビルド | |
cmakeを実行するとカレントディレクトリにMakefile等、ビルドに必要なファイルが生成されますので、makeを実行します。 | cmakeを実行するとカレントディレクトリにMakefile等、ビルドに必要なファイルが生成されますので、makeを実行します。 | ||
$ make | $ make | ||
− | + | ビルドが完了するとカレントディレクトリに実行ファイルhelloが生成されます。 | |
− | |||
====helloアプリケーションのスレッド並列実行 ==== | ====helloアプリケーションのスレッド並列実行 ==== | ||
helloアプリケーションのスレッド並列実行の手順は以下の通りです。 | helloアプリケーションのスレッド並列実行の手順は以下の通りです。 | ||
− | + | 1. ワークフォルダへの移動 | |
− | |||
helloアプリケーションをビルドする際に作成したワークフォルダに移動します。 | helloアプリケーションをビルドする際に作成したワークフォルダに移動します。 | ||
$ cd ${HOME}/alpls_fortran_build/hello | $ cd ${HOME}/alpls_fortran_build/hello | ||
なお、ワークフォルダ内に実行結果ファイル(hello_param.out.*)があるとアプリケーションが実行できません。実行結果ファイルがある場合は全て削除してから次の手順に進んでください。 | なお、ワークフォルダ内に実行結果ファイル(hello_param.out.*)があるとアプリケーションが実行できません。実行結果ファイルがある場合は全て削除してから次の手順に進んでください。 | ||
− | + | 2. パラメータファイルの準備 | |
− | + | ${ALPS_HOME}/tutorials/alpsize-10-fortran-schedulerにあるパラメータファイルからXMLファイルを生成します。 | |
− | + | $ cp ${ALPS_HOME}/tutorials/alpsize-10-fortran-scheduler/hello_params . | |
− | $ cp ${ | ||
$ parameter2xml hello_params | $ parameter2xml hello_params | ||
− | |||
− | + | 3. helloアプリケーションの実行 | |
以下のコマンドでアプリケーションを実行します。 | 以下のコマンドでアプリケーションを実行します。 | ||
$ ./hello hello_params.in.xml | $ ./hello hello_params.in.xml | ||
Line 165: | Line 114: | ||
helloアプリケーションのMPI並列実行の手順は以下の通りです。 | helloアプリケーションのMPI並列実行の手順は以下の通りです。 | ||
− | + | ||
+ | 1. ワークフォルダへの移動 | ||
helloアプリケーションをビルドする際に作成したワークフォルダに移動します。 | helloアプリケーションをビルドする際に作成したワークフォルダに移動します。 | ||
$ cd ${HOME}/alpls_fortran_build/hello | $ cd ${HOME}/alpls_fortran_build/hello | ||
− | |||
なお、ワークフォルダ内に実行結果ファイル(hello_param.out.*)があるとアプリケーションが実行できません。実行結果ファイルがある場合は全て削除してから次の手順に進んでください。 | なお、ワークフォルダ内に実行結果ファイル(hello_param.out.*)があるとアプリケーションが実行できません。実行結果ファイルがある場合は全て削除してから次の手順に進んでください。 | ||
− | + | 2. パラメータファイルの準備 | |
− | + | ${ALPS_HOME}/tutorials/alpsize-10-fortran-schedulerにあるパラメータファイルからXMLファイルを生成します。 | |
− | $ cp ${ | + | $ cp ${ALPS_HOME}/tutorials/alpsize-10-fortran-scheduler/hello_params . |
$ parameter2xml hello_params | $ parameter2xml hello_params | ||
− | + | 3. helloアプリケーションの実行 | |
以下のコマンドでアプリケーションを実行します。 | 以下のコマンドでアプリケーションを実行します。 | ||
$ mpirun -np 4 -x OMP_NUM_THREADS=1 ./hello --mpi hello_params.in.xml | $ mpirun -np 4 -x OMP_NUM_THREADS=1 ./hello --mpi hello_params.in.xml | ||
並列実行の場合もスレッド並列実行時と同様に、hello_paramsの内容が標準出力に出力されます。 | 並列実行の場合もスレッド並列実行時と同様に、hello_paramsの内容が標準出力に出力されます。 |
Latest revision as of 07:48, 1 May 2013
Languages: |
English • 日本語 (ja) • 繁體中文 (zh-tw) • 简体中文 (zh) |
ALPS Fortranのチュートリアルです。ALPSを使ったFortranアプリケーションのコンパイル方法および実行方法について説明しています。なお、このチュートリアルはFortranプログラミングの知識を有する読者を想定しています。
Contents
ALPS Fortranインストール
ALPS Fortranのソースコードは、ALPS 本体に含まれています。ALPS Fortranの機能を使うには、ALPSのCMake時に -DALPS_BUILD_FORTRAN=ON を指定します。(必要に応じて、-DCMAKE_Fortran_COMPILER オプションでFortranコンパイラも指定します。)
cmake -DALPS_BUILD_FORTRAN=ON /somewhere/alps/source/code make make install
ALPS Fortranが正しくインストールされると以下のファイルが生成されます。
- ${ALPS_HOME}/lib/libalps_fortran.a
- ${ALPS_HOME}/include/alps/fortran/alps_fortran.h
- ${ALPS_HOME}/include/alps/fortran/fortran_wrapper.h
- ${ALPS_HOME}/include/alps/fortran/fwrapper_impl.h
※${ALPS_HOME}はALPSのインストールフォルダを指します。
サンプルコード
ALPSのソースコードには、サンプルとして、以下のコードが含まれています。
- 計算は行わず、パラメータファイルの内容を標準出力に出力するのみのアプリケーションです。
- Isingモデルの計算を行う簡単なアプリケーションです。
次節より、helloアプリケーションのビルド方法及び実行方法について説明します。isingアプリケーションについてもhelloと同様の手順でビルド・実行できます。
helloアプリケーション
[helloアプリケーション] は以下のファイルから構成されています。
- hello_impl.f90:アプリケーションの実装
- hello.C:アプリケーションのエントリポイント
- hello_params:パラメータファイル
- CMakeLists.txt:ビルド設定ファイル
helloアプリケーションのコンパイル
helloアプリケーションのコンパイル手順は以下の通りです。
1. ビルド用ワークフォルダの作成 helloアプリケーションのビルド結果を保存するためのワークフォルダを作成します。
$ mkdir –p ${HOME}/alps_fortran_build/hello $ cd ${HOME}/alps_fortran_build/hello
2. cmakeの実行 ソースコードフォルダを指定してcmakeを実行します。(${ALPS_HOME}はALPSがインストールされているフォルダです)
$ cmake –DALPS_ROOT_DIR=${ALPS_HOME} ${ALPS_HOME}/tutorials/alpsize-10-fortran-scheduler
3. helloアプリケーションのビルド cmakeを実行するとカレントディレクトリにMakefile等、ビルドに必要なファイルが生成されますので、makeを実行します。
$ make
ビルドが完了するとカレントディレクトリに実行ファイルhelloが生成されます。
helloアプリケーションのスレッド並列実行
helloアプリケーションのスレッド並列実行の手順は以下の通りです。
1. ワークフォルダへの移動 helloアプリケーションをビルドする際に作成したワークフォルダに移動します。
$ cd ${HOME}/alpls_fortran_build/hello
なお、ワークフォルダ内に実行結果ファイル(hello_param.out.*)があるとアプリケーションが実行できません。実行結果ファイルがある場合は全て削除してから次の手順に進んでください。
2. パラメータファイルの準備 ${ALPS_HOME}/tutorials/alpsize-10-fortran-schedulerにあるパラメータファイルからXMLファイルを生成します。
$ cp ${ALPS_HOME}/tutorials/alpsize-10-fortran-scheduler/hello_params . $ parameter2xml hello_params
3. helloアプリケーションの実行 以下のコマンドでアプリケーションを実行します。
$ ./hello hello_params.in.xml
helloアプリケーションを実行すると、hello_paramsに定義されたパラメータが標準出力に出力されます。実行結果(抜粋)を以下に示します。
##### alps_init() ##### parameter X = 3.2000000000000002 parameter Y = 0 parameter WORLD = world defined parameter Z = 1
[2011-May-13 11:45:42]: dispatching a new clone[1,1] on threadgroup[3]
##### alps_init() ##### parameter X = -3.1000000000000001 parameter Y = 6 parameter WORLD = alps defined parameter Z = 0 [2011-May-13 11:45:42]: dispatching a new clone[2,1] on threadgroup[8] ##### alps_init() ##### parameter X = 1.00000000000000002E-003 parameter Y = -100 parameter WORLD = looper defined parameter Z = 0 [2011-May-13 11:45:43]: dispatching a new clone[3,1] on threadgroup[7] [2011-May-13 11:45:43]: clone[3,1] finished on threadgroup[7] ##### alps_init() ##### parameter X = 100.00000000000000 parameter Y = 2 parameter WORLD = japan defined parameter Z = 0 [2011-May-13 11:45:43]: dispatching a new clone[4,1] on threadgroup[1] [2011-May-13 11:45:43]: clone[4,1] finished on threadgroup[1] ##### alps_init() ##### parameter X = 3.0000000000000000 parameter Y = 0 parameter WORLD = wistaria defined parameter Z = 0
helloアプリケーションのMPI並列実行
helloアプリケーションのMPI並列実行の手順は以下の通りです。
1. ワークフォルダへの移動 helloアプリケーションをビルドする際に作成したワークフォルダに移動します。
$ cd ${HOME}/alpls_fortran_build/hello
なお、ワークフォルダ内に実行結果ファイル(hello_param.out.*)があるとアプリケーションが実行できません。実行結果ファイルがある場合は全て削除してから次の手順に進んでください。
2. パラメータファイルの準備 ${ALPS_HOME}/tutorials/alpsize-10-fortran-schedulerにあるパラメータファイルからXMLファイルを生成します。
$ cp ${ALPS_HOME}/tutorials/alpsize-10-fortran-scheduler/hello_params . $ parameter2xml hello_params
3. helloアプリケーションの実行 以下のコマンドでアプリケーションを実行します。
$ mpirun -np 4 -x OMP_NUM_THREADS=1 ./hello --mpi hello_params.in.xml
並列実行の場合もスレッド並列実行時と同様に、hello_paramsの内容が標準出力に出力されます。