2. tarファイルを解凍する
>mv openmpi-1.4.5.tar.gz ~/
>mv mpich2-1.4.1p1.tar.gz ~/
>cd ~/
>tar -xvzf mpich2-1.4.1p1.tar.gz or >gunzip -c mpich2-1.4.1p1.tar.gz | tar -xof -
>tar -xvzf openmpi-1.4.5.tar.gz or >gunzip -c openmpi-1.4.5.tar.gz | tar -xof -
(参考) : http://www.mcs.anl.gov/petsc/documentation/installation.html>mv mpich2-1.4.1p1.tar.gz ~/
>cd ~/
>tar -xvzf mpich2-1.4.1p1.tar.gz or >gunzip -c mpich2-1.4.1p1.tar.gz | tar -xof -
>tar -xvzf openmpi-1.4.5.tar.gz or >gunzip -c openmpi-1.4.5.tar.gz | tar -xof -
3. Intel Compilerを使用して、configurationする。
a. OpenMPI
>cd ~/openmpi-1.4.5
>./configure CC=icc CXX=icpc F77=ifort FC=ifort --prefix=/usr/local/openmpi-1.4.5-intel12.1
(CFLAGS=-m64 CXXFLAGS=-m64 FCFLAGS=-m64 FFLAGS=-m64)
※括弧は省略可能。括弧の内容でエラーが出る可能性あり。 >cd ~/openmpi-1.4.5
>./configure CC=icc CXX=icpc F77=ifort FC=ifort --prefix=/usr/local/openmpi-1.4.5-intel12.1
(CFLAGS=-m64 CXXFLAGS=-m64 FCFLAGS=-m64 FFLAGS=-m64)
b. MPICH2
>cd ~/mpich2-1.4.1p1
>./configure CC=icc CXX=icpc F77=ifort FC=ifort --prefix=/usr/local/mpich2-1.4.1p1-intel12.1
(CFLAGS=-m64 CXXFLAGS=-m64 FCFLAGS=-m64 FFLAGS=-m64)
※括弧は省略可能。括弧の内容でエラーが出る可能性あり。 >./configure CC=icc CXX=icpc F77=ifort FC=ifort --prefix=/usr/local/mpich2-1.4.1p1-intel12.1
(CFLAGS=-m64 CXXFLAGS=-m64 FCFLAGS=-m64 FFLAGS=-m64)
※configureのオプションの説明
// --prefixにはインストールするディレクトリを指定する
// CCにはcコンパイラー、CXXにはc++コンパイラーを指定する
//(GNU cの場合は、CC=gcc, CXX=g++としておけば良い)
// F77、FC(F90のこと)にはFortranコンパイラーを指定する
// -m64は64bitの指定
// CCにはcコンパイラー、CXXにはc++コンパイラーを指定する
//(GNU cの場合は、CC=gcc, CXX=g++としておけば良い)
// F77、FC(F90のこと)にはFortranコンパイラーを指定する
// -m64は64bitの指定
※Intel compiler C&Fortranのパスが引けてるか必ず確認すること。
ここでエラーを喰らうようならシェルのチェックをしてから始めるように。
(参考) : http://blog.livedoor.jp/rootan2007/archives/51117338.html
(参考) : http://nowait.seesaa.net/article/182003087.html
4. makeする。
3.で「Configuration completed.」と出ればconfigurationが終わったのでmakeに入る。
>make
>su
>make install
or
>su
>make all install
>su
>make install
or
>su
>make all install
5. makeできたか確認する。
>ls -l /usr/local/
>cd /usr/local/openmpi-1.4.5-intel12.1/bin
>./mpicc -v
>./mpicc -help
などで確認。>cd /usr/local/openmpi-1.4.5-intel12.1/bin
>./mpicc -v
>./mpicc -help
6. パスを引く。
a. OpenMPI
#.tcshrcの例
set MPI = OpenMPI
# for openMPI
#
if ( x$?INTELCOMPILER == x"1" && x$MPI == x"OpenMPI" ) then
set path = ( /usr/local/openmpi-1.4.5-intel12.1/bin $path )
#setenv LD_LIBRARY_PATH /usr/lib64:/usr/local/openmpi-1.4.5-intel12.1/lib:$LD_LIBRARY_PATH
setenv LD_LIBRARY_PATH /usr/local/openmpi-1.4.5-intel12.1/lib:$LD_LIBRARY_PATH
# setenv OMPI_MCA_pls_rsh_agent /usr/bin/rsh
# setenv OMPI_MCA_mpi_show_handle_leaks 1
setenv MANPATH /usr/local/openmpi-1.4.5-intel12.1/man:`man -w`
endif
# for openMPI
#
if ( x$?INTELCOMPILER == x"1" && x$MPI == x"OpenMPI" ) then
set path = ( /usr/local/openmpi-1.4.5-intel12.1/bin $path )
#setenv LD_LIBRARY_PATH /usr/lib64:/usr/local/openmpi-1.4.5-intel12.1/lib:$LD_LIBRARY_PATH
setenv LD_LIBRARY_PATH /usr/local/openmpi-1.4.5-intel12.1/lib:$LD_LIBRARY_PATH
# setenv OMPI_MCA_pls_rsh_agent /usr/bin/rsh
# setenv OMPI_MCA_mpi_show_handle_leaks 1
setenv MANPATH /usr/local/openmpi-1.4.5-intel12.1/man:`man -w`
endif
b. MPICH2
#.tcshrcの例
set MPI = mpich
# for MPICH2
#
if ( x$?INTELCOMPILER == x"1" && x$MPI == x"mpich" ) then
set path = ( /usr/local/mpich2-1.4.1p1-intel12.1/bin $path )
# setenv LD_LIBRARY_PATH /usr/lib64:/usr/local/mpich2-1.4.1p1-intel12.1/lib:$LD_LIBRARY_PATH
setenv LD_LIBRARY_PATH /usr/local/mpich2-1.4.1p1-intel12.1/lib:$LD_LIBRARY_PATH
# setenv OMPI_MCA_pls_rsh_agent /usr/bin/rsh
# setenv OMPI_MCA_mpi_show_handle_leaks 1
setenv MANPATH /usr/local/mpich2-1.4.1p1-intel12.1/man:`man -w`
endif
set MPI = mpich
# for MPICH2
#
if ( x$?INTELCOMPILER == x"1" && x$MPI == x"mpich" ) then
set path = ( /usr/local/mpich2-1.4.1p1-intel12.1/bin $path )
# setenv LD_LIBRARY_PATH /usr/lib64:/usr/local/mpich2-1.4.1p1-intel12.1/lib:$LD_LIBRARY_PATH
setenv LD_LIBRARY_PATH /usr/local/mpich2-1.4.1p1-intel12.1/lib:$LD_LIBRARY_PATH
# setenv OMPI_MCA_pls_rsh_agent /usr/bin/rsh
# setenv OMPI_MCA_mpi_show_handle_leaks 1
setenv MANPATH /usr/local/mpich2-1.4.1p1-intel12.1/man:`man -w`
endif
7. mpiが使えるか確認する。
>which mpicc
>mpicc -help
などで確認。>mpicc -help
8. サンプルを実行してみる。
1. コンパイルする。
a. OpenMPI
>cd ~/openmpi-1.4.5/examples
>make
>make
b. MPICH2
>cd ~/mpich2-1.4.1p1/examples
>make
>make
2. 実行する。
>mpiexec -np 1 /home/usrname/(MPI)/examples/hello_c
>mpiexec -np 1 /home/usrname/(MPI)/examples/hello_f90
or
>mpirun -np 1 /home/usrname/(MPI)/examples/hello_c
>mpirun -np 1 /home/usrname/(MPI)/examples/hello_f90
>mpiexec -np 1 /home/usrname/(MPI)/examples/hello_f90
or
>mpirun -np 1 /home/usrname/(MPI)/examples/hello_c
>mpirun -np 1 /home/usrname/(MPI)/examples/hello_f90
-np:指定される数字は、並列計算に使用する CPU 数(ノードの数)です。
うまく実行できればそれぞれのノードからメッセージが返ってくるはずです。
(出力結果)
Hello, world, I am 0 of 1
3. machinefileの使い方
>mpirun -machinefile (machinefile name) -np (num of node) /(path)/(exec_file)
machinefile(HOST) ファイルには、並列使用するホスト名が記述されています。
1 行につき、ホスト名を一つ記載します。
(例)
仮にHost1~Host5までのホストがあり、machinefileがHOSTという名前の場合。
さらにHost1のみ4コアで、Host2が2コアで、他が1コアの場合。
>vi HOST
Host1
Host1
Host1
Host2
Host2
Host3
Host4
Host5
のように書けばよい。Host1
Host1
Host1
Host2
Host2
Host3
Host4
Host5
※mpiexec(mpirun)を実行するマシーンHost1(親ノード)については、
自動的に1コア足されるので、4コアの場合は、3つ書けばよい。
逆に、Host2は子ノードなので、2コアなら2つ書かないといけない。 (参考) : http://www.softek.co.jp/SPG/Pgi/TIPS/mpich.html
・ How to install MPICH2 without intel compiler
(参考) : http://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&cts=1331353994771&ved=0CDkQFjAB&url=http%3A%2F%2Fresearchweb.iiit.ac.in%2F~abu_saad%2Ffiles%2FInstalling_MPI.pdf&ei=g9laT_TlJuGZiQe0xbzODQ&usg=AFQjCNELzaRYAvVs3kVX2P_tMp5C4aYKlA&sig2=BxM_Bt8KWvKzbilDNIlGaw
0 件のコメント:
コメントを投稿