まずは単独実行でも並列実行でも利用する基本数値計算ライブラリの準備をしておきます。
■ ACMLのコンパイル
単独板Code_AsterのコンパイルにACMLを数値計算ライブラリとして用いるために、コンパイルしておきます。なおACMLと言うのは、AMD Core Math Libraryと言う意味です。利用するバージョンに合わせてファイル名などに注意します。
$ cd ~/Install_Files/
$ mkdir ./acml
$ cp acml-5-3-1-gfortran-64bit.tgz ./acml
$ cd ./acml
$ tar xfvz acml-5-3-1-gfortran-64bit.tgz
$ ./install-acml-5-3-1-gfortran-64bit.sh -accept -installdir=/opt/acml5.3.1
「ACML installation complete」と表示されたら成功です。
$ echo /opt/acml5.3.1/gfortran64/lib | sudo tee -a /etc/ld.so.conf.d/amd_math.conf
$ sudo ldconfig
以上でライブラリとして利用できるようにします。sudoに対して作業者のパスワードを入力します。
これで準備ができましたので、並列版のベースとなる単独版Code_Asterのコンパイルを進めます。
■ 単独版Code_Asterのコンパイル
まずは、単独版Code_Asterを/optにコンパイルします。計算の高速化のために、数値計算ライブラリは先にコンパイルしたACMLを用います。この設定のために、sedコマンドで、setuup.cfgを書き換えます。Code_AsterとACMLのバージョンに注意します。
$ cd ~/Install_Files
$ tar xfvz aster-full-src-11.3.0-3.noarch.tar.gz
$ cd aster-full-src-11.3.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で進めます。さらに確認や構築が進みますが、相等に時間がかかります。エラー表示がなく「Installation of : Code_Aster + 12 of its prerequisites」が表示されたらひとまず完了です。なおインストール先は/opt/asterになり、この中にSTA11.3ができており、これが開発版11.3の単独実行ソルバーになります。
インストール先/opt/asterが準備できたので、並列計算用のホストファイルを作成します。まずhostnameコマンドでインストールするコンピュータ名を確認します。ここではdexcs2012でした。次に、「アプリケーション」→「システムツール」→「システムモニター」→「リソース」で稼働しているCPUのコア数を確認します。並列処理を目指しているので複数必要です。ここでは4個でした。もし1の場合は仮想マシンの設定を確認修正してください。以下のコマンドのcpu=の後の数字は使用するプロセッサー数を入力します。
$ echo dexcs2012 cpu=4 >> /opt/aster/etc/codeaster/mpi_hostfile
それでは、並列版Code_Asterのコンパイルを目指して、様々なツールを準備します。以下の手順にしたがって進めます。
■ ScaLAPACKのコンパイル
並列処理する行列数値計算ライブラリのScaLAPACKをコンパイルします。インストーラーを展開したときのバージョンに注意して進めます。具体的には、ScaLAPACK(Scalable Linear Algebra PACKage)は、分散メモリ型のコンピュータ向けに開発された高性能なルーチン群です。ScaLAPACKは、連立1次方程式、線形最小二乗問題、固有値問題、特異値問題を解くことができます。また、行列の分解や条件数の計算も行うことができます。
$ cd ~/Install_Files
$ tar xfvz scalapack_installer.tgz
$ cd scalapack_installer_1.0.2
先にインストールしたacmlのバージョンに注意して、セットアップコマンドを実行します。
$ ./setup.py --lapacklib=/opt/acml5.3.1/gfortran64/lib/libacml.a --mpicc=mpicc --mpif90=mpif90 --mpiincdir=/usr/lib/openmpi/include --prefix=/opt/scalapack
コンパイルが進み最後の段階で、「BLACS: error running BLACS test routines xCbtest 」というエラーが最後に表示されますが、/opt/scalapack/lib/libscalapack.aのファイルが作成されていれば、コンパイルは成功しているので、以下のコマンドで確認します。
$ ls /opt/scalapack/lib
■ ParMETISのコンパイル
並列処理用データ分割ツール ParMetis をインストールします。Metisは構造解析のモデルを領域分割するツールで、この並列処理版がParMETISです。コンパイルは、以下のコマンドを実行してください。
$ cp ~/Install_Files/ParMetis-3.2.0.tar.gz /opt
$ cd /opt
$ tar xfvz ParMetis-3.2.0.tar.gz
$ cd ParMetis-3.2.0
ここで修正作業が必要です。ディレクトリの中に構築用設定ファイル Makefile.in があります。これに XTRALIBS = -lmpi を追加設定の場所に記入します。適当なエディタ(viなど)で行ってください。慎重に作業を行うには、Makefile.inのバックアップをMakefile.in.orgにコピーして作った上で修正すると、後で変更箇所をdiffで確かめることができます。
$ cp Makefile.in Makefile.in.org
$ vi Makefile.in
出来たらmakeコマンドでコンパイルします。
$ make
暫く待ちます。エラーが出ずに下記のメッセージが出たら完成です。
chmod 744 ../Graphs/pometis3.2.0 / make[1]: ディレクトリ `/opt/ParMetis-3.2.0/Programs' から出ます
■ ACMLのコンパイル
単独板Code_AsterのコンパイルにACMLを数値計算ライブラリとして用いるために、コンパイルしておきます。なおACMLと言うのは、AMD Core Math Libraryと言う意味です。利用するバージョンに合わせてファイル名などに注意します。
$ cd ~/Install_Files/
$ mkdir ./acml
$ cp acml-5-3-1-gfortran-64bit.tgz ./acml
$ cd ./acml
$ tar xfvz acml-5-3-1-gfortran-64bit.tgz
$ ./install-acml-5-3-1-gfortran-64bit.sh -accept -installdir=/opt/acml5.3.1
「ACML installation complete」と表示されたら成功です。
$ echo /opt/acml5.3.1/gfortran64/lib | sudo tee -a /etc/ld.so.conf.d/amd_math.conf
$ sudo ldconfig
以上でライブラリとして利用できるようにします。sudoに対して作業者のパスワードを入力します。
これで準備ができましたので、並列版のベースとなる単独版Code_Asterのコンパイルを進めます。
■ 単独版Code_Asterのコンパイル
まずは、単独版Code_Asterを/optにコンパイルします。計算の高速化のために、数値計算ライブラリは先にコンパイルしたACMLを用います。この設定のために、sedコマンドで、setuup.cfgを書き換えます。Code_AsterとACMLのバージョンに注意します。
$ cd ~/Install_Files
$ tar xfvz aster-full-src-11.3.0-3.noarch.tar.gz
$ cd aster-full-src-11.3.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で進めます。さらに確認や構築が進みますが、相等に時間がかかります。エラー表示がなく「Installation of : Code_Aster + 12 of its prerequisites」が表示されたらひとまず完了です。なおインストール先は/opt/asterになり、この中にSTA11.3ができており、これが開発版11.3の単独実行ソルバーになります。
インストール先/opt/asterが準備できたので、並列計算用のホストファイルを作成します。まずhostnameコマンドでインストールするコンピュータ名を確認します。ここではdexcs2012でした。次に、「アプリケーション」→「システムツール」→「システムモニター」→「リソース」で稼働しているCPUのコア数を確認します。並列処理を目指しているので複数必要です。ここでは4個でした。もし1の場合は仮想マシンの設定を確認修正してください。以下のコマンドのcpu=の後の数字は使用するプロセッサー数を入力します。
$ echo dexcs2012 cpu=4 >> /opt/aster/etc/codeaster/mpi_hostfile
それでは、並列版Code_Asterのコンパイルを目指して、様々なツールを準備します。以下の手順にしたがって進めます。
■ ScaLAPACKのコンパイル
並列処理する行列数値計算ライブラリのScaLAPACKをコンパイルします。インストーラーを展開したときのバージョンに注意して進めます。具体的には、ScaLAPACK(Scalable Linear Algebra PACKage)は、分散メモリ型のコンピュータ向けに開発された高性能なルーチン群です。ScaLAPACKは、連立1次方程式、線形最小二乗問題、固有値問題、特異値問題を解くことができます。また、行列の分解や条件数の計算も行うことができます。
$ cd ~/Install_Files
$ tar xfvz scalapack_installer.tgz
$ cd scalapack_installer_1.0.2
先にインストールしたacmlのバージョンに注意して、セットアップコマンドを実行します。
$ ./setup.py --lapacklib=/opt/acml5.3.1/gfortran64/lib/libacml.a --mpicc=mpicc --mpif90=mpif90 --mpiincdir=/usr/lib/openmpi/include --prefix=/opt/scalapack
コンパイルが進み最後の段階で、「BLACS: error running BLACS test routines xCbtest 」というエラーが最後に表示されますが、/opt/scalapack/lib/libscalapack.aのファイルが作成されていれば、コンパイルは成功しているので、以下のコマンドで確認します。
$ ls /opt/scalapack/lib
■ ParMETISのコンパイル
並列処理用データ分割ツール ParMetis をインストールします。Metisは構造解析のモデルを領域分割するツールで、この並列処理版がParMETISです。コンパイルは、以下のコマンドを実行してください。
$ cp ~/Install_Files/ParMetis-3.2.0.tar.gz /opt
$ cd /opt
$ tar xfvz ParMetis-3.2.0.tar.gz
$ cd ParMetis-3.2.0
ここで修正作業が必要です。ディレクトリの中に構築用設定ファイル Makefile.in があります。これに XTRALIBS = -lmpi を追加設定の場所に記入します。適当なエディタ(viなど)で行ってください。慎重に作業を行うには、Makefile.inのバックアップをMakefile.in.orgにコピーして作った上で修正すると、後で変更箇所をdiffで確かめることができます。
$ cp Makefile.in Makefile.in.org
$ vi Makefile.in
出来たらmakeコマンドでコンパイルします。
$ make
暫く待ちます。エラーが出ずに下記のメッセージが出たら完成です。
chmod 744 ../Graphs/pometis3.2.0 / make[1]: ディレクトリ `/opt/ParMetis-3.2.0/Programs' から出ます