ライブラリの設定

 ここでは、無料のライブラリの利用方法を解説していく。多くの第一原理計算コードでは、BLASやLAPACK、Intel MKLやAMD ACMLのセットアップが必要となる。
(http://azalea.s35.xrea.com/blas/whatIsBlas.html, http://www.mlab.ice.uec.ac.jp/~ej-sib/index.html も参考にされるとよい)

下記の数値計算ライブラリのHPや文献も見ておくとよい。
[1] http://www.rcs.arch.t.u-tokyo.ac.jp/kusuhara/fswiki/wiki.cgi?page=%BF%F4%C3%CD%B7%D7%BB%BB%A5%E9%A5%A4%A5%D6%A5%E9%A5%EA
[2] http://www.jsces.org/Issue/Journal/pdf/nakata-0411.pdf
[3] http://www.is.doshisha.ac.jp/text/basic/Linpack20090921.pdf
[4] http://sourceforge.jp/magazine/08/12/24/123237
[5] http://www.xlsoft.com/jp/products/intel/perflib/mkl/lin/Getting_Started_lin.htm
[6] http://web.kudpc.kyoto-u.ac.jp/hpc/intel
[7] http://157.82.240.165/~yousuke/keisannki/faq.html

------------------------------------------------------------------------------
色々と調べた結果、下記の傾向があるように思われる(左側の方が計算速度が速い)。

Intel MKL>=GotoBlas (OpenBLAS) >=  ATLAS >= BLAS (ACML?はBLASより速い?)

OpenMPI >= MPICH2 >= MPICH or OpenMP >= 自動並列化(-parallel など)

※ FFT も Intel MKL の方が速いという報告もあるため、Intel MKL での FFT のコンパイル方法も簡単に説明する。

------------------------------------------------------------------------------
□ BLAS & LAPACK
LAPACK : http://www.netlib.org/lapack/
1) tar -zxvf lapack-3.5.0.gz
2) cd lapack-3.5.0
3)
◇ gfortran
  cp make.inc.example make.inc
◇ ifort
  cp ./INSTALL/make.inc.ifort make.inc
4) make blaslib
5) make lapacklib
6) sudo or su
7)
  ln -s /home/username/lapack-3.5.0/librefblas.a /usr/local/lib/libblas.a
  ln -s /home/username/lapack-3.5.0/liblapack.a /usr/local/lib/liblapack.a
-----
□ BLAS & LAPACK
LAPACK : http://www.netlib.org/lapack/ 

gfortranの場合
1) tar -zxvf lapack-3.3.0.gz
2) cd lapack-3.3.0
3) cp make.inc.example make.inc
4) make blaslib
5) make lapacklib
6) sudo or su
パスワードを入力
7) cp blas_LINUX.a /usr/lib/libblas.a
    cp lapack_LINUX.a /usr/lib/liblapack.a
  または
  ln -s blas_LINUX.a /usr/lib/libblas.a
  ln -s lapack_LINUX.a /usr/lib/liblapack.a

Intel Fortran Compilerの場合
1) cp ./INSTALL/make.inc.ifort make.inc
2) make blaslib
3) make lapacklib
4) sudo or su
パスワードを入力
5) gfortranと区別を付けたい場合は、
  cp blas_LINUX.a /usr/local/lib/libblas.a
  cp lapack_LINUX.a /usr/local/lib/liblapack.a
  または
  ln -s blas_LINUX.a /usr/local/lib/libblas.a
  ln -s lapack_LINUX.a /usr/local/liblapack.a
  などとするのもよいだろう。

 

gfortran + atlas の場合 (予め下記にあるATLASをセットアップしておく)
1) tar -zxvf lapack-3.3.1.gz
2) cd lapack-3.3.1
3) cp make.inc.example make.inc
4) make.inc を下記のように書き換える
    #BLASLIB = ../../blas$(PLAT).a
    BLASLIB = /usr/local/atlas/lib/libf77blas.a /usr/local/atlas/lib/libatlas.a
5) make lapacklib
6) sudo su
パスワードを入力
7) cp lapack_LINUX.a /usr/local/atlas/lib/liblapack_netlib_atlas.a
  または
  ln -s lapack_LINUX.a /usr/local/atlas/lib/liblapack_netlib_atlas.a

使用方法(調査中)
  gfortran case.f -L/usr/lib -lblas -llapack
  ifort case.f -L/usr/local/lib -lblas -llapack

Windows の場合は下記を参照すると良い。
http://www.dvxa.org/
http://icl.cs.utk.edu/lapack-for-windows/lapack/#libraries
------------------------------------------------------------------------------
□ LAPACK95
LAPACK95 : http://www.netlib.org/lapack95/ 
1) tar zxvf lapack95.gz
2) cd LAPACK95
3) mkdir LAPACK95_modules
4) LAPAC95中のmake.incを下記のようにする。
    FC = gfortran
  FC1 = gfortran
    OPTS0 = -O3
5) cd SRC
    SRC中のREADME.txtをから得たいライブラリのコマンドを入力する。例えば、
  make single_double_complex_dcomplex
6) LAPAC95内にLAPAC95.aが生成されている。
7) cd ..
8) sudo su
パスワードを入力
9) cp lapack95.a /usr/lib/liblapac95.a
    cp lapack95_modules/* /usr/lib
Intel Fortran CompilerでLAPACK, LAPACK95をコンパイルする : http://www.obihiro.ac.jp/~suzukim/masuda/ifc_lapack31.html

使用方法(調査中)
gfortran case.f -L/usr/lib -llapack95
ifort case.f -L/usr/lib -llapack95

------------------------------------------------------------------------------
□ GotoBLAS
注意:後藤氏はWindows HPC にヘッドハンティングされたため開発は終了。下記のHPによるとMKLかACMLを使ってくださいとのこと。
http://blog.goo.ne.jp/nakatamaho/e/61d0cfbe1222364a3ef70505dce4f463
ただ、整備がなされているHPがあることを知った。
https://www.tacc.utexas.edu/research-development/tacc-software/gotoblas2
http://www.okada.jp.org/RWiki/?R%A4%C8GotoBLAS

GotoBLAS : http://www.tacc.utexas.edu/resources/software/ 
http://www.utexas.edu/news/2006/04/12/tacc/
http://www.tacc.utexas.edu/tacc-projects/gotoblas2/downloads
1) tar zxvf GotoBLAS2-1.13_bsd.tar.gz
2) cd GotoBLAS2
3) cat /proc/cpuinfo
4) gedit Makefile.rule
  a) 64 bit のPCの場合は、BINARY=64 の前の # を除く。
  b) cat /proc/cpuinfo で出力された processer の行が複数あればMakefile.ruleで USE_THREAD=0 の前の # を除いて、USE_THREAD=1 にする。(自動で設定してくれるので、良く分からなければそのままでよい)

  c) OpenMP のスレッド毎にシングルスレッドモードでGotoBLASを呼びだすには、#を除いて、USE_OPENMP=1 にする。

  d) どうしてもgfortranにしたい場合は、FC = gfortran の前の#を除く。
  e) 64 bit の場合は BINARY=64 の前の#を除く。
5) ./quickbuild.32bit
  64bitの場合は下記のようにする。 下記のHPで解説されているuname -a は便利。
  uname -a と入力して x86_64 とあれば64bit計算が可能で下記のようにする。
  ./quickbuild.64bit
6) sudo su
   パスワード
7) cp libgoto2_core2p-r1.13.a /usr/local/lib/libgoto2.a 
※1 最大スレッド数は goto_set_num_threads(整数)で指定
※2 LAPACKも自動的にダウンロードされる。
※3 Core2 までしかReadme に記述が無いので、corei7 でATLASよりも速くなるかは不明。
使用方法
   gfortran -o case case.f -L/usr/local/lib -lgoto2 -lpthread
参考HP : http://www.kkaneko.com/rinkou/linux/cblaslinux.html 
  Which architectures are supported?
   Supported architectures include:
   x86 family: Intel Pentium 3, Intel Pentium 4, Intel Core2, AMD Athlon, AMD Opteron
   x86_64 family: Intel Pentium 4, Intel Core2, AMD Opteron
参考HP : http://www.tacc.utexas.edu/tacc-projects/gotoblas2/faq
http://blog.goo.ne.jp/nakatamaho/e/61d0cfbe1222364a3ef70505dce4f463

SurviveGotoBLAS2: http://prs.ism.ac.jp/~nakama/SurviveGotoBLAS2/
1. tar zxvf SurviveGotoBLAS2*
2. cd survivegotoblas2
3. 後は上記と同じ。
4. lapack のversionを変えたい場合は、LAPACK_VERSION = 3.3.1 などにして前の#を除く。 
5. sudo cp libgoto2_*r3.14.a /usr/local/lib/libgoto2.a
sudo cp libgoto2_*r3.14_blas.a /usr/local/lib/libgoto2_blas.a
sudo cp libgoto2_*r3.14_cblas.a /usr/local/lib/libgoto2_cblas.a
sudo cp libgoto2_*r3.14_lapack.a /usr/local/lib/libgoto2_lapack.a
使用方法
gfortran -o case case.f -L/usr/local/lib -lgoto2 -lgoto2 -lgoto2_blas -lgoto2_lapack
------------------------------------------------------------------------------
□ OpenBLAS (+lapack)
1. download: http://www.openblas.net/ -> TAR
2. tar zxvf xianyi-OpenBLAS-v0.2.13-0-g51ce5ef.tar.gz
3. cd xia*
4. make BINARY=64 CC="gcc -m64" FC="gfortran -m64"
  or make BINARY=64 CC="gcc -m64" FC="gfortran -m64" USE_THREAD=4
5. su
6. make PREFIX=/usr/local install

Resutls
----- after make BINARY=64 CC="gcc -m64" FC="gfortran -m64"
 OpenBLAS build complete. (BLAS CBLAS LAPACK LAPACKE)

  OS               ... Linux             
  Architecture     ... x86_64               
  BINARY           ... 64bit                 
  C compiler       ... GCC  (command line : gcc -m64)
  Fortran compiler ... GFORTRAN  (command line : gfortran -m64)
  Library Name     ... libopenblas_sandybridgep-r0.2.13.a (Multi threaded; Max num-threads is 8)
----- after make PREFIX=/usr/local install
Generating openblas_config.h in /usr/local/include
Generating f77blas.h in /usr/local/include
Generating cblas.h in /usr/local/include
Copying LAPACKE header files to /usr/local/lib
Copying the static library to /usr/local/lib
Copying the shared library to /usr/local/lib
Generating OpenBLASConfig.cmake in /usr/local/cmake
Install OK!
-----
-L/usr/local/lib -lopenblas.a

see GotoBLAS_02QuickInstall.txt
[1] http://www.hnagata.net/archives/198#more-198
[2] https://github.com/xianyi/OpenBLAS/wiki/Installation-Guide
[3] https://github.com/xianyi/OpenBLAS
[4] http://www.lindonslog.com/linux-unix/compile-r-openblas-source-guide/
------------------------------------------------------------------------------
CBLAS
CBLAS : http://www.netlib.org/blas/blast-forum/
1) tar zxvf cblas.gz
2) cd CBLAS
3) cp Makefile.LINUX Makefile.in または ln -s Makefile.LINUX Makefile.in
    前者の場合はMakefile.in で、後者の場合はMakefile.LINUXで
    BLLIB = /usr/lib/libblas.a と書き換える。
4) make all 
5) cd /lib/
6) sudo su
7) cp cblas_LINUX.a /usr/local/lib/libcblas.a
使用方法
 gcc case.c -L/usr/lib -lcblas (調査中)

GotoBLASと関連させるには参考HPに従って make all 前にファイルを書き換える。
   cp Makefile.LINUX Makefile.in と上記でした場合は Makefile.inで下記とする。
    BLLIB = /usr/lib/libgoto2.a -lpthread -lgomp
ln -s Makefile.LINUX Makefile.in と上記でした場合は Makefile.LINUXで下記とする。
    BLLIB = /usr/lib/libgoto2.a -lpthread -lgomp
  また、quickbuild.64bitとした場合はCFLAGSとFFLAGSに-m64を付ける。
使用方法
  gcc case.c -L/usr/lib -lcblas -lgoto2 -lpthread (調査中)
参考HP : http://www.kkaneko.com/rinkou/linux/cblaslinux.html 
http://tokida.sakura.ne.jp/Hobbies/computer/Lapack.htm 
http://www.vi.cs.is.nagoya-u.ac.jp/watanabe-lab/graduates/01year/hiroyuki/lab/clapack/index.html 
http://www.alab.t.u-tokyo.ac.jp/~bond/doc/clapack.html 

------------------------------------------------------------------------------
CLAPACK
CLAPACK : http://www.netlib.org/clapack/
1) tar zxvf clapack-3.1.1.1.gz
2) cd CLAPACK-3.1.1.1
3) cp make.inc.example make.inc
4) make f2clib
5) make blaslib
  上記で blas_LINUX.a が作成される。
6) cd SRC
7) make
  上記で lapack_LINUX.a が作成される。
8) cd ../TESTING/MATGEN
9) make
10) cd ../../
11) sudo su
  パスワード
12) cp blas_LINUX.a /usr/lib/libcblas.a
      cp lapack_LINUX.a /usr/lib/libclapack.a
    cp F2CLIBS/libf2c.a /usr/lib/libf2c.a
使用方法
gcc case.c -L/usr/lib -lcblas -lclapack -lf2c (調査中)
参考HP : http://tokida.sakura.ne.jp/Hobbies/computer/Lapack.htm
http://www.vi.cs.is.nagoya-u.ac.jp/watanabe-lab/graduates/01year/hiroyuki/lab/clapack/index.html
http://www.alab.t.u-tokyo.ac.jp/~bond/doc/clapack.html

------------------------------------------------------------------------------
LAPACK++ (調査中)
LAPACK++ : http://math.nist.gov/lapack++/ 
1) tar zxvf Lapackpp1_1a.tgz
2) cd Lapackpp1_1a
3) make libs
4) makefile.def で下記のように書き換える。
  BLAS_LIB = /usr/lib/libcblas.a
  LAPACK_LIB = /usr/lib/libclapack.a
5) make all
  6) sudo su
7) cp libblas++.a /usr/local/lib/libblas++.a
    cp liblapack++.a /usr/local/lib/liblapack++.a
    cp liblamatrix++.a /usr/local/lib/liblamatrix++.a

LAPACKPP : http://sourceforge.net/projects/lapackpp/files/
1) tar zxvf lapackpp-2.5.2.tar.gz
2) cd lapackpp-2.5.2
3) sudo su
4) ./configure
5) make
6) make install
参考HP : http://www3.bpe.es.osaka-u.ac.jp/~yumikura/rough_paper/RP_contents/lapackpp.html

------------------------------------------------------------------------------
ATLAS
1) ATLAS : http://math-atlas.sourceforge.net/
2) tar -xvf atlas3.8.4.tar.bz2
3) cd ATLAS
4) mkdir ATLAS_BUILD
5) cd ATLAS_BUILD
6) /home/*/ATLAS/configure -b 32
  64 bit の場合は、-b 64 にする。
7) make
8) make check
9) make ptcheck
10) make time
11) su
12) make install 
  下記のように格納先を指定しても良いだろう。(make install で/usr/local/atlas/libに入れられる)
sudo cp $(HOME)/ATLAS/ATLAS_BUILD/lib/libcblas.a /usr/local/atlas/lib/libcblas.a
  sudo cp $(HOME)/ATLAS/ATLAS_BUILD/lib/liblapack.a /usr/local/atlas/lib/liblapack.a
  sudo cp $(HOME)/ATLAS/ATLAS_BUILD/lib/libf77blas.a /usr/local/atlas/lib/libf77blas.a
  sudo cp $(HOME)/ATLAS/ATLAS_BUILD/lib/libtstatlas.a /usr/local/atlas/lib/libtstatlas.a
  sudo cp $(HOME)/ATLAS/ATLAS_BUILD/lib/libatlas.a /usr/local/atlas/lib/libatlas.a
または
  ln -s cp $(HOME)/ATLAS/ATLAS_BUILD/lib/libcblas.a /usr/local/atlas/lib/libcblas.a
  ln -s cp $(HOME)/ATLAS/ATLAS_BUILD/lib/liblapack.a /usr/local/atlas/lib/liblapack.a
  ln -s cp $(HOME)/ATLAS/ATLAS_BUILD/lib/libf77blas.a /usr/local/atlas/lib/libf77blas.a
  ln -s cp $(HOME)/ATLAS/ATLAS_BUILD/lib/libtstatlas.a /usr/local/atlas/lib/libtstatlas.a
  ln -s cp $(HOME)/ATLAS/ATLAS_BUILD/lib/libatlas.a /usr/local/atlas/lib/libatlas.a
  などとするのもよいだろう。

 参考HP : http://www.kkaneko.com/rinkou/linux/atlaslinux.html
