Difference between revisions of "Tutorials:ALPS Fortran Introduction"

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プログラミングの知識を有する読者を想定しています。-->
 +
This is the tutorial of ALPS Fortran. This chapter explains how to use and install the ALPS Fortran. It should be noted that this tutorial assumes the readers have a knowledge of Fortran programming
  
==動作環境  ==
+
==Operating environment  ==
  
ALPS FortranはALPS(Algorithms and Libraries for Physics Simulations)上でFortranコードを実行するためのラッパライブラリです。したがって、ALPS Fortranを利用するためには以下の環境が必要になります。
+
<!--ALPS FortranはALPS(Algorithms and Libraries for Physics Simulations)上でFortranコードを実行するためのラッパライブラリです。したがって、ALPS Fortranを利用するためには以下の環境が必要になります。-->
 +
ALPS Fortran is a wrapper library to run fortran code on the ALPS system. Therefore, the following environment is necessary to use ALPS Fortran.
  
 
{| border="1" cellpadding="5" cellspacing="0"
 
{| border="1" cellpadding="5" cellspacing="0"
 
|-
 
|-
|| ALPS || ALPS本体の動作環境及びインストール手順につきましては、[[Download_and_install_ALPS_2/ja|こちら]]をご参照ください。
+
|| ALPS || Regarding the operating environment of the ALPS and installation procedure, please click [[Download_and_install_ALPS_2/ja|here]]  
 
|-
 
|-
|| CMake|| ALPS Fortranのコンパイル及びクライアントコードのコンパイルにはCMakeを利用します。対応バージョンは2.8.0以上です。
+
|| CMake|| To compile a client code and ALPS Fortran makes use of CMake. (Cmake Version 2.8.0 and later)
 
|-  
 
|-  
|| Fortranコンパイラ(Gnu/Intel/Fujitsu)|| ALPS本体と同じコンパイラが必要になります。コンパイラのインストール手順につきましては各コンパイラのマニュアルをご参照ください。
+
|| Fortran compiler(Gnu/Intel/Fujitsu)|| You will need the same compiler used in ALPS. Regarding the compiler installation procedure, please refer to the manual of each compiler.
 
|-
 
|-
  
 
|}
 
|}
  
 +
==Install ==
  
==ALPS Fortranインストール ==
+
ALPS Fortran is provided as a patch file,which is available by applying a patch to ALPS system.
 +
APLS Fortran patching procedure are as follows.
  
ALPS Fortranはパッチファイルとして提供されており、ALPS 本体にパッチを適用することでALPS Fortranが利用できます。
+
download patchs<br>
APLS Fortranパッチの適用手順は以下の通りです。
+
download available following url.
 
 
 
パッチのダウンロード
 
以下の場所よりALPS Fortranをダウンロードします。
 
  
 
  $ cd ~/
 
  $ cd ~/
Line 32: Line 32:
 
  $ tar –zxvf alps_fortran.tar.gz
 
  $ tar –zxvf alps_fortran.tar.gz
  
以上の手順を実行すると以下のファイル・フォルダが作成されます。
+
doing the above procedure,the following file and directories will be created.
  
 
  alps_fortran/
 
  alps_fortran/
Line 42: Line 42:
 
         +tutorial/
 
         +tutorial/
  
パッチの適用
+
patch apply<br>
ALPS本体のソースフォルダ(以下、${ALPS_SRC})に移動し、パッチを適用します。
+
moving ALPS source directory(${ALPS_SRC}),apply the patch.
  
 
  $ cd ${ALPS_SRC}
 
  $ cd ${ALPS_SRC}
 
  $ patch –p0 < ~/alps_fortran/alps_fortran.patch
 
  $ patch –p0 < ~/alps_fortran/alps_fortran.patch
  
ALPS本体のビルド・インストール
+
build installation ALPS sysytem<br>
通常のALPS同様、公式HPの内容に従ってビルド・インストールを行うとALPS Fortranも一緒にインストールされます。
+
The ALPS Fortran is also installed together when you build ALPS system according to the HP manual.<br/>
ALPS Fortranが正しくインストールされると以下のファイルが生成されます。<br/>
 
  
 
* ${ALPS_ROOT}/lib/libalps_fortran.a<br/>
 
* ${ALPS_ROOT}/lib/libalps_fortran.a<br/>
Line 57: Line 56:
 
* ${ALPS_ROOT}/include/alps/fortran/fwrapper_impl.h<br/>
 
* ${ALPS_ROOT}/include/alps/fortran/fwrapper_impl.h<br/>
  
※${ALPS_ROOT}はALPSのインストールフォルダを指します。
+
※${ALPS_ROOT} shows ALPS install directory
 
 
 
 
==サンプルコード  ==
 
  
ALPS Fortranにはサンプルとして、以下のコードが含まれています。
+
== Sample Source Code  ==
  
 +
The ALPS Fortran contains the following codes as a sample.
  
helloアプリケーション
 
*計算は行わず、パラメータファイルの内容を標準出力に出力するのみのアプリケーションです。
 
  
isingアプリケーション
+
"hello" application
*isingモデルの計算を行う簡単なアプリケーションです。
+
*Calculation is not performed,only to output the contents of the parameter file for standard output.
  
looper-2アプリケーション
+
"ising" application
*外部のライブラリを利用したアプリケーションの例です。
+
*is symple application for ising model calculators.
  
 +
"looper-2" application
 +
*is the application sample using external library.
  
次節より、helloアプリケーションのビルド方法及び実行方法について説明します。ising、looper-2アプリケーションについてもhelloと同様の手順でビルド・実行できます。
 
  
 +
From the next section, you will learn how how to build and run the hello application.You can build and run the same procedure as hello ising, for looper-2 application.
  
===helloアプリケーション ===
+
==="hello" Application ===
helloアプリケーションは以下のファイルから構成されています。
+
hello application consists of the following files.
* hello_impl.f90:アプリケーションの実装
+
* hello_impl.f90:main program
* hello.C:アプリケーションのエントリポイント
+
* hello.C:setting entrypoint
* hello_params:パラメータファイル
+
* hello_params:parameter file
* CMakeLists.txt:ビルド設定ファイル
+
* CMakeLists.txt:configuration file
  
  
====helloアプリケーションのコンパイル ====
+
====compiling ====
  
helloアプリケーションのコンパイル手順は以下の通りです。
+
The compilation procedures are as follows.
  
ビルド用ワークフォルダの作成
+
Creating the Work Directory for build<br>
helloアプリケーションのビルド結果を保存するためのワークフォルダを作成します。
+
Creating the Work Directory for storing the results of "hello" application build.
  
 
  $ mkdir –p ${HOME}/alps_fortran_build/hello
 
  $ mkdir –p ${HOME}/alps_fortran_build/hello
 
  $ cd ${HOME}/alps_fortran_build/hello
 
  $ cd ${HOME}/alps_fortran_build/hello
  
cmakeの実行
+
Running cmake<br>
ソースコードフォルダを指定してcmakeを実行します。(${SAMPLES}はALPS Fortranを解凍して生成されるsamplesフォルダです)
+
specifying the source code directory and run cmake.(${SAMPLES} is a folder for samples which is generated by ALPS Fortran unpacking )
 +
 
 
  $ cmake –DALPS_ROOT:PATH=${ALPS_ROOT} \
 
  $ cmake –DALPS_ROOT:PATH=${ALPS_ROOT} \
 
  >      ${SAMPLES}/hello
 
  >      ${SAMPLES}/hello
  
helloアプリケーションのビルド
+
building "hello" application<br>
cmakeを実行するとカレントディレクトリにMakefile等、ビルドに必要なファイルが生成されますので、makeを実行します。
+
doing cmake command makes such as Makefile is nesessary for building ,then run the make.
 
  $ make
 
  $ make
ビルドが完了するとカレントディレクトリに実行ファイルhelloが出力されます。
+
After the building,execute file "hello" will be generated in the currenet directory.
  
 +
====thread-level parallelization ====
 +
The thread-level parallelization procedures are as follows.
  
====helloアプリケーションのスレッド並列実行 ====
 
helloアプリケーションのスレッド並列実行の手順は以下の通りです。
 
  
 +
① moving the work directory<br>
 +
moving to the work directory that you created buildig the "hello" application.
  
① ワークフォルダへの移動
 
helloアプリケーションをビルドする際に作成したワークフォルダに移動します。
 
 
  $ cd ${HOME}/alpls_fortran_build/hello
 
  $ cd ${HOME}/alpls_fortran_build/hello
なお、ワークフォルダ内に実行結果ファイル(hello_param.out.*)があるとアプリケーションが実行できません。実行結果ファイルがある場合は全て削除してから次の手順に進んでください。
+
<!--なお、ワークフォルダ内に実行結果ファイル(hello_param.out.*)があるとアプリケーションが実行できません。実行結果ファイルがある場合は全て削除してから次の手順に進んでください。-->
 +
In addition, the application can not run if there is (hello_param.out. *) File execution results in the work directory. If you have such the resulting file, proceed to the next step to remove all.
  
 
+
preparation parameterfiles<br>
パラメータファイルの準備
+
  to generate XML files from the parameter files in {SAMPLES}/hello
  ${SAMPLES}/helloにあるパラメータファイルからXMLファイルを生成します。
 
 
  $ cp ${SAMPLES}/hello/hello_params .
 
  $ cp ${SAMPLES}/hello/hello_params .
 
  $ parameter2xml hello_params
 
  $ parameter2xml hello_params
parameter2xmlコマンドにつきましてはALPS本体の公式HPをご参照ください。
+
For parameter2xml command, refer to the ALPS HP.
 +
 
 +
③ running "hello"<br>
 +
running application as following.
  
③ helloアプリケーションの実行
 
以下のコマンドでアプリケーションを実行します。
 
 
  $ ./hello hello_params.in.xml
 
  $ ./hello hello_params.in.xml
  
helloアプリケーションを実行すると、hello_paramsに定義されたパラメータが標準出力に出力されます。実行結果(抜粋)を以下に示します。
+
When you run the hello application, the parameters are defined in the hello_params will be output to standard output. The following is an excerpt execution result.
  
 
   ##### alps_init() #####
 
   ##### alps_init() #####
Line 161: Line 160:
 
     defined parameter Z =            0
 
     defined parameter Z =            0
  
 +
====mpi parallelization ====
  
====helloアプリケーションのMPI並列実行 ====
+
The mpi parallelization procedures are as follows.<br>
 
+
moving the work directory<br>
helloアプリケーションのMPI並列実行の手順は以下の通りです。
+
moving to the work directory that you created buildig the "hello" application.
ワークフォルダへの移動
 
helloアプリケーションをビルドする際に作成したワークフォルダに移動します。
 
 
  $ cd ${HOME}/alpls_fortran_build/hello
 
  $ cd ${HOME}/alpls_fortran_build/hello
  
なお、ワークフォルダ内に実行結果ファイル(hello_param.out.*)があるとアプリケーションが実行できません。実行結果ファイルがある場合は全て削除してから次の手順に進んでください。
+
In addition, the application can not run if there is (hello_param.out. *) File execution results in the work directory. If you have such the resulting file, proceed to the next step to remove all.
  
パラメータファイルの準備
+
preparation parameterfiles<br>
  ${SAMPES} /helloにあるパラメータファイルからXMLファイルを生成します。
+
  to generate XML files from the parameter files in {SAMPLES}/hello
 
  $ cp ${SAMPLES}/hello/hello_params .
 
  $ cp ${SAMPLES}/hello/hello_params .
 
  $ parameter2xml hello_params
 
  $ parameter2xml hello_params
  
helloアプリケーションの実行
+
runnig the application<br>
以下のコマンドでアプリケーションを実行します。
+
running application as following.
 
  $ 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の内容が標準出力に出力されます。
+
In the same manner as described above,the parameters are defined in the hello_params will be output to standard output.

Latest revision as of 07:32, 15 March 2012

This is the tutorial of ALPS Fortran. This chapter explains how to use and install the ALPS Fortran. It should be noted that this tutorial assumes the readers have a knowledge of Fortran programming

Operating environment 

ALPS Fortran is a wrapper library to run fortran code on the ALPS system. Therefore, the following environment is necessary to use ALPS Fortran.

ALPS Regarding the operating environment of the ALPS and installation procedure, please click here
CMake To compile a client code and ALPS Fortran makes use of CMake. (Cmake Version 2.8.0 and later)
Fortran compiler(Gnu/Intel/Fujitsu) You will need the same compiler used in ALPS. Regarding the compiler installation procedure, please refer to the manual of each compiler.

Install

ALPS Fortran is provided as a patch file,which is available by applying a patch to ALPS system. APLS Fortran patching procedure are as follows.

① download patchs
download available following url.

$ cd ~/
$ wget http://xxx.xxx/alps_fortran.tar.gz
$ tar –zxvf alps_fortran.tar.gz

doing the above procedure,the following file and directories will be created.

alps_fortran/
    + alps_fortran.patch
    +samples/
        +hello/
        +ising/
        +looper-2/
        +tutorial/

② patch apply
moving ALPS source directory(${ALPS_SRC}),apply the patch.

$ cd ${ALPS_SRC}
$ patch –p0 < ~/alps_fortran/alps_fortran.patch

③ build installation ALPS sysytem
The ALPS Fortran is also installed together when you build ALPS system according to the HP manual.

  • ${ALPS_ROOT}/lib/libalps_fortran.a
  • ${ALPS_ROOT}/include/alps/fortran/alps_fortran.h
  • ${ALPS_ROOT}/include/alps/fortran/fortran_wrapper.h
  • ${ALPS_ROOT}/include/alps/fortran/fwrapper_impl.h

※${ALPS_ROOT} shows ALPS install directory

Sample Source Code

The ALPS Fortran contains the following codes as a sample.


"hello" application

  • Calculation is not performed,only to output the contents of the parameter file for standard output.

"ising" application

  • is symple application for ising model calculators.

"looper-2" application

  • is the application sample using external library.


From the next section, you will learn how how to build and run the hello application.You can build and run the same procedure as hello ising, for looper-2 application.

"hello" Application

hello application consists of the following files.

  • hello_impl.f90:main program
  • hello.C:setting entrypoint
  • hello_params:parameter file
  • CMakeLists.txt:configuration file


compiling

The compilation procedures are as follows.

① Creating the Work Directory for build
Creating the Work Directory for storing the results of "hello" application build.

$ mkdir –p ${HOME}/alps_fortran_build/hello
$ cd ${HOME}/alps_fortran_build/hello

② Running cmake
specifying the source code directory and run cmake.(${SAMPLES} is a folder for samples which is generated by ALPS Fortran unpacking )

$ cmake –DALPS_ROOT:PATH=${ALPS_ROOT} \
>       ${SAMPLES}/hello

③ building "hello" application
doing cmake command makes such as Makefile is nesessary for building ,then run the make.

$ make

After the building,execute file "hello" will be generated in the currenet directory.

thread-level parallelization

The thread-level parallelization procedures are as follows.


① moving the work directory
moving to the work directory that you created buildig the "hello" application.

$ cd ${HOME}/alpls_fortran_build/hello

In addition, the application can not run if there is (hello_param.out. *) File execution results in the work directory. If you have such the resulting file, proceed to the next step to remove all.

② preparation parameterfiles

to generate XML files from the parameter files in {SAMPLES}/hello
$ cp ${SAMPLES}/hello/hello_params .
$ parameter2xml hello_params

For parameter2xml command, refer to the ALPS HP.

③ running "hello"
running application as following.

$ ./hello hello_params.in.xml

When you run the hello application, the parameters are defined in the hello_params will be output to standard output. The following is an excerpt execution result.

  ##### 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

mpi parallelization

The mpi parallelization procedures are as follows.
① moving the work directory
moving to the work directory that you created buildig the "hello" application.

$ cd ${HOME}/alpls_fortran_build/hello

In addition, the application can not run if there is (hello_param.out. *) File execution results in the work directory. If you have such the resulting file, proceed to the next step to remove all.

② preparation parameterfiles

to generate XML files from the parameter files in {SAMPLES}/hello
$ cp ${SAMPLES}/hello/hello_params .
$ parameter2xml hello_params

③ runnig the application
running application as following.

$ mpirun -np 4 -x OMP_NUM_THREADS=1 ./hello --mpi hello_params.in.xml

In the same manner as described above,the parameters are defined in the hello_params will be output to standard output.