続いて、安定版10.8を用いて、単独実行と並列実行のCode_Asterソルバーを構築します。
以下の手順では、開発版の構築手順と同様に、最初に安定版10.8の単独実行を構築した後で並列実行を構築します。全体としては、以下の4種類のシステムを構築します。
開発版11.3 : 単独実行 STA11.3(stable) 並列実行 PAR11.3
安定版10.3 : 単独実行 STA10.8(stable) 並列実行 PAR10.8
先に行った開発版の構築の続きとして進めますので、重複する説明は省略します。
■ 必要なファイル2個のダウンロード
Code_Aster : aster-full-src-10.8.0-3.noarch.tar.gz → http://www.code-aster.org/V2/spip.php?article272 (最新版は10.8ですが、パッチレベルは更新される場合もあります)
PETSc : petsc-2.3.3-p16.tar.gz → http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/(沢山あるファイル一覧から安定版の指定のバージョンをダウンロードします。)
以上2つのファイルを~/Install_Filesに集めて置きます。
ACMLは、開発版でacml-5-3-1-gfortran-64bit.tgzより構築したツールを流用します。
ScaLAPACKは、開発版でscalapack_installer.tgzより構築したツールを流用します。
ParMETISは、開発版でParMetis-3.2.0.tar.gzより構築したツールを流用します。
■ 単独版Code_Asterのコンパイル
まずは、安定版の単独実行Code_Asterを/optにコンパイルします。計算の高速化のために、数値計算ライブラリは開発版でコンパイルしたACMLを用います。この設定のために、sedコマンドで、setuup.cfgを書き換えます。Code_AsterとACMLのバージョンに注意します。
$ cd ~/Install_Files
$ tar xfvz aster-full-src-10.8.0-3.noarch.tar.gz
$ cd aster-full-src-10.8.0/
$ sed -i "s:PREFER_COMPILER\ =\ 'GNU':PREFER_COMPILER\ =\'GNU_without_MATH'\nMATHLIB=\ '-L/opt/acml5.3.1/gfortran64/lib -lacml':g" setup.cfg
実際のコンパイルは次のコマンドで実行します。
$ python setup.py install
コンパイルが進み、継続を確認するのでyで進めます。さらに確認や構築が進みます。なお開発版でコンパイルしたツールで、安定版でも利用するものが/opt/aster/publicの中にあり、以下の5つのツールは残して再利用するので、確認ではnで進めます。続いて警告などが出ますが、先に進めます。結構な時間がかかります。
hdf5, med, gmsh, scotch, metis
エラー表示がなく「Installation of : Code_Aster + 13 of its prerequisites」が表示されたらひとまず完了です。なおインストール先は/opt/asterになり、この中にSTA10.8ができており、これが安定版10.8の単独実行ソルバーになります。
※ 実は、python setup.py installを初めてに実行したときは、途中でpythonが止まらなくなって中断して、STA10.8などを削除してもう一度実行したら最後まで構築が進みました。原因は分かりません。この時は追加で、metis-edf, mumps の2つも残す確認をしました。
■ MUMPSのコンパイル
インストールファイルのディレクトリ~/Install_Filesにある展開したCode_Asterのソースファイル中にあるmumps-4.10.0を、/optにコピーしてmpiコンパイラでコンパイルして並列処理のツールを構築します。なおasterのソースに含まれるmumpsのバージョンに注意してください。
$ cp ~/Install_Files/aster-full-src-10.8.0/SRC/mumps-4.9.2-2.tar.gz /opt/
$ cd /opt
$ tar xfvz mumps-4.9.2-2.tar.gz
$ mv mumps-4.9.2 mumps-4.9.2_mpi
$ cd mumps-4.9.2_mpi/
ここで修正作業が必要です。ディレクトリの中に構築用設定ファイル Makefile.inc があります。このファイルでは多数の書き換えが必要なので、このブログの別の記事「並列版Code_Asterの構築:mumps-4.9.2_mpiのMakefile.inc」にまとめたmumps-4.9.2_mpi用のMakefile.incの内容を、エディタで置き換えてください。なおacmlのバージョンは頻繁に更新されるので注意してください。慎重に作業を行うには、Makefile.incのバックアップをMakefile.inc.orgにコピーして作った上で修正すると、後で変更箇所をdiffで確かめることができます。
$ cp Makefile.inc Makefile.inc.org
$ vi Makefile.inc
以上の準備ができたら、makeでコンパイルを実行します。
$ make all
途中で警告が出てもコンパイルは進みますので、暫く待ちます。最後に「mpif90 -o zsimpletest (途中省略) -lpthread / make[1]: ディレクトリ `/opt/mumps-4.9.2_mpi/examples' から出ます」と表示されたら完了です。
以下の手順では、開発版の構築手順と同様に、最初に安定版10.8の単独実行を構築した後で並列実行を構築します。全体としては、以下の4種類のシステムを構築します。
開発版11.3 : 単独実行 STA11.3(stable) 並列実行 PAR11.3
安定版10.3 : 単独実行 STA10.8(stable) 並列実行 PAR10.8
先に行った開発版の構築の続きとして進めますので、重複する説明は省略します。
■ 必要なファイル2個のダウンロード
Code_Aster : aster-full-src-10.8.0-3.noarch.tar.gz → http://www.code-aster.org/V2/spip.php?article272 (最新版は10.8ですが、パッチレベルは更新される場合もあります)
PETSc : petsc-2.3.3-p16.tar.gz → http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/(沢山あるファイル一覧から安定版の指定のバージョンをダウンロードします。)
以上2つのファイルを~/Install_Filesに集めて置きます。
ACMLは、開発版でacml-5-3-1-gfortran-64bit.tgzより構築したツールを流用します。
ScaLAPACKは、開発版でscalapack_installer.tgzより構築したツールを流用します。
ParMETISは、開発版でParMetis-3.2.0.tar.gzより構築したツールを流用します。
■ 単独版Code_Asterのコンパイル
まずは、安定版の単独実行Code_Asterを/optにコンパイルします。計算の高速化のために、数値計算ライブラリは開発版でコンパイルしたACMLを用います。この設定のために、sedコマンドで、setuup.cfgを書き換えます。Code_AsterとACMLのバージョンに注意します。
$ cd ~/Install_Files
$ tar xfvz aster-full-src-10.8.0-3.noarch.tar.gz
$ cd aster-full-src-10.8.0/
$ sed -i "s:PREFER_COMPILER\ =\ 'GNU':PREFER_COMPILER\ =\'GNU_without_MATH'\nMATHLIB=\ '-L/opt/acml5.3.1/gfortran64/lib -lacml':g" setup.cfg
実際のコンパイルは次のコマンドで実行します。
$ python setup.py install
コンパイルが進み、継続を確認するのでyで進めます。さらに確認や構築が進みます。なお開発版でコンパイルしたツールで、安定版でも利用するものが/opt/aster/publicの中にあり、以下の5つのツールは残して再利用するので、確認ではnで進めます。続いて警告などが出ますが、先に進めます。結構な時間がかかります。
hdf5, med, gmsh, scotch, metis
エラー表示がなく「Installation of : Code_Aster + 13 of its prerequisites」が表示されたらひとまず完了です。なおインストール先は/opt/asterになり、この中にSTA10.8ができており、これが安定版10.8の単独実行ソルバーになります。
※ 実は、python setup.py installを初めてに実行したときは、途中でpythonが止まらなくなって中断して、STA10.8などを削除してもう一度実行したら最後まで構築が進みました。原因は分かりません。この時は追加で、metis-edf, mumps の2つも残す確認をしました。
■ MUMPSのコンパイル
インストールファイルのディレクトリ~/Install_Filesにある展開したCode_Asterのソースファイル中にあるmumps-4.10.0を、/optにコピーしてmpiコンパイラでコンパイルして並列処理のツールを構築します。なおasterのソースに含まれるmumpsのバージョンに注意してください。
$ cp ~/Install_Files/aster-full-src-10.8.0/SRC/mumps-4.9.2-2.tar.gz /opt/
$ cd /opt
$ tar xfvz mumps-4.9.2-2.tar.gz
$ mv mumps-4.9.2 mumps-4.9.2_mpi
$ cd mumps-4.9.2_mpi/
ここで修正作業が必要です。ディレクトリの中に構築用設定ファイル Makefile.inc があります。このファイルでは多数の書き換えが必要なので、このブログの別の記事「並列版Code_Asterの構築:mumps-4.9.2_mpiのMakefile.inc」にまとめたmumps-4.9.2_mpi用のMakefile.incの内容を、エディタで置き換えてください。なおacmlのバージョンは頻繁に更新されるので注意してください。慎重に作業を行うには、Makefile.incのバックアップをMakefile.inc.orgにコピーして作った上で修正すると、後で変更箇所をdiffで確かめることができます。
$ cp Makefile.inc Makefile.inc.org
$ vi Makefile.inc
以上の準備ができたら、makeでコンパイルを実行します。
$ make all
途中で警告が出てもコンパイルは進みますので、暫く待ちます。最後に「mpif90 -o zsimpletest (途中省略) -lpthread / make[1]: ディレクトリ `/opt/mumps-4.9.2_mpi/examples' から出ます」と表示されたら完了です。