*Code_Aster の並列化 [#pff8d5dc]

本家の情報:http://www.code-aster.org/forum2/viewtopic.php?id=14892
[[Code_Aster Forum:http://www.code-aster.org/forum2/viewtopic.php?id=14892]]と[[CAE Linux:http://caelinux.com/CMS/index.php]]の情報を参考に記述しています。

OS:Ubuntu 10.04~
Code_Aster : ver.10.6~
 *10.6を対象に記述していますが、11.1も同様の方法で並列化できます。~


ダウンロードしたファイルの保存先	~/Install_Files~
インストール先		/opt と /opt/aster~
~
1. ファイルのダウンロード~
  aster-full-src-10.3.0-3.noarch.tar.gz
  aster-full-src-10.6.0-3.noarch.tar.gz
  acml-4-4-0-gfortran-64bit.tgz
  ParMetis-3.1.1.tar.gz
  scalapack_installer.tgz
  ParMetis-3.2.0.tar.gz
  mpiblacs.tgz
  scalapack-1.8.0.tgz
  petsc-2.3.3.tar.gz
~
2. フォルダの所有者の変更(root → user)~
 $ sudo chown username /opt/
~
3. 必要なインストール~
 $ sudo apt-get install gfortran g++ python-dev python-numpy zlib1g-dev libatlas-base-dev grace bison flex python-qt4 checkinstall mpich2
~
4. acmlのインストール~
 $ cd ~/Install_Files/
 $ mkdir ./acml
 $ cp acml-4-4-0-gfortran-64bit.tgz ./acml
 $ cd ./acml
 $ tar xfvz acml-4-4-0-gfortran-64bit.tgz
 $ ./install-acml-4-4-0-gfortran-64bit.sh -accept -installdir=/opt/acml4.4.0
 $ echo /opt/acml4.4.0/gfortran64/lib | sudo tee -a /etc/ld.so.conf.d/amd_math.conf
 $ sudo ldconfig
~
5. Code_Asterのインストール~
 $ cd ~/Install_Files
 $ tar xfvz aster-full-src-10.3.0-3.noarch.tar.gz
 $ cd aster-full-src-10.3.0/
 $ tar xfvz aster-full-src-10.6.0-3.noarch.tar.gz
 $ cd aster-full-src-10.6.0/
 $ sed -i "s:PREFER_COMPILER\ =\ 'GNU':PREFER_COMPILER\ =\'GNU_without_MATH'\nMATHLIB=\ '-L/opt/acml4.4.0/gfortran64/lib -lacml':g" setup.cfg
 $ python setup.py install --prefix=/opt/aster
 (sed で書き換えた後の setup.cfg&ref(SALOME-Mecaの活用技術/setup.cfg);)~
~
6. .mpd.confの設定~
 $ cd ~/
 $ echo MPD_SECRETWORD=mr-secret > .mpd.conf
 $ chmod 600 .mpd.conf
 /opt/aster/etc/codeaster/aster-mpihosts を作成し、コンピュータ名:プロセッサー数を記入 例 : comp1:8~
 /opt/aster/etc/codeaster/mpi_hostfile を作成し、コンピュータ名:プロセッサー数を記入 例 : comp1:8~
~
7. scalapackのインストール~
 $ cd ~/Install_Files
 $ tar xfvz scalapack_installer.tgz
 $ cd scalapack_installer_0.96/
 $ ./setup.py  --blaslib=/opt/acml4.4.0/gfortran64/lib/libacml.a --downblacs --lapacklib=/opt/acml4.4.0/gfortran64/lib/libacml.a --mpicc=mpicc --mpif77=mpif90 --mpiincdir=/usr/include/mpich2/ --prefix=/opt/scalapack --f90=/usr/bin/gfortran
 $ mkdir /opt/scalapack
 $ mkdir /opt/scalapack/build
 $ mkdir /opt/scalapack/lib
 $ cp ~/Install_Files/mpiblacs.tgz /opt/scalapack/build
 $ cp ~/Install_Files/scalapack-1.8.0.tgz /opt/scalapack/build
 $ cd /opt/scalapack/build
 $ tar xfvz mpiblacs.tgz
 $ tar xfvz scalapack-1.8.0.tgz
 $ cd /opt/scalapack/build/BLACS
 $ cp ./BMAKES/Bmake.MPI-LINUX ./Bmake.inc
 Bmake.incを添付ファイルのように書き換える&ref(Bmake.inc);~
 $ make mpi
 $ cp LIB/*.a /opt/scalapack/lib
 $ cd /opt/scalapack/build/scalapack-1.8.0
 $ cp SLmake.inc.example SLmake.inc
 SLmake.incを添付ファイルのように書き換える&ref(SLmake.inc);~
 $ make
 $ cp libscalapack.a /opt/scalapack/lib
~
8. ParMetisのインストール~
 $ cp ~/Install_Files/ParMetis-3.1.1.tar.gz /opt
 $ cp ~/Install_Files/ParMetis-3.2.0.tar.gz /opt
 $ cd /opt
 $ tar xfvz ParMetis-3.1.1.tar.gz
 $ cd ParMetis-3.1.1
 $ tar xfvz ParMetis-3.2.0.tar.gz
 $ cd ParMetis-3.2.0
 Makefile.in に 'XTRALIBS = -lmpich' を加える~
 $ make
~
9. mumpsのインストール~
 $ cp ~/Install_Files/aster-full-src-10.3.0/SRC/mumps-4.9.2.tar.gz /opt/
 $ cp ~/Install_Files/aster-full-src-10.6.0/SRC/mumps-4.9.2-2.tar.gz /opt/
 $ cd /opt
 $ tar xfvz mumps-4.9.2.tar.gz
 $ tar xfvz mumps-4.9.2-2.tar.gz
 $ mv mumps-4.9.2 mumps-4.9.2_mpi
 $ cd mumps-4.9.2_mpi/
 Makefile.inc を添付ファイルのように書き換える&ref(SALOME-Mecaの活用技術/Makefile.inc);~
 Makefile.inc を添付ファイルのように書き換える&ref(Makefile.inc);~
 $ make all
~
10. PAR10.3の作成~
10. petscのインストール
 $ cp ~/Install_Files/petsc-2.3.3.tar.gz /opt
 $ cd /opt
 $ tar xfvz petsc-2.3.3.tar.gz
 $ cd petsc-2.3.3-p16
 $ ./config/configure.py --with-mpi-dir=/usr/lib --with-blas-lapack-lib=/opt/acml4.4.0/gfortran64/lib/libacml.a --with-debugging=0 COPTFLAGS=-O3 FOPTFLAGS=-O3 --with-shared=0 --configModules=PETSc.Configure --optionsModule=PETSc.compilerOptions  --with-x=0
 $ PETSC_ARCH=linux-gnu-c-opt; export PETSC_ARCH
 $ PETSC_DIR=/opt/petsc-2.3.3-p16; export PETSC_DIR
 $ make
~
11. PAR10.6の作成~
 /opt/aster/etc/codeaster/asrun を開き、mpirun_cmd の部分を下のように書き換える~
 mpirun_cmd : mpiexec -machinefile %(mpi_hostfile)s -n %(mpi_nbcpu)s %(program)s~
 $ cd /opt/aster
 $ cp -ax STA10.3 PAR10.3
 $ cd /opt/aster/PAR10.3
 profile.sh を添付ファイルのように書き換える&ref(SALOME-Mecaの活用技術/profile.sh);~
 config.txt  を添付ファイルのように書き換える&ref(SALOME-Mecaの活用技術/config.txt);~
 $ ../bin/as_run --vers=PAR10.3 --make clean
 $ ../bin/as_run --vers=PAR10.3 --make clean bibf90/mumps
 $ cp -ax STA10.6 PAR10.6
 $ cd /opt/aster/PAR10.6
 profile.sh を添付ファイルのように書き換える&ref(profile.sh);~
 config.txt  を添付ファイルのように書き換える&ref(config.txt);~
 *config.txtのID_PERFの項は自身のコンピュータ名に書き換えてください。~
 *11.1の場合はconfig.txtのPAR10.6をPAR11.1に置き換えてください。~
 $ ../bin/as_run --vers=PAR10.6 --make clean
 $ ../bin/as_run --vers=PAR10.6 --make clean bibf90/mumps
 $ ../bin/as_run --vers=PAR10.6 --make clean bibf90/petsc/
 $ mpd &
 $ ../bin/as_run --vers=PAR10.3 --make
 $ ../bin/as_run --vers=PAR10.6 --make
 DIAGNOSTIC JOB : OK と表示されれば成功~
 /opt/aster/etc/codeaster/aster を開いて、 vers : STA10.3 の下に vers : PAR10.3 を追加すればASTKに PAR10.3 が登録される~
 /opt/aster/etc/codeaster/aster を開いて、 vers : stable の下に vers : PAR10.6 を追加すればASTKに PAR10.6 が登録されます~
~
11. ASTK の設定~
12. comm の設定~
 下図のように、MECA_STATIQUEやSTAT_NON_LINEのオプションで並列ソルバーを選択してください。~
 b_mumps以下の項目はオプションですので、任意で設定してください。
#ref(SALOME-Mecaの活用技術/MUMPS_option.jpg)
~
13. ASTK の設定~
 Options でプロセッサー数を設定~
   mpi_nbcpu=プロセッサー数
   mpi_nbnoeud=コンピューター数
 2台のコンピューターがそれぞれ10個のプロセッサーを持ち、合計20個のプロセッサーがある場合は、~
   mpi_nbcpu=20、mpi_nbnoeud=2
 下図のようにASTKでVersionをPAR10.6に切り替えます。
#ref(ASTK10.6.jpg)
 Runボタンを押せば並列計算が実行されます。
~
12. comm の設定~
13. 並列化の効果~
 添付のJPGか、PDFの最後の2ページを見てください。内容は同じです。&ref(SALOME-Mecaの活用技術/Parallelize_3.pdf);~
~
*バージョン11.0の並列化は、上記の資料と同様の手順で実行できる。ただし、11.0 と 10.3 で config.txt が違うため、PAR10.3 の config.txt は流用できない。そのため、STA10.3 → PAR10.3 で行ったものと同様の書き換えを、PAR11.0 の config.txt に行う必要がある。


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS