Ubuntu 16.04でParallel版のCode Aster 13.4の構築がうまくいかないので、基本にもどって、Ubuntu 14.04上で構築しました。
参考にしたのは、こちら
0.準備
Cmake 3.0以降への更新:mfrontの構築のために行います。
$sudo apt-get install software-properties-common
$sudo add-apt-repository ppa:george-edison55/cmake-3.x
$sudo apt-get update
$sudo apt-get install cmake
gccとg++を4.9以降へ:Salome-meca2017をインストールするために行います。
$sudo add-apt-repository ppa:ubuntu-toolchain-r/test $sudo apt-get update $sudo apt-get install gcc-4.9 g++-4.9
そして
$sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 10 $sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.9 20 $sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 10 $sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20 $sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 10 $sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.9 20 $sudo rm /usr/bin/cpp $sudo update-alternatives --install /usr/bin/cpp cpp /usr/bin/cpp-4.8 10 $sudo update-alternatives --install /usr/bin/cpp cpp /usr/bin/cpp-4.9 20 $sudo update-alternatives --install /usr/bin/cc cc /usr/bin/gcc 30 $sudo update-alternatives --set cc /usr/bin/gcc $sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/g++ 30 $sudo update-alternatives --set c++ /usr/bin/g++
ついでにgfortranも4.9にしておきました。
$sudo apt-get install gfortran-4.9 $ln -s /usr/bin/gfortran-4.9 /usr/bin/gfortran $echo "alias gfortran=gfortran-4.9" >> ~/.bashrc
1.通常版のCodeAsterのBuild
OpenBLASを組み込んだ通常版のCodeAsterをbuildします。
(1)OpenBLASとScalapackの構築
参考のとおりです。
OpenBLASを適当な場所に展開します。
$ cd OpenBLAS-0.2.18 $ make NO_AFFINITY=1 USE_OPENMP=1 $ make PREFIX=/opt/OpenBLAS install $ echo /opt/OpenBLAS/lib | sudo tee -a /etc/ld.so.conf.d/openblas.conf $ sudo ldconfig
ScaLAPACKを適当な場所に展開します
$ cd scalapack_installer_1.0.2 $ ./setup.py --lapacklib=/opt/OpenBLAS/lib/libopenblas.a --mpicc=mpicc --mpif90=mpif90 --mpiincdir=/usr/lib/openmpi/include --ldflags_c=-fopenmp --ldflags_fc=-fopenmp --prefix=/opt/scalapack
(2) Mumps-5.1.1の構築
setup.pyを使ったインストールではMumps-5.1.1でエラーが発生したので、Mumpsは別途buildしました。
/opt/aster/publicの下にmumps-5.1.1を展開します
$cd mumps-5.1.1 $make all
Makefile.incは次のとおり
(3)setup.pyの変更
$ cd aster-full-src-13.4.0/ $ sed -i "s:PREFER_COMPILER\ =\ 'GNU':PREFER_COMPILER\ =\'GNU_without_MATH'\nMATHLIB=\ '/opt/OpenBLAS/lib/libopenblas.a':g" setup.cfg $ python setup.py install
(4) setup.pyの実行
Mumpsは既に作成済なので、再buildの問いに対しては”n”とします。
2.並列版CodeAsterのBuild
(1)Parmetisのbuild
parmetis-4.0.3を適当な場所に展開します。そして
$cd parmetis-4.0.3 $make config prefix=/opt/parmetis-4.0.3 $make $make install
動作確認は
$cd Graphs $mpirun -np 8 ptest rotor.graph rotor.graph.xyz $mpirun -np 32 ptest rotor.graph rotor.graph.xyz
を実行します。
(2)scotchのbuild
/optの下にscotch-6.0.4を展開します。
$cd /opt/scotch-6.0.4/src $make scotch esmumps $make ptscotch ptesmumps
Makefile.incは次のとおり
(3)Mumpsのbuild
/optの下にmumps-5.1.1を展開します。そしてフォルダ名はmumps-5.1.1-mpiに変更します。
フォルダ内に移動します。
$cd mumps-5.1.1-mpi
Makefile.incはつぎのとおり.
そして
$make all
(4)wafの実行
Ubuntu_gnu.pyはこちら(Download後にファイル名をUbuntu_gnu.pyに変更してください)
Ubuntu_gnu_mpi.pyはこちら(Download後にファイル名をUbuntu_gnu_mpi.pyに変更してください)
それを、CodeAsterのソースコードがあるフォルダーに置きます。
$cd aster-full-src-13.4.0/SRC/aster-13.4.0 $ export ASTER_ROOT=/opt/aster $./waf configure --use-config-dir=$ASTER_ROOT/13.4/share/aster --use-config=Ubuntu_gnu_mpi --prefix=$ASTER_ROOT/PAR13.4 $./waf build -p
以上で、petscなしのCodeAsterが/opt/aster/PAR13.4に置かれます。/opt/aster/etc/codeaster/asterにPAR13.4を追加します。
3. Commについて
ASTKを起動してPAR13.4で計算するとき、nbcpu>1でmpi_nbcpu=1は実行できたのですが、nbcpu≥1でmpi_nbcpu>1ではエラーが出ます。これについて、CodeAster Forumで対策が掲示されていました。
テキストエディタ―で、AFFE_MODELEの一部分を変更します。(messファイルを参照するとわかりやすいと思います。なぜか、Eficasでこの部分の編集が行えませんでした。)
AFFE_MODELE(MAILLAGE=meshinit, AFFE=_F(PHENOMENE='MECANIQUE', TOUT='OUI', MODELISATION=('3D', ),), INFO=1, VERI_JACOBIEN='OUI', DISTRIBUTION=_F(PARTITIONNEUR='METIS', METHODE='SOUS_DOMAINE',), );
を
AFFE_MODELE(MAILLAGE=meshinit, AFFE=_F(PHENOMENE='MECANIQUE', TOUT='OUI', MODELISATION=('3D', ),), INFO=1, VERI_JACOBIEN='OUI', DISTRIBUTION=_F(PARTITIONNEUR='SCOTCH', METHODE='SOUS_DOMAINE',), );
同じcommを使って、他の並列版ではないCodeAsterで計算する場合は、DISTRIBUTIONのところはコメントアウトしておきます。
次に、PETScの追加です。
5.PETSCの追加
(1)PETSCのbuild
$ cp ~/Install_Files/petsc-3.7.6.tar.gz /opt $ cd /opt $ tar xfvz petsc-3.7.6.tar.gz $ cd petsc-3.7.6
そして、configureです。
$ ./config/configure.py --with-openmpi-dir=/usr/lib/openmpi --with-blas-lapack-lib=/opt/OpenBLAS/lib/libopenblas.a --download-hypre=yes --download-ml=yes --with-debugging=0 COPTFLAGS=-O1 CXXOPTFLAGS=-O1 FOPTFLAGS=-O1 --configModules=PETSc.Configure --optionsModule=PETSc.compilerOptions --with-x=0 --with-shared-libraries=0 --download-mumps=yes --with-scalapack-dir=/opt/scalapack --with-ptscotch-dir=/opt/scotch-6.0.4 --with-parmetis-dir=/opt/parmetis-4.0.3 --with-metis-dir=/opt/aster/public/metis-5.1.0 --download-mumps-commit=v5.1.1-p1 --with-ssl=0
そして
$ make PETSC_DIR=/opt/petsc-3.4.5 PETSC_ARCH=arch-linux2-c-opt all $ make PETSC_DIR=/opt/petsc-3.4.5 PETSC_ARCH=arch-linux2-c-opt test
として構築と確認を行います。
(2)CodeAsterのbuild
Ubuntu_gnu_mpi.pyをこちら(Download後にファイル名をUbuntu_gnu_mpi.pyに変更してください)
それを、CodeAsterのソースコードがあるフォルダーに置きます。
$cd aster-full-src-13.4.0/SRC/aster-13.4.0 $ export ASTER_ROOT=/opt/aster $./waf configure --use-config-dir=$ASTER_ROOT/13.4/share/aster --use-config=Ubuntu_gnu_mpi --prefix=$ASTER_ROOT/PAR13.4PE $./waf build -p
以上で、petscなしのCodeAsterが/opt/aster/PAR13.4PEに置かれます。/opt/aster/etc/codeaster/asterにPAR13.4PEを追加します。
以上です。
コメント