DALAB情報発信用ブログ:OpenCAE+GPGPU+Peridynamics編

DALABで行っている研究活動の中で、OpenCAEやGPGPUや破壊解析の取り組みについてまとめてゆきます。

DEXCS2012-Salomeの有効活用:並列版Code_Asterの構築手順(4)

2013年05月21日 12時14分10秒 | OpenCAE活用
あともう少しで開発版11.3の並列実行のシステムが完成です。

■ PETScのコンパイル

PETScは、ポータブルで拡張性のある科学技術計算用のツール集であり、並列処理の演算にも対応しています。以下の手順では、ダウンロードしたpetscのバージョンに注意してください。

$ cp ~/Install_Files/petsc-3.3-p7.tar.gz /opt
$ cd /opt
$ tar xfvz petsc-3.3-p7.tar.gz
$ cd petsc-3.3-p7

以下のconfigure.pyのコンパイル設定コマンドでは、acmlのバージョンに注意して設定を実行します。最後に「Configure stage complete.」と表示されたら完了です。

$ ./config/configure.py --with-mpi-dir=/usr/lib/openmpi/lib --with-blas-lapack-lib=/opt/acml5.3.1/gfortran64/lib/libacml.a --with-debugging=0 COPTFLAGS=-O3 FOPTFLAGS=-O3 --configModules=PETSc.Configure --optionsModule=PETSc.compilerOptions --with-x=0

上記の設定にしたがって、makeでコンパイルを実行します。

$ make PETSC_DIR=/opt/petsc-3.3-p7 PETSC_ARCH=arch-linux2-c-opt all

コンパイルが進み、最後に「Completed building libraries」と表示されたら完了です。「Now to check if the libraries are working do」とあるので続いて、同様にmakeを用いて、コンパイルが成功したことを確かめます。

$ make PETSC_DIR=/opt/petsc-3.3-p7 PETSC_ARCH=arch-linux2-c-opt test

これも最後に「Completed test examples」と表示されたら完了です。

やっと並列版Code_Asterのコンパイルまでたどり着きました。以上の手順は全て必要な準備として完了させておいてください。

■ 並列版Code_Asterのコンパイル

ここでは先に構築した開発版11.3の単独実行形式STA11.3をベースにして、並列実行するPAR11.3を追加で構築します。まずCode_Asterの実行コマンドasrunの設定ファイル/opt/aster/etc/codeaster/asrunをテキストエディタで開いて修正します。

$ cd /opt/aster/etc/codeaster
$ vi asrun

設定ファイル中のMPIの設定で、mpi_get_procid_cmdの部分を以下のように書き換えます。
mpi_get_procid_cmd : echo $OMPI_COMM_WORLD_RANK

使用するプロセッサー数が32を超える場合は、下記の部分も数字を書き換えます。今回は4なので必要ありませんでした。
batch_mpi_nbpmax : 32
interactif_mpi_nbpmax : 32

単独実行のシステム/opt/aster/STA11.3をコピーして、並列実行のPAR11.3を作成する準備をする。

$ cd /opt/aster
$ cp -ax STA11.3 PAR11.3
$ cd /opt/aster/PAR11.3

ここで修正作業が必要です。ディレクトリの中に構築用設定ファイル profile.shとconfig.txt があります。このファイルでは多数の書き換えが必要なので、このブログの別の記事「並列版Code_Asterの構築:aster/PAR11.3のprofile.sh」と「並列版Code_Asterの構築:aster/PAR11.3のconfig.txt」にまとめた設定ファイルの内容を、エディタで置き換えてください。
なおconfig.txtにおいては、acmlとpetscのバージョンは頻繁に更新されるので注意して確認し修正してください。慎重に作業を行うには、それぞれのバックアップのコピーを作った上で修正すると、後で変更箇所をdiffで確かめることができます。

$ cp profile.sh profile.sh.org
$ vi profile.sh
$ cp config.txt config.txt.org
$ vi config.txt

以上で並列版Code_Asterのコンパイルの準備ができました。プロンプトより/opt/aster/PAR11.3ディレクトリであることを確認して、以下の手順でコンパイルを進めます。まず5つのコマンドは、単独実行用にコンパイルしたものを削除しています。処理が進むと「deleting ... [OK]」と表示されてゆきます。

$ ../bin/as_run --vers=PAR11.3 --make clean
$ ../bin/as_run --vers=PAR11.3 --make clean bibf90/mumps
$ ../bin/as_run --vers=PAR11.3 --make clean bibf90/petsc
$ ../bin/as_run --vers=PAR11.3 --make clean bibf90/utilitai
$ ../bin/as_run --vers=PAR11.3 --make clean bibc/scotch

ついに目的の1つ開発版11.3の並列実行のシステムを構築します。以下のコマンドが並列実行用のコンパイルのコマンドです。

$ ../bin/as_run --vers=PAR11.3 --make

ここでは全てのCode_Asterのモジュールを並列実行用にコンパイルするので、相等に時間がかかります。システムモニターで見ると、全てのCPUコアを用いて並列コンパイルしているようです。

最後に「DIAGNOSTIC JOB : OK」 と表示されれば成功です。これで開発版11.3の並列実行モジュールがPAR11.3に構築できました。

構築したモジュールは、Code_Asterの解析起動ツールastkから利用します。ここへPAR11.3を登録します。以下の手順で行います。

$ cd /opt/aster/etc/codeaster
$ vi aster

修正は、vers : stableの下にvers : PAR11.3を追加します。この結果を確かめるために、以下の手順でastkを実行して確かめます。

$ /opt/aster/bin/astk 
(実行すると色々メッセージが出ますが取り敢えずOKで進めます)

起動したASTKの右欄で、Versionの選択にPAR11.3が確認できたら完了です。


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。