Difference between revisions of "Tutorials:ALPS Fortran Introduction/ja"

From ALPS
Jump to: navigation, search
(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 Fortranのチュートリアルです。ALPS Fortranのインストール方法及び利用方法について説明しています。なお、このチュートリアルはFortranプログラミングの知識を有する読者を想定しています。
+
ALPS Fortranのチュートリアルです。ALPSを使ったFortranアプリケーションのコンパイル方法および実行方法について説明しています。なお、このチュートリアルはFortranプログラミングの知識を有する読者を想定しています。
 
 
==動作環境  ==
 
 
 
ALPS FortranはALPS(Algorithms and Libraries for Physics Simulations)上でFortranコードを実行するためのラッパライブラリです。したがって、ALPS Fortranを利用するためには以下の環境が必要になります。
 
 
 
{| border="1" cellpadding="5" cellspacing="0"
 
|-
 
|| ALPS || ALPS本体の動作環境及びインストール手順につきましては、[[Download_and_install_ALPS_2/ja|こちら]]をご参照ください。
 
|-
 
|| CMake|| ALPS Fortranのコンパイル及びクライアントコードのコンパイルにはCMakeを利用します。対応バージョンは2.8.0以上です。
 
|-
 
|| Fortranコンパイラ(Gnu/Intel/Fujitsu)|| ALPS本体と同じコンパイラが必要になります。コンパイラのインストール手順につきましては各コンパイラのマニュアルをご参照ください。
 
|-
 
 
 
|}
 
 
 
  
 
==ALPS Fortranインストール ==
 
==ALPS Fortranインストール ==
  
ALPS Fortranはパッチファイルとして提供されており、ALPS 本体にパッチを適用することでALPS Fortranが利用できます。
+
ALPS Fortranのソースコードは、ALPS 本体に含まれています。ALPS Fortranの機能を使うには、ALPSのCMake時に -DALPS_BUILD_FORTRAN=ON を指定します。(必要に応じて、-DCMAKE_Fortran_COMPILER オプションでFortranコンパイラも指定します。)
APLS Fortranパッチの適用手順は以下の通りです。
 
 
  
① パッチのダウンロード
+
  cmake -DALPS_BUILD_FORTRAN=ON /somewhere/alps/source/code
以下の場所よりALPS Fortranをダウンロードします。
+
  make
 +
  make install
  
$ cd ~/
 
$ wget http://xxx.xxx/alps_fortran.tar.gz
 
$ tar –zxvf alps_fortran.tar.gz
 
 
以上の手順を実行すると以下のファイル・フォルダが作成されます。
 
 
alps_fortran/
 
    + alps_fortran.patch
 
    +samples/
 
        +hello/
 
        +ising/
 
        +looper-2/
 
        +tutorial/
 
 
② パッチの適用
 
ALPS本体のソースフォルダ(以下、${ALPS_SRC})に移動し、パッチを適用します。
 
 
$ cd ${ALPS_SRC}
 
$ patch –p0 < ~/alps_fortran/alps_fortran.patch
 
 
③ ALPS本体のビルド・インストール
 
通常のALPS同様、公式HPの内容に従ってビルド・インストールを行うとALPS Fortranも一緒にインストールされます。
 
 
ALPS Fortranが正しくインストールされると以下のファイルが生成されます。<br/>
 
ALPS Fortranが正しくインストールされると以下のファイルが生成されます。<br/>
  
* ${ALPS_ROOT}/lib/libalps_fortran.a<br/>
+
* ${ALPS_HOME}/lib/libalps_fortran.a<br/>
* ${ALPS_ROOT}/include/alps/fortran/alps_fortran.h<br/>
+
* ${ALPS_HOME}/include/alps/fortran/alps_fortran.h<br/>
* ${ALPS_ROOT}/include/alps/fortran/fortran_wrapper.h<br/>
+
* ${ALPS_HOME}/include/alps/fortran/fortran_wrapper.h<br/>
* ${ALPS_ROOT}/include/alps/fortran/fwrapper_impl.h<br/>
+
* ${ALPS_HOME}/include/alps/fortran/fwrapper_impl.h<br/>
 
 
※${ALPS_ROOT}はALPSのインストールフォルダを指します。
 
  
 +
※${ALPS_HOME}はALPSのインストールフォルダを指します。
  
 
==サンプルコード  ==
 
==サンプルコード  ==
  
ALPS Fortranにはサンプルとして、以下のコードが含まれています。
+
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モデルの計算を行う簡単なアプリケーションです。
+
*Isingモデルの計算を行う簡単なアプリケーションです。
 
 
looper-2アプリケーション
 
*外部のライブラリを利用したアプリケーションの例です。
 
 
 
 
 
次節より、helloアプリケーションのビルド方法及び実行方法について説明します。ising、looper-2アプリケーションについてもhelloと同様の手順でビルド・実行できます。
 
  
 +
次節より、helloアプリケーションのビルド方法及び実行方法について説明します。isingアプリケーションについてもhelloと同様の手順でビルド・実行できます。
  
 
===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
  
cmakeの実行
+
2. cmakeの実行
ソースコードフォルダを指定してcmakeを実行します。(${SAMPLES}はALPS Fortranを解凍して生成されるsamplesフォルダです)
+
ソースコードフォルダを指定してcmakeを実行します。(${ALPS_HOME}はALPSがインストールされているフォルダです)
  $ cmake –DALPS_ROOT:PATH=${ALPS_ROOT} \
+
  $ cmake –DALPS_ROOT_DIR=${ALPS_HOME} ${ALPS_HOME}/tutorials/alpsize-10-fortran-scheduler
>      ${SAMPLES}/hello
 
  
helloアプリケーションのビルド
+
3. helloアプリケーションのビルド
 
cmakeを実行するとカレントディレクトリにMakefile等、ビルドに必要なファイルが生成されますので、makeを実行します。
 
cmakeを実行するとカレントディレクトリにMakefile等、ビルドに必要なファイルが生成されますので、makeを実行します。
 
  $ make
 
  $ make
ビルドが完了するとカレントディレクトリに実行ファイルhelloが出力されます。
+
ビルドが完了するとカレントディレクトリに実行ファイル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ファイルを生成します。
${SAMPLES}/helloにあるパラメータファイルからXMLファイルを生成します。
+
  $ cp ${ALPS_HOME}/tutorials/alpsize-10-fortran-scheduler/hello_params .
  $ cp ${SAMPLES}/hello/hello_params .
 
 
  $ parameter2xml hello_params
 
  $ parameter2xml hello_params
parameter2xmlコマンドにつきましてはALPS本体の公式HPをご参照ください。
 
  
helloアプリケーションの実行
+
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. パラメータファイルの準備
${SAMPES} /helloにあるパラメータファイルからXMLファイルを生成します。
+
${ALPS_HOME}/tutorials/alpsize-10-fortran-schedulerにあるパラメータファイルからXMLファイルを生成します。
  $ cp ${SAMPLES}/hello/hello_params .
+
  $ cp ${ALPS_HOME}/tutorials/alpsize-10-fortran-scheduler/hello_params .
 
  $ parameter2xml hello_params
 
  $ parameter2xml hello_params
  
helloアプリケーションの実行
+
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

ALPS Fortranのチュートリアルです。ALPSを使ったFortranアプリケーションのコンパイル方法および実行方法について説明しています。なお、このチュートリアルはFortranプログラミングの知識を有する読者を想定しています。

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のソースコードには、サンプルとして、以下のコードが含まれています。

[helloアプリケーション]

  • 計算は行わず、パラメータファイルの内容を標準出力に出力するのみのアプリケーションです。

[isingアプリケーション]

  • 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の内容が標準出力に出力されます。