Code Aster 13.4 on Ubuntu 14.04

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を追加します。

以上です。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です