CODE ASTER SSLL107Aを試してみました

断面性能の計算を行ってみました。

サンプルのSSLL107Aです。アングル材の断面性能の計算です。medファイルをSalomeで表示してみました

ASTKを起動して、commとmedを読み込むようにします。結果はresファイルに出力されます。

まずは、通常版の結果です。

次に、Parallel版です。petscが入っているのが分かります。nbcpuは1でないと実行できませんでしたが、結果は通常版と同じでした。

断面性能の計算は無事終了しました。

PETSC with MUMPS-5.1.2

PETSCのconfigureの”–with-mumps-dir”がうまく動かないので”–download-mumps=1”と”–download-mumps-commit=v5.1.1-p1″を使用してのですが、petscのフォルダ内のexternalpackagesを確認するとmumps-5.0.2でした。

PETSCのBitbucketの記事を確認すると、configureで使用されるファイルを修正する必要がありそうです。

config/BuildSystem/config/packages/MUMPS.py のなかで

class Configure(config.package.Package):
 def __init__(self, framework):
 config.package.Package.__init__(self, framework)
 self.gitcommit = 'MUMPS_5.0.2-p2.tar.gz'
 self.download = ['git://https://bitbucket.org/petsc/pkg-mumps.git',
 'http://ftp.mcs.anl.gov/pub/petsc/externalpackages/MUMPS_5.0.2-p2.tar.gz']

の部分を

class Configure(config.package.Package):
 def __init__(self, framework):
 config.package.Package.__init__(self, framework)
 self.gitcommit = 'v5.1.2-p1'
 self.download = ['git://https://bitbucket.org/petsc/pkg-mumps.git',
 'https://bitbucket.org/petsc/pkg-mumps/get/'+self.gitcommit+'.tar.gz']
 self.downloaddirnames = ['petsc-pkg-mumps']

とします。configureを実行するとConfig.log内は、

Checking for a functional MUMPS
 Looking for MUMPS at git.mumps, hg.mumps or a directory starting with ['petsc-pkg-mumps']
 Found a copy of MUMPS in petsc-pkg-mumps-968459b56e28

となっていました。externalpackagesのpetsc-pkg-mumps-968459b56e28のREADMEを確認したら

===========================================
MUMPS 5.1.2
===========================================

となっていました。並列版CodeAsterは今のところ動いています。この辺りは、build前に開発状況を確認しないといけませんね。

 

Retry: Code Aster 13.4 without PETSc on Ubuntu 16.04

Ubuntu 14.04の経験を生かして、Ubuntu 16.04での構築に再挑戦です。

参考はこちら

0.準備

apt-getを使って必要なものをインストールします。

$ sudo apt-get install gfortran g++ python-dev python-qt4 python-numpy liblapack-dev libblas-dev tcl tk zlib1g-dev bison flex checkinstall libx11-dev cmake qt4-dev-tools libmotif-dev
また、mfrontの構築のために、boostとdoxygenをインストールします。
$sudo apt-get install libboost-all-dev doxygen
今回は、openmpiの3.0.0を用意しました。
$tar xfvz openmpi-3.0.0.tar.gz
$cd ./openmpi-3.0.0
$./configure --prefix=/usr/local
$sudo make all install
このあと

~/.bashrcを開いて、ファイルの最後に次の文を付け加えます。

PATH=/usr/loca/bin:$PATH
LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
MANPATH=/usr/local/share/man:$MANPATH
export PATH LD_LIBRARY_PATH MANPATH

次に /etc/ld.so.conf.d/ を管理者権限で開いて”openmpi.conf”というファイルを作り、次の内容を記述します。

/usr/local/lib
最後に$sudo ldconfigを実行します。
1.OpenBLASのインストール
$ tar xfvz OpenBLAS-0.2.20.tar.gz
$ cd OpenBLAS-0.2.20
$ 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

以上です。

2.Asterのインストール
CodeAsterのソースコードをダウンロードして展開したら、参考のとおりに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

以上です。参考のとおりに並列計算用のホストファイルを作成しておきます。

$ echo "$HOSTNAME cpu=$(cat /proc/cpuinfo | grep processor | wc -l)" > /opt/aster/etc/codeaster/mpi_hostfile
3.ScaLAPACKのインストール
$ tar xfvz scalapack_installer.tgz
$ cd scalapack_installer
$ ./setup.py --lapacklib=/opt/OpenBLAS/lib/libopenblas.a --mpicc=mpicc --mpif90=mpif90 --mpiincdir=/usr/local/include --ldflags_c=-fopenmp --ldflags_fc=-fopenmp --prefix=/opt/scalapack
以上です。

4. parmetis

ソースコードをダウンロードして展開します。

$ tar xvf parmetis-4.0.3.tar.gz
$ cd parmetis-4.0.3
$ make config prefix=/opt/parmetis-4.0.3
$ make

完了したら、動作確認をします。

$ cd Graphs
$ mpirun -np 8 ptest rotor.graph rotor.graph.xyz

特にエラーが出なければ終了です。

5.scotch

Codeasterのソースコードに含まれているscotch-6.0.4-aster5.tar.gzを/opt下に展開します。

$ cd /opt/scotch-6.0.4/src

Makefile.incはこちら

$ make scotch esmumps
$ make ptscotch ptesmumps

完了したら、動作確認です。

$make check
$make ptcheck

問題なければ完了です。

6.Mumps

Codeasterのソースコードに含まれているmumps-5.1.1-aster2.tar.gzを/opt下に展開します。フォルダ名はmumps-5.1.1-mpiとしています。

$ cd /opt/mumps-5.1.1-mpi

Makefile.incはこちら

$ make all

終了したらexamplesに移動して動作チェックを行います。

7.Petscのインストール

petsc-3.7.7.tar.gzをダウンロードし、/opt下に展開します。まず、configです。

$ cd /opt/petsc-3.7.7
$ ./configure --configModules=PETSc.Configure --optionsModule=config.compilerOptions --with-mpi-dir=/usr/local --with-blas-lapack-lib=/opt/OpenBLAS/lib/libopenblas.a --download-hypre=yes --download-ml=yes --with-debugging=0 COPTFLAGS=-O1 CXXOPTFLAGS=-O1 FOPTFLAGS=-O1 --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-p3 --with-ssl=0

そしてmakeです。

make PETSC_DIR=/opt/petsc-3.7.7 PETSC_ARCH=arch-linux2-c-opt all

次に動作確認です。

make PETSC_DIR=/opt/petsc-3.7.7 PETSC_ARCH=arch-linux2-c-opt test
make PETSC_DIR=/opt/petsc-3.7.7 PETSC_ARCH=arch-linux2-c-opt streams

以上です。

8.wafを使って並列版Code Asterの構築

/opt/aster/etc/codeaster/asrunをテキストエディタで開いて、mpi_get_procid_cmdの部分を書き換えます。
mpi_get_procid_cmd : echo $OMPI_COMM_WORLD_RANK
そしてmpirunの部分を次のように書き換えます。
mpirun_cmd : mpirun -np %(mpi_nbcpu)s %(program)s

参考のとおりにCode_Asterのソースファイルを解凍し移動します。

Ubuntu_gnu.pyはこちら hdf5のembedを止めています。

Ubuntu_gnu_mpi.pyはこちら

$ 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
$ ./waf install

Warningがいっぱいでますが、構築はできました。

最後に、/opt/aster/etc/codeaster/asterを開いて、 vers : PAR13.4:/opt/aster/PAR13.4PE/share/aster を追加します。

ASTKから並列版の実行時ですが、ここでも紹介しましたがcommの中身の修正が必要でした。

以上です。

 

 

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

以上です。

Failed:Code Aster 13.4 parallel with PETSc on Ubuntu 16.04 -2

もう少し試してみました。

Petscのbuildで

--download-mumps=Yes

の代わりに

--download-mumps=/opt/mumps-5.1.1-aster2.tar.gz

としたのですが、configureが通りませんでした。

次に、

./config/configure.py --configModules=PETSc.Configure --optionsModule=config.compilerOptions --with-mpi-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=no --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

とmumpsを外してbuildしました。petscのbuildとtestは問題なかったのですが、code asterのbuildで、エラーがでてしまいました。

[8008/8019][99%][\][===============================================================================================================> ][4m4.290s]bibfor/matrix/augmented_lagrangian_context_type.F90.1.o: In function `__augmented_lagrangian_context_type_MOD_new_augmented_lagrangian_context':
augmented_lagrangian_context_type.F90:(.text+0x443): undefined reference to `matmumpsseticntl_'
augmented_lagrangian_context_type.F90:(.text+0x49a): undefined reference to `matmumpsseticntl_'
augmented_lagrangian_context_type.F90:(.text+0x4ef): undefined reference to `matmumpsseticntl_'
augmented_lagrangian_context_type.F90:(.text+0x544): undefined reference to `matmumpsseticntl_'
augmented_lagrangian_context_type.F90:(.text+0x599): undefined reference to `matmumpssetcntl_'
collect2: error: ld returned 1 exit status

[8008/8008][100%][|][==============================================================================================================>][4m11.125s]
Waf: Leaving directory `/home/xxx/dev/codeaster/src/build/release'
Build failed
 -> task in 'asterexec' failed (exit status 1): 
 task details in: /home/xxx/dev/codeaster/src/build/release/asterexec.log
caelinuxU16-vm:~/dev/codeaster/src$

エラーが出てしまいました。以上、参考まで。

Failed: Code Aster 13.4 Parallel with PETSc on Ubuntu 16.04

いまさらですが、Code Aster 12.6のParallel版をつくろうと思い,

Ubuntu14.04上ではhttps://sites.google.com/site/codeastersalomemeca/home/code_asterno-heiretuka/code_asterno-heiretuka-12-6の方法で構築できたのですが、Ubuntu16.04では・・・失敗しました。

でもCode Aster 13.4再挑戦です(2017/09/17)。でも動作確認したら、MEDとHDF5がない!といわれて動きませんでした。とほほ(2017・09・26)

1.OpenBLAS

先のサイトの通りです。

$ cd ~/Install_Files/
$ tar xfvz OpenBLAS-0.2.18..tar.gz
$ 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

2.通常のCodeAsterのインストール

、先のサイトの通りです。

$ cd ~/Install_Files
$ tar xfvz aster-full-src-12.6.0-3.noarch.tar.gz
$ cd aster-full-src-12.6.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
並列計算用のホストファイルを作成するも参考のとおりに作成します。
$ echo "$HOSTNAME cpu=$(cat /proc/cpuinfo | grep processor | wc -l)" > /opt/aster/etc/codeaster/mpi_hostfile

3.ScaLAPACK

これも先のサイトと同じ。

$ cd ~/Install_Files
$ tar xfvz scalapack_installer.tgz
$ 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/scalapac

BLACS: error running BLACS test routines xCbtest というエラーが最後に表示されても、/opt/scalapack/lib/libscalapack.aのファイルが作成されていればOKなのも同じです。

ここまでは問題ありません。

4.Parmetis

$cd ~/
$tar xfvz parmetis-4.0.3.tgz 
$cd ~/parmetis-4.0.3
$make config -prefix=/opt/parmetis-4.0.3
$make all
$make install

5.SCOTCHとPTSCOTCH

$cd /opt
$ tar xfvz scotch-6.0.4.tgz
$cd /opt/scotch-6.0.4/src

そして、Makefile.incを修正します。

EXE =
LIB = .a
OBJ = .o

MAKE = make
AR = ar
ARFLAGS = -ruv
CAT = cat
CCS = gcc
CCP = mpicc
CCD = gcc -I /usr/include/mpi
CFLAGS = -O3 -DCOMMON_FILE_COMPRESS_GZ -DCOMMON_PTHREAD -DCOMMON_RANDOM_FIXED_SEED -DSCOTCH_RENAME -DSCOTCH_RENAME_PARSER -DSCOTCH_PTHREAD -DSCOTCH_DETERMINISTIC -Drestrict=__restrict
CLIBFLAGS =
LDFLAGS = -lz -lm -lrt -lpthread
CP = cp
LEX = flex -Pscotchyy -olex.yy.c
LN = ln
MKDIR = mkdir
MV = mv
RANLIB = ranlib
YACC = bison -pscotchyy -b y

そして、

$make scotch esmumps

../esumps内に出来たlibesumps.aは..scotch-6.0.4/libにcopyしておきます。

$make ptscotch ptesmumps

6.Mumps

Code_Asterのソースファイル中にあるmumps-5.1.1、/optにコピーしてmpiコンパイラでコンパイルします。
$ cp ~/Install_Files/aster-full-src-13.4.0/SRC/mumps-5.1.1-aster2.tar.gz /opt/
$ cd /opt
$ tar xfvz mumps-5.1.1-aster2.tar.gz
$ mv mumps-5.1.1 mumps-5.1.1_mpi2
$ cd mumps-5.1.1_mpi2/

Makefile.incの中を

#
# This file is part of MUMPS 4.10.0, built on Tue May 10 12:56:32 UTC 2011
# modified for Code_Aster setup (see fields like ?CC?)
#
#Begin orderings

# NOTE that PORD is distributed within MUMPS by default. If you would like to
# use other orderings, you need to obtain the corresponding package and modify
# the variables below accordingly.
# For example, to have Metis available within MUMPS:
# 1/ download Metis and compile it
# 2/ uncomment (suppress # in first column) lines
# starting with LMETISDIR, LMETIS
# 3/ add -Dmetis in line ORDERINGSF
# ORDERINGSF = -Dpord -Dmetis
# 4/ Compile and install MUMPS
# make clean; make (to clean up previous installation)
#
# Metis/ParMetis and SCOTCH/PT-SCOTCH (ver 5.1 and later) orderings are now available for MUMPS.
#

#SCOTCHDIR = ?HOME_SCOTCH?
SCOTCHDIR = /opt/scotch-6.0.4
ISCOTCH = -I$(SCOTCHDIR)/include/

# You have to choose one among the following two lines depending on
# the type of analysis you want to perform. If you want to perform only
# sequential analysis choose the first (remember to add -Dscotch in the ORDERINGSF
# variable below); for both parallel and sequential analysis choose the second 
# line (remember to add -Dptscotch in the ORDERINGSF variable below)

LSCOTCH = -L$(SCOTCHDIR)/lib -lesmumps -lscotch -lscotcherr
#LSCOTCH = -L$(SCOTCHDIR)/lib -lptesmumps -lptscotch -lptscotcherr



LPORDDIR = $(topdir)/PORD/lib/
IPORD = -I$(topdir)/PORD/include/
LPORD = -L$(LPORDDIR) -lpord

METISDIR = /opt/aster/public/metis-5.1.0
#LMETISDIR = ?HOME_METIS?/lib
LMETISDIR = $(METISDIR)/lib/

IMETIS = -I$(METISDIR)/include/

# You have to choose one among the following two lines depending on
# the type of analysis you want to perform. If you want to perform only
# sequential analysis choose the first (remember to add -Dmetis in the ORDERINGSF
# variable below); for both parallel and sequential analysis choose the second 
# line (remember to add -Dparmetis in the ORDERINGSF variable below)

LMETIS = -L$(LMETISDIR) -lmetis
#LMETIS = -L$(LMETISDIR) -lparmetis -lmetis

# The following variables will be used in the compilation process.
# Please note that -Dptscotch and -Dparmetis imply -Dscotch and -Dmetis respectively.
#ORDERINGSF = -Dscotch -Dmetis -Dpord -Dptscotch -Dparmetis
#ORDERINGSF = -Dscotch -Dmetis -Dpord -Dparmetis
#ORDERINGSF = -Dpord -Dmetis
#ORDERINGSF = -Dpord -Dparmetis -Dmetis
ORDERINGSF = -Dscotch -Dpord -Dmetis
ORDERINGSC = $(ORDERINGSF)

LORDERINGS = $(LMETIS) $(LPORD) $(LSCOTCH)
IORDERINGSF = $(ISCOTCH) $(IMETIS)
IORDERINGSC = $(IMETIS) $(IPORD) $(ISCOTCH)

#End orderings
########################################################################
################################################################################

PLAT =
LIBEXT = .a
OUTC = -o 
OUTF = -o 
RM = /bin/rm -f
CC = mpicc
FC = mpif90
FL = mpif90
# WARNING: AR must ends with a blank space!
AR = ar vr 
#RANLIB = ranlib
RANLIB = echo
# See point 17 in the FAQ to have more details on the compilation of mpich with gfortran
SCALAP = /opt/scalapack/lib/libscalapack.a \
 /opt/OpenBLAS/lib/libopenblas.a

INCPAR = -I/usr/include/openmpi $(IPORD)
LIBPAR = $(SCALAP) -L/usr/lib -lmpi

#LIBPAR = $(SCALAP) -L/usr/local/lib/ -llamf77mpi -lmpi -llam
#LIBPAR = $(SCALAP) -lutil -ldl -lpthread
#LIBPAR = -lmpi++ -lmpi -ltstdio -ltrillium -largs -lt
INCSEQ = -I$(topdir)/libseq
LIBSEQ = -L$(topdir)/libseq -lmpiseq
#LIBBLAS = -L/usr/lib/xmm/ -lf77blas -latlas
LIBBLAS = -L/opt/OpenBLAS/lib/ -lopenblas
LIBOTHERS = -lpthread
#Preprocessor defs for calling Fortran from C (-DAdd_ or -DAdd__ or -DUPPER)
CDEFS = -DAdd_

#Begin Optimized options
#OPTF = -O -Dintel_ -DALLOW_NON_INIT ?F90FLAGS?
#OPTL = -O ?LDFLAGS?
#OPTC = -O ?CFLAGS?
OPTF = -O -Dintel_ -DALLOW_NON_INIT -ffixed-line-length-0 -x f77-cpp-input -fPIC -fopenmp -DDETERMINISTIC_PARALLEL_GRAPH
#OPTF = -O -Dintel_ -DALLOW_NON_INIT -ffixed-line-length-0 -x f77-cpp-input -fPIC -fopenmp 
OPTL = -O -fopenmp
OPTC = -O -fno-stack-protector -fPIC -fopenmp
#End Optimized options
#INCS = $(INCSEQ)
#LIBS = $(LIBSEQ)
#LIBSEQNEEDED = libseqneeded
INCS = $(INCPAR)
LIBS = $(LIBPAR)
LIBSEQNEEDED =

そして、

$make all

です。

7.PETSC

$ 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 --configModules=PETSc.Configure --optionsModule=config.compilerOptions --with-mpi-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-mumps-dir=/opt/mumps-5.1.1-mpi2

が動作しない、というエラーがでるので、download-mumpsで代用です。mumps-5.0.25.1.1がダウンロードされました。(2017/9/23訂正)

Configureが終了したら、

$ make PETSC_DIR=/opt/petsc-3.7.6 PETSC_ARCH=arch-linux2-c-opt all
$ make PETSC_DIR=/opt/petsc-3.7.6 PETSC_ARCH=arch-linux2-c-opt test

して、コンパイルと成功の確認をします。

8.CODE ASTER再構築

bitbucketのTutorialを参考に、Code AsterのSourceをダウンロードします。

mkdir -p $HOME/dev/codeaster && cd $HOME/dev/codeaster
hg clone https://bitbucket.org/code_aster/codeaster-devtools devtools
hg clone https://bitbucket.org/code_aster/codeaster-src src

 

並列用設定ファイル:Ubuntu_gnu.py、

# encoding: utf-8

"""
Fichier de configuration WAF pour version séquentielle sur Ubuntu 12.04 :
- Compilateur : GNU
- BLAS : OpenBLAS
"""
import os

def configure(self):
 opts = self.options

# opts.with_prog_metis = True

# official_programs.configure(self)

self.env.append_unique('LINKFLAGS', ['-Wl,--allow-multiple-definition'])
# self.env.append_value('CXXFLAGS', ['-D_GLIBCXX_USE_CXX11_ABI=0'])
 self.env['ADDMEM'] = 350

self.env.append_value('LIBPATH', [
 '/opt/aster/public/hdf5-1.8.14/lib',
 '/opt/aster/public/med-3.2.1/lib',
 '/opt/aster/public/metis-5.1.0/lib',
 '/opt/aster/public/mfront-3.0.0/lib',
 '/opt/scotch-6.0.4/lib',
 '/opt/OpenBLAS/lib',])

self.env.append_value('INCLUDES', [
 '/opt/aster/public/hdf5-1.8.14/include',
 '/opt/aster/public/med-3.2.1/include',
 '/opt/aster/public/metis-5.1.0/include',
 '/opt/aster/public/mfront-3.0.0/include',
 '/opt/mumps-5.1.1-mpi2/include',
 '/opt/mumps-5.1.1-mpi2/include_seq',
 '/opt/scotch-6.0.4/include',
 '/opt/OpenBLAS/include'])

opts.maths_libs = 'openblas'
 opts.embed_math = True

opts.enable_med = True
 opts.hdf5_libs = 'hdf5 z'
 opts.embed_hdf5 = True
# opts.med_libs = 'med stdc++'
 opts.embed_med = True

# opts.enable_petsc = True

opts.enable_mfront = False

opts.enable_scotch = True
 opts.embed_scotch = True

opts.embed_aster = True
 opts.embed_fermetur = True

もう1つのUbuntu_gnu_mpi.py:

# encoding: utf-8

"""
Fichier de configuration WAF pour version parallèle sur Ubuntu 12.04 :
- Compilateur : GNU
- MPI : système (OpenMPI, Ubuntu 12.04)
- BLAS : OpenBLAS
- Scalapack : système (Ubuntu 12.04)
- PETSc : 
"""
import Ubuntu_gnu

def configure(self):
 opts = self.options
 Ubuntu_gnu.configure(self)

self.env.prepend_value('LIBPATH', [
 '/opt/parmetis-4.0.3/lib',
 '/opt/mumps-5.1.1-mpi2/lib',
 '/opt/petsc-3.7.6/arch-linux2-c-opt/lib',
 '/opt/scalapack/lib',])

self.env.prepend_value('INCLUDES', [
 '/opt/parmetis-4.0.3/include',
 '/opt/mumps-5.1.1-mpi2/include',
 '/opt/petsc-3.7.6/arch-linux2-c-opt/include',
 '/opt/petsc-3.7.6/include',])

self.env.append_value('LIB', ('X11',))

opts.parallel = True

opts.enable_mumps = True
 opts.mumps_version = '5.1.1'
 opts.mumps_libs = 'dmumps zmumps smumps cmumps mumps_common pord metis scalapack openblas esmumps scotch scotcherr'

opts.enable_petsc = True
 self.env.append_value('LIB_METIS', ('parmetis'))
 self.env.append_value('LIB_SCOTCH', ('ptscotch','ptscotcherr','ptscotcherrexit','ptesmumps'))

opts.petsc_libs='petsc HYPRE ml'
# opts.embed_petsc = True

そして、../codeaster/srcに移動して、

$ 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-petsc

ここで、blapacがない、とエラーが出たら、

Code_Aster installation » Parallel installation of aster-13.2: blacs not found

を参考に、対応しました。

$./waf build -p

途中Warningが大量にでましたが、buildは完了しました。

$./waf install

動作確認は、MEDとHDF5がない!といわれて動きませんでした。とほほ(2017・09・26)

Code Aster 13.4のインストール

xUbuntu 16.04にCode Aster 13.4をインストールした時の記録です。

Code Asterのサイトから、aster-full-src-13.4.0-1.noarch.tar.gzをダウンロードし、適当な場所で展開します。

$tar xfvz aster-full-src-13.4.0-1.noarch.tar.gz

次に、setup.pyの内容を修正します。先の操作で展開したフォルダに移動して

$ sed -i "830i\ \ \ \ \ \ set=['HOME_HOMARD',]" products.py

とします。Buildを始める前に、パッケージを追加しました。

$ sudo apt-get install libboost-all-dev
$ sudo apt-get install doxygen

そして

$ python setup.pyinstall --prefix=/opt/aster

で作成・インストールです。Terminal内の表示で{FAILED]がなければ、

$/opt/aster/bin/as_run --vers=13.4 --test forma01a$ 

でエラーがでなければ完了です。

次にwafを使う場合。

bitbucketのリポジトリでソースコードをDownloadして、Configureします。その時、numpyが見つからないとエラーが出ました。logを見ると、libblasに問題があるようです。

Checking for numpy : Could not find the python module 'numpy'
(complete log in /root/aster-full-src-12.7.0/SRC/aster-12.7.0/build/config.log)

libopenblasをuninstallして、libblasをapt-getでインストールすると解決しました。