
Code_Aster のコンパイル2012年7月1日 | |
はじめにCode_Aster は、フランス EDF が公開しているオープンソースの構造解析ソルバーである。 使用環境Code_Aster 10.6.0-3、Linux Mint 12 x86_64 Code_Aster のコンパイルソースパッケージの入手ソースパッケージ (ここでは aster-full-src-10.6.0-3.noarch.tar.gz) を Code_Aster のページ からダウンロードする。 パッケージを展開。 $ tar xvzf aster-full-src-10.6.0-3.noarch.tar.gz -C ~/ 事前準備Code_Aster のコンパイル・利用に下記のものが必要なので用意する。
以下のものをインストール済み。
SCOTCH はソースコードが含まれるので、必ずしもインストールは必要ない。 コンパイルCode_Aster のディレクトリに移動。 $ cd ~/aster-full-src-10.6.0 setup.cfg を環境に合わせて修正する。SCOTCH はシステムのものを使うように、次のように指定。 _install_scotch = False HOME_SCOTCH = '/usr' コンパイルを開始。 $ mkdir ~/opt/Code_Aster $ python setup.py install --prefix=$HOME/opt/Code_Aster "--prefix" でインストール先を指定している (setup.cfg で指定してもよい)。 途中で質問されるので "y" と入力する。 コンパイル後の設定下記を ~/.bashrc に追加。 export ASTER_ROOT=~/opt/Code_Aster export PATH=$ASTER_ROOT/bin:$ASTER_ROOT/outils:$PATH ~/.bashrc の読み込み。 $ . ~/.bashrc テストサンプルケースを実行。 $ cd ~/aster/STA10.6 $ as_run forma01a.export "DIAGNOSTIC JOB : OK" というメッセージが出れば OK。 ASTK, EFICAS の起動も確認。 $ astk $ eficas 並列版のコンパイルCode_Aster は標準では並列計算に対応していない。並列計算版を別途コンパイルする必要がある。 事前準備上の非並列版 Code_Aster をコンパイル済みと想定する。 以下のパッケージをインストールしておく。
MUMPS の再コンパイルCode_Aster のソースパッケージから MUMPS のソースパッケージを展開。 $ cd ~/aster-full-src-10.6.0/SRC $ tar xvzf mumps-4.9.2.tar.gz -C ~/ $ mv ~/mumps-4.9.2 ~/opt/Code_Aster/public/mumps-4.9.2_mpi $ cd ~/opt/Code_Aster/public/mumps-4.9.2_mpi Makefile.inc をもとの mumps-4.9.2 からコピー。 $ cp ../mumps-4.9.2/Makefile.inc . Makefile.inc を並列用に修正。SCOTCH, ParMETIS, Open MPI 用に以下を設定。 ISCOTCH = -I$(SCOTCHDIR)/include/scotch LSCOTCH = -L$(SCOTCHDIR)/lib -lptesmumps -lptscotch -lptscotcherr LMETISDIR = /usr/lib LMETIS = -L$(LMETISDIR) -lparmetis -lmetis ORDERINGSF = -Dscotch -Dmetis -Dpord -Dptscotch -Dparmetis CC = mpicc FC = mpif77 FL = mpif90 (追加) SCALAP = -lscalapack-openmpi -lblacs-openmpi INCPAR = -I/usr/lib/openmpi/include LIBPAR = $(SCALAP) -L/usr/lib/openmpi/lib -lmpi INC = $(INCPAR) LIB = $(LIBPAR) LIBSEQNEEDED = コンパイル。 $ make alllib 並列版 Code_Aster のコンパイル並列版のディレクトリ PAR10.6 を作成。 $ cd ~/opt/Code_Aster $ cp -r STA10.6 PAR10.6 $ cd PAR10.6 profile.sh の "mumps-4.9.2" を "mumps-4.9.2_mpi" に書き換える。 config.txt を修正。 BIBL | mumps | ? | -L$ASTER_ROOT/public/mumps-4.9.2_mpi/lib -ldmumps -lzmumps -lsmumps -lcmumps -lmumps_common -lpord (追加) BIBL | metis | ? | -lparmetis -lmetis BIBL | scalap | ? | -lscalapack-openmpi -lblacs-openmpi BIBL | scotch | 4.0 | -lptesmumps -lptscotch -lptscotcherr DEFS | defined | ? | LINUX64 H5_USE_16_API _HAVE_MUMPS _USE_OPENMP _USE_MPI _U SE_MPI_MUMPS _USE_MPI_FETI LINK | link | ? | mpif90 CC | cc | ? | mpicc INCL | include | ? | -I$ASTER_ROOT/PAR10.6/bibc/include -I/usr/include/python2 .7 -I/usr/lib/pymodules/python2.7/numpy/core/include -I$ASTER_ROOT/public/hdf5-1.8.4/include -I$ASTER_ROOT/public/med-3.0.4/include -I/usr/include/scotch-int32 F77 | f77 | ? | mpif77 F90 | f90 | ? | mpif90 INCLF90 | include | ? | -I$ASTER_ROOT/PAR10.6/bibf90/include_mumps-4.9.2_mpi REPMAT | exec | 02-05 | $ASTER_ROOT/PAR10.6/materiau REPDEX | exec | 02-05 | $ASTER_ROOT/PAR10.6/datg 計算ノードリストを作成。 ~/opt/Code_Aster/etc/codeaster/mpi_hostfile node01 slots=4 "slots=" でノードの CPU コア数を指定する。 ~/aster/etc/codeaster/asrun で計算環境の設定を行う。"mpi_get_procid_cmd" を Open MPI 用に書き換える。 mpi_get_procid_cmd : echo $OMPI_MCA_orte_ess_vpid コンパイル。 $ as_run --vers=PAR10.6 --make clean $ as_run --vers=PAR10.6 --make clean bibf90/mumps $ as_run --vers=PAR10.6 --make テスト~/aster/PAR10.6 の forma01a.export, astout.export の "STA10.6" を "PAR10.6" に書き換える。forma01a.export で以下を設定。 P ncpus 1 P mpi_nbcpu 2 P mpi_nbnoeud 1 "ncpus" は OpenMP による 1 ノード内の並列数。"mpi_nbcpu"、"mpi_nbnoeud" は MPI の設定で、"mpi_nbcpu" で並列数、"mpi_nbnoeud" でノード数を指定する。 実行。 $ as_run forma01a.export ここではとりあえず動くことが確認できれば OK。 古い情報 | |
| PENGUINITIS Yuu Kasuga | |