2012年3月10日土曜日

Install and Configure MPI by Intel Compiler

1. Download page for mpi

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



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)
      ※括弧は省略可能。括弧の内容でエラーが出る可能性あり。

  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のオプションの説明
   // --prefixにはインストールするディレクトリを指定する
   // 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

5. makeできたか確認する。
    >ls -l /usr/local/
    >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

  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

7. mpiが使えるか確認する。
    >which mpicc
    >mpicc -help
    などで確認。

8. サンプルを実行してみる。
   1. コンパイルする。
      a. OpenMPI
      >cd ~/openmpi-1.4.5/examples
      >make

      b. MPICH2
      >cd ~/mpich2-1.4.1p1/examples
      >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

   -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
       のように書けばよい。
       ※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 件のコメント:

コメントを投稿