http://www.tmps.org/index.php?ATLAS%A1%A4MKL%A1%A4ACML%A4%F2%CD%D1%A4%A4%A4%BFGSL%A4%CE%B9%E2%C2%AE%B2%BD
http://www.eml.hiroshima-u.ac.jp/member/staff/tamaki/LTI-Lib/index.php?LAPACK%2BATLAS
http://www.cmpt.phys.tohoku.ac.jp/~otsuki/lapack.html
http://www.mlab.ice.uec.ac.jp/~ej-sib/numerical/numerical_lapack_faq.html


gfortran の場合 (ATLASで自動的にlapackがインストール出来ない場合)
1) tar -zxvf lapack-3.3.1.gz
2) cd lapack-3.3.1
3) cp make.inc.example make.inc
4) #BLASLIB = ../../blas$(PLAT).a ←# を前に付けて、改行して下記を加える。
    BLASLIB = /usr/local/atlas/lib/libf77blas.a /usr/local/atlas/lib/libatlas.a
    スレッド版は下記のようにする
    BLASLIB = /usr/local/atlas/lib/libptf77blas.a /usr/local/atlas/lib/libatlas.a

5) make
6) sudo su
  パスワードを入力
7) cp lapack_LINUX.a /usr/local/atlas/lib/liblapack_netlib_atlas.a
      スレッド版: cp lapack_LINUX.a /usr/local/atlas/lib/libptlapack_netlib_atlas.a
  または
  ln -s lapack_LINUX.a /usr/local/atlas/lib/liblapack_netlib_atlas.a
      スレッド版: ln -s lapack_LINUX.a /usr/local/atlas/lib/libptlapack_netlib_atlas.a
------------------------------------------------------------------------------
Intel MKL
参考HP : http://interface.t.u-tokyo.ac.jp/home/teru/wien2k.html
11.0以降はコンパイラにmklも付属している(左記の欄のWIEN2kも参照)。
  下記にはMKLだけをダウンロードした場合での方法を記す。
1) tar zxvf l_mkl_10.3.5.220_ia32.tgz
2) cd l_mkl_10.3.5.220_ia32
3) ./install.sh
4) .bashrc にパスを書き込む。
     source /home/*/intel/composerxe-2011.5.220/bin/compilervars_global.sh ia32
5) bash
  インストールした後に、FFTなどをコンパイルするには下記のようにする。
  1) cd /home/*/intel/*/mkl/interfaces
  2) cd ライブラリを作成したいディレクトリ
  3) make を入力すると更に追加するコマンドが表示される
  4) make コマンド1 コマンド2 コマンド3 ...... と入力するとコンパイルがなされる。
  5) ライブラリは コンパイルの後の ar: creating に書かれている。
  ※ マニュアルは /home/*/intel/composerxe-2011.5.220/Documentation/en_US/MKL/
  にて、mkl_manual や mkl_userguide での hh_goto.htm を選択すればよい。
参考文献(OpenMP): http://jp.xlsoft.com/documents/intel/compiler/527J-001.pdf
------------------------------------------------------------------------------
AMD ACML
AMD ACML : http://developer.amd.com/cpu/Libraries/acml/pages/default.aspx 
用いたいコンパイラの名称の付いたacmlをダウンロードする。
gfortranでは下記のようになる。他のコンパイラも手順は同様。
1) tar zxvf acml-4-4-0-gfortran-32bit.gz
2) cd acml-4-4-0-gfortran-32bit
3) su (CentOSの場合)または sudo (Ubuntuの場合)
4) ./install-acml-4-4-0-gfortran-32bit.sh
参考HP: http://d.hatena.ne.jp/msr_humpy/20120421/1335025888
http://amddevcentral.com/tools/cpu/acml/onlinehelp/Documents/Linking_002fLinux.html
------------------------------------------------------------------------------
FFTW2 & FFTW3
FFTW : http://www.fftw.org/ 

FFTW2
gfortran, gcc の場合
1) tar zxvf fftw-2.1.5.tar.gz
2) cd fftw-2.1.5
3) ./configure
4) make
5) sudo su
6) make install
  
  OpenMPの場合[1]
  1) export CC="gcc -m64"
  2) export F77="ifort -mcmodel=large -i-dynamic"
  3) ./configure --with-openmp --enable-threads --with-gcc
  4) make
  5) sudo su
  6) make install

  OpenMPIの場合[2]
  1) export CC="gcc -m64"
  2) export F77="ifort -mcmodel=large -i-dynamic"
  3) ./configure --enable-mpi --enable-threads --with-gcc
  4) make
  5) sudo su
  6) make install

FFTW3
gfortran, gcc の場合
1) tar zxvf fftw-3.3.tar.gz
2) cd fftw-3.3
3) ./configure (gromacs 用には ./configure --enable-threads --enable-float )
4) make
5) sudo su
6) make install

  OpenMPの場合[1]
  1) export CC="gcc -m64"
  2) export F77="ifort -mcmodel=large -i-dynamic"
  3) ./configure --enable-threads --enable-openmp
  4) make
  5) sudo su
  6) make install

  OpenMPIの場合[2]
  1) export CC="gcc -m64"
  2) export MPICC="mpicc -m64"
  3) export F77="ifort -mcmodel=large -i-dynamic"
  4) ./configure --enable-mpi --enable-threads --enable-openmp
  5) make
  6) sudo su
  7) make install

References
[1] http://tekitobibouroku.blog42.fc2.com/blog-entry-44.html
[2] http://dft-blog.natanzon.eu/2010/03/parallel-compilation-of-wien2k-on-intel.html
[3] http://www.kkaneko.com/rinkou/linux/fftw3linux.html
[4] http://decafish.blog.so-net.ne.jp/2007-10-06
※インストール方法は、INSTALLを参照すればよい。
------------------------------------------------------------------------------
並列化の理解には下記のHPが役に立つ
http://www.kobitosan.net/ike/parallel/
------------------------------------------------------------------------------
OpenMP
OpenMP : http://openmp.org/wp/
例えば、http://openmp.org/wp/openmp-compilers/ にあるC言語のファイルを用いて下記のようにテストすればよい。
  1) hello.c という名称の新規ファイルを作成する
2) HP(http://openmp.org/wp/openmp-compilers/)にある灰色の枠をコピー&ペースト
  3) ターミナル上で、下記を打ち込む
    GUN Cの場合 gcc -fopenmp hello.c
    Intel Cの場合 icc -openmp hello.c
4) a.out と入力して実行すると、
    Hello from thread 0, nthreads 2
    Hello from thread 1, nthreads 2
    上記のような結果が出力される。
 5) これらが出力されれば、共有メモリ型並列計算を目指したコンパイルが可能となる。
文献HP:http://tech.ckme.co.jp/openmp.shtml
解説記事:http://jp.xlsoft.com/documents/intel/compiler/525J-001.pdf
------------------------------------------------------------------------------
OpenMPI
1) http://www.open-mpi.org/
2) tar zxvf openmpi-1.4.3.tar.gz
3) cd openmpi-1.4.3
4) コンパイラにより下記のように設定
   a) gfortran, gcc の場合
      ./configure -prefix=/usr/local/openmpi CXX=g++ CC=gcc FC=gfortran F90=gfortran F77=gfortran
   b) Intel Compiler の場合
      ./configure -prefix=/usr/local/openmpi CXX=icpc CC=icc FC=ifort F90=ifort F77=ifort
5) make
6) sudo su
7) make all install
8) 環境変数の設定
  a) .bahsrc
      export MPIROOT=/usr/local/openmpi
      export PATH=$MPIROOT/bin:$PATH
      export LD_LIBRARY_PATH=$MPIROOT/lib:$LD_LIBRARY_PATH
      export MANPATH=$MPIROOT/share/man:$MANPATH
  b) /etc/ld.so.conf 内に openmpi.conf を作成し、/usr/local/openmpi/lib を書き入れる
      /sbin/ldconfig を実行
  c) ホームディレクトリの .rhosts へ マシン名を書き入れる(rshを利用する場合に必要)。例えば下記のようにする。
  localhost.localdomain
  d) ホームディレクトリの hosts へ マシン名 cpu=コア数 を書き入れる(sshを利用する場合に必要)。例えば下記のようにする。 (cpu= で駄目な場合は slots= か?)
  localhost.localdomain cpu=2
  e) /usr/local/openmpi/etc/openmpi/mca-params.conf という名称のファイルを作り、plm_rsh_agent=rsh を書き込む。.bashrcに上記の名称のPATHを通しておく。
※ ubuntu などでは、/usr/local/ の部分を /opt/ や /home/ユーザー名 に変えたりする。
参考文献:http://nitrogen14.blog51.fc2.com/blog-entry-33.html
http://blog.livedoor.jp/rootan2007/archives/51117338.html
http://nowait.seesaa.net/article/182003087.html
http://macwiki.sourceforge.jp/wiki/index.php/MPI
http://www.cs.hiroshima-u.ac.jp/~yasuaki/dokuwiki/mpi:open_mpi
http://isc-w3.jaist.ac.jp/iscenter/index.php?id=336
http://blog.goo.ne.jp/sdpaninf/e/0d34877b706112e4313e72f3cb7fcf06
http://blogs.yahoo.co.jp/white18okozyo/26148983.html 
http://d.hatena.ne.jp/mog_la/20091225
http://docs.oracle.com/cd/E27069_01/html/E28031/ggxsd.html 
http://d.hatena.ne.jp/mog_la/20091225 
http://www2.rikkyo.ac.jp/web/tokiwa/menu/bioLib/parallel/mpi/openmpi.html
CentOS 6 などにおいて、yumでインストールした場合は下記を参考にして、探したいファイルがどこにあるかを調べると良い。
http://pkgs.org/centos-6-rhel-6/centos-rhel-i386/openmpi-1.4.1-4.3.el6.i686.rpm.html
------------------------------------------------------------------------------
MPICH
MPICH : http://www.mcs.anl.gov/research/projects/mpich2/downloads/index.php?s=downloads
一番下にあるMPICH-1をクリックするとダウンロードできる。
1) tar -zxvf mpich-1.2.7p1.tar.gz
2) cd mpich-1.2.7p1
3) sudo su
4) コンパイラにより下記のように設定
  a) gfortran, gcc の場合
      ./configure -prefix=/usr/local/mpich -opt=-O2 -c++=g++ -cc=gcc -fc=gfortran -f90=gfortran -f77=gfortran --with-arch=LINUX
  b) Intel Compiler の場合
      ./configure -prefix=/usr/local/mpich -opt=-O2 -c++=icpc -cc=icc -fc=ifort -f90=ifort -f77=ifort --with-arch=LINUX
5) make
6) make install
7) /usr/local/mpich/share/machines.LINUX にMPIで利用するマシン名の一覧を記入
8) 上記のprefixにした場合は、/usr/local/mpich/bin/mpif90 でコンパイルが可能になる
超並列計算研究会 : http://www.is.doshisha.ac.jp/SMPP/ 
  http://www.alde.co.jp/information/mpichcompilation/
※ 3) はrootであれば必要ない。
※ intel fortranでコンパイルする場合は、--prefix=/usr/local/lib/lam など異なったディレクトリにデータを格納するようにするのも良いだろう。-c++や-ccは、それぞれg++やgccにするかfortranしか必要なければ省略してもよい。
  ※ 完全なSMP単体の場合 3) ./configure -prefix=/usr/local/mpich -opt=-O2 -c++=icpc -cc=icc -fc=ifort -f90=ifort -f77=ifort --with-arch=LINUX -comm=shared となる(調査中)。

設定後に次の作業も行っておくと良い( Fedora, CentOS )
rsh-severとxinetdがインストールされているかどうか確認する。
rpm -qa rsh-sever
rpm -qa xinetd
起動時にrshを自動起動するようにする。
/sbin/chkconfig rsh on
起動時にrloginを自動起動するようにする。
/sbin/chkconfig rlogin on
起動時にxinetdを自動起動するようにする。
/sbin/service xinetd restart
.rhostsのファイルをホームディレクトリなどに並列計算するPC全てに作成する。
-------------
localhost
host1
host2
host3
-------------
chmod 600 〜/.rhosts

rsh localhost ホスト名
rsh host1 ホスト名

下記の方法は著者が成功した方法
MPICHを導入し、rshでデータ通信させる
1) root で .rhosts 名のファイルを作り、その中にhost nameを記入
2) /etc の hosts にhost nameを記入
3) /etc の hosts.equiv にhost nameを記入

------------------------------------------------------------------------------
MPICH2
MPICH2 : http://www.mcs.anl.gov/research/projects/mpich2/ 
  MPICH2を導入し、rshでデータを通信させる
------------------------------------------------------------------------------
LAM (sudo apt-get install で lam 関係を入れればgfortranでは必要ないかもしれない)
  1) http://www.lam-mpi.org/ , http://www.lam-mpi.org/7.1/download.php
  2) tar zxvf lam-7.1.4.tar.gz
  3) cd lam-7.1.4
  4) sudo su
  5) コンパイラにより下記のように設定
    a) gfortran, gcc の場合
      ./configure CC=gcc CXX=g++ FC=gfortran --prefix=/usr/lib/lam
    b) Intel Compiler の場合
      ./configure CC=icc CXX=icpc FC=ifort --prefix=/usr/lib/lam
  6) make
  7) make install
※ intel fortranでコンパイルする場合は、--prefix=/usr/local/lib/lam など異なったディレクトリにデータを格納するようにするのも良いだろう。
参考文献: http://biokids.org/?AMBER%2F%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB
------------------------------------------------------------------------------
BLACS 
BLACS : http://www.netlib.org/blacs/
1) tar zxvf mpiblacs.tgz
2) gunzip -c mpiblacs-patch03.tgz | tar xvf -
3) cd BLACS
4) cp BMAKES/Bmake.MPI-LINUX Bmake.inc
5) gedit Bmake.inc
  BTOPdir = $(HOME)/BLACS ←解凍したアドレスにする
  mpichの場合はそのままで良いが、openmpi の場合は下記のようになる。
  MPIdir = /usr/local/openmpi
  MPILIBdir =
  MPIINCdir = ($MPIdir)/include
  MPILIB =
  TRANSCOMM =-DUseMpi2
  F77 = /usr/local/openmpi/bin/mpif77
  CC = /usr/local/openmpi/bin/mpicc
  CCFLAGS        = -O2
6) make mpi
7) sudo or su
  ln -s /home/username/BLACS/LIB/blacs_MPI-LINUX-0.a /usr/local/lib/libblacs.a
  ln -s /home/username/BLACS/LIB/blacsF77init_MPI-LINUX-0.a /usr/local/lib/libblacsF77init.a
  ln -s /home/username/BLACS/LIB/blacsCinit_MPI-LINUX-0.a /usr/local/lib/libblacsCinit.a
参考
http://www.open-mpi.org/faq/?category=mpi-apps
http://blog.hpcsystems.com/?p=39
http://pelios.csx.cam.ac.uk/~mc321/siesta.html

ScaLAPACK
ScaLAPACK : http://www.netlib.org/scalapack/scalapack_home.html
1) tar zxvf scalapack.tgz
2) cd scalapack-1.8.0
3) cp INSTALL/SLmake.LINUX SLmake.inc
4) gedit SLmake.inc
    home = $(HOME)/scalapack-1.8.0 ←解凍したアドレスにする
    BLACSdir = $(HOME)/BLACS/LIB ←上記で解凍したアドレスにする
    SMPLIB  = 
    #SMPLIB = $(PVM_ROOT)/lib/$(PLAT)/libpvm3.a -lnsl -lsocket
    F77 = /usr/local/openmpi/bin/mpif77
    CC  = /usr/local/openmpi/bin/mpicc 
    CCFLAGS       = -O2
    BLASLIB       = /usr/local/lib/libblas.a
    LAPACKLIB     = /usr/local/lib/liblapack.a
    ◇ sudo apt-get install や yum install などのライブラリの場合 (ライブラリは作成された)
      BLASLIB = /usr/lib/libblas.a
      LAPACKLIB = /usr/lib/liblapack.a
    ◇ ATLASを用いる場合 (ライブラリは作成された)
      BLASLIB = /usr/local/atlas/lib/libf77blas.a /usr/local/atlas/lib/libatlas.a
      LAPACKLIB = /usr/local/atlas/lib/liblapack_netlib_atlas.a
    ◇ GotoBLASを用いる場合 (ライブラリは作成された)
      BLASLIB = /usr/local/lib/libgoto2.a
      LAPACKLIB = /usr/local/lib/libgoto2.a
5) make lib
6) sudo or su
  ln -s /home/username/scalapack-1.8.0/libscalapack.a /usr/local/lib/libscalapack.a
参考HP
http://www.open-mpi.org/faq/?category=mpi-apps

scalapack_installer
  scalapack_installer:http://www.netlib.org/scalapack/
  1) tar zxvf scalapack_installer.tgz
  2) cd scalapack_installer_0.96
  3)  ライブラリで下記のように選択する
    Netlibを用いる場合
      python setup.py --f90=gfortran --downblas --downblacs --downlapack
    ATLASを用いる場合
      python setup.py --f90=gfortran  --blaslib="/usr/local/atlas/lib/libf77blas.a /usr/local/atlas/lib/libatlas.a" --downblacs --lapacklib=/usr/local/atlas/lib/liblapack_netlib_atlas.a
    GotoBLASを用いる場合
      python setup.py --f90=gfortran  --blaslib="/usr/local/lib/libgoto2.a -lpthread -fopenmp" --downblacs --lapacklib=/usr/local/lib/libgoto2.a
 

□ ScaLAPACK (BLACS)
ScaLAPACK : http://www.netlib.org/scalapack/
1) tar zxvf scalapack.tgz
2) cd scalapack-2.0.2
3) cp SLmake.inc.example SLmake.inc
4) gedit SLmake.inc
  BLASLIB       = /usr/local/lib/libblas.a
  LAPACKLIB     = /usr/local/lib/liblapack.a
5) make lib
6) sudo or su
  ln -s /home/username/scalapack-2.0.2/libscalapack.a /usr/local/lib/libscalapack.a
※ ScaLapack ( is including Blacs )
------------------------------------------------------------------------------
spglib
1. download: http://spglib.sourceforge.net/
2. tar zxvf spglib-1.6.0.tar.gz
3. cd spglib*
4. export LIBS="-lgomp"
5. export CFLAGS="-fopenmp"
6. ./configure
7.  make
--------------------------------------------------------------------------------

CPUに対するgfortran でのオプション
  gfortran -mtune=native -march=native <- auto setting
  Intel Core2 CPU with 64-bit extensions: gfortran -mtune=core2  -march=core2 -m64
  Intel Core i7 CPU with 64-bit extensions: gfortran -mtune=corei7  -march=corei7 -m64
参考HP: http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86_002d64-Options.html
CPUに対するIntel Compilerでのオプション (調査中)
  Intel Core2 CPU with 64-bit extensions: ifort -axT
  Core i : ifort -xsse2 -axsse4.2
  Core2 45nm : ifort -xsse2 -axsse4.1
  Core2 65nm : ifort -xsse2 -axssse3
  当たり障りの無い設定 : ifort -axSSE4.2,SSE4.1,SSSE3,SSE3

参考HP: http://biokids.org/?Intel%20Compiler%2F%A5%B3%A5%F3%A5%D1%A5%A4%A5%EB%A5%AA%A5%D7%A5%B7%A5%E7%A5%F3
http://biokids.org/?AMBER%2F%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB
http://sourceforge.jp/magazine/09/09/07/0257257/2
Intel クイックリファレンスガイド:http://jp.xlsoft.com/documents/intel/compiler/qr_guide_jp.pdf
http://web.kudpc.kyoto-u.ac.jp/hpc/intel
------------------------------------------------------------------------------
附録:ライブラリ利用例(caseはプログラム名)
CentOS 5.5 (64bit), CPU AMD製

http://wwweic.eri.u-tokyo.ac.jp/computer/manual/altix/prog/prog1.html
---------------------------
Intel ifort + Intel MKL (non-commercial and personal use free)

ifort -parallel -O2 -check all -warn declarations -CB -fpe0 -traceback case.f -L/opt/intel/Compiler/11.1/072/mkl/lib/em64t -I/opt/intel/Compiler/11.1/072/mkl/include -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -o case

ifort -O2 -check all -warn declarations -CB -fpe0 -traceback case.f -L/opt/intel/Compiler/11.1/072/mkl/lib/em64t -I/opt/intel/Compiler/11.1/072/mkl/include -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -o case

ifort -parallel -O2 -check all -warn declarations -CB -fpe0 -traceback case.f -L/opt/intel/Compiler/11.1/072/mkl/lib/em64t -I/opt/intel/Compiler/11.1/072/mkl/include -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -o case

ifort -O2 -check all -warn declarations -CB -fpe0 -traceback case.f -L/opt/intel/Compiler/11.1/072/mkl/lib/em64t -I/opt/intel/Compiler/11.1/072/mkl/include -lmkl_intel -lmkl_sequential -lmkl_core -lpthread -o case

---------------------------
gfortran + Intel MKL (non-commercial and personal use free)

gfortran -O2 case.f -L/opt/intel/Compiler/11.1/072/mkl/lib/em64t -I/opt/intel/Compiler/11.1/072/mkl/include -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -o case

---------------------------
Intel ifort + AMD MKL (non-commercial and personal use free)

ifort -O2 -check all -warn declarations -CB -fpe0 -traceback case.f -static -L/opt/acml4.4.0/ifort64/lib -lacml -o case

---------------------------
gfortran + AMD MKL (all free)

gfortran -O2 case.f -static -L/opt/acml4.4.0/gfortran64/lib -lacml -o case

------------------------------------------------------------------------------

ScaLAPACK, LAPACK, BLACS and ATLAS on OpenMPI & gfortran installation

http://www.slajerek.demon.pl/others/tutorial/ScaLAPACK/

------------------------------------------------------------------------------

ScaLAPACK, LAPACK, BLACS and GotoBlas on OpenMPI & gfortran installation

------------------------------------------------------------------------------


QRコード
携帯用QRコード
アクセス数
ページビュー数
[無料でホームページを作成] [通報・削除依頼]