SXAT-CCXbuild-21-1
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
* 1:SXAT の CentOS 上に、VH 用の Calculix (CCX) を構築するまでのビルド手順 【SXAT-CCXbuild-21-1】 [#g629d571]
作成:2022/03/05
ここでのビルド手順は、以下のウエブ「CalculiX-Builder」に基づいて行います。~
https://github.com/ISCPC/CalculiX-Builder/blob/master/README_JP.md
なおsudoの実行では、利用者のパスワードを入力します。
** 現在の状態の確認 [#of90defb]
・CnetOSのバージョン: cat /etc/redhat-release で確認します。~
CentOS Linux release 7.7.1908 (Core)
** 必要なパッケージの導入 [#n86b6bf1]
*** BLAS/LAPACKのインストール(必須) [#he4dae12]
以下の手順で必要なパッケージをインストールします。~
sudo yum install epel-release atlas-devel lapack-devel blas-devel
既に、現行バージョンが導入済みのパッケージはそのままで、更新するパッケージを導入する。確認で y で進めて「完了しました!」で成功です。
*** PARDISO(Intel-oneAPI-MKL)のインストール(選択) [#n24dd990]
Intel-oneAPI-MKLのソルバーPardisoを利用する場合は、以下の手順でインストールします。~
sudo yum-config-manager --add-repo https://yum.repos.intel.com/mkl/setup/intel-mkl.repo
作業時点で最新版として、2020-0-088を、以下の手順でインストールする。~
sudo yum install intel-mkl-2020.0-088
*** ExodusIIのインストール(選択) [#ia43234f]
以下のパッケージをインストールします。~
sudo yum install exodusii exodusii-devel
既に、現行バージョンが導入済みのパッケージはそのまま。
** CalculiX-Builder ソースの取得 [#jb79eb49]
CalculiX-Builder及びパッチのベースとなるccx 及び前提ライブラリ(ARPACK, SPOOLES)のソースを取得します。
以前にビルドを行った場合には、~/CalculiX-Builderが作られているので、削除するか名前を変更しておく。
まず cd でホームディレクトリに移動してから、以下のコマンドで、必要なファイルをgitから入手する。~
git clone https://github.com/ISCPC/CalculiX-Builder.git
ビルド作業用ディレクトリに移動する。~
cd ~/CalculiX-Builder
// (開発版での対応)~
// git checkout develop ★この手順は正式版公開後は不要
次に submodule ソースを入手するために、以下のコマンドを実行します。~
git submodule update --init --recursive
少し待って「Submodule path 'lib/calculix-adapter'」と表示されたら成功です。
** Calculix (CCX) をビルドするMakefileの設定 [#iafa9ee5]
以下の説明は自分の好みの設定ですので、状況に応じて各自で読み替えてください。
次に、ビルドの条件を設定するので、vi などのエディタで ~/CalculiX-Builder にある Makefile を編集します。ここでは、以下の設定とします。~
この段階では、VH で動作する CCXを作るので、VE関連は利用しない設定とします。
- インストール先:$(HOME)/local(標準設定) 「ここで、cd ~ ⇒ mkdir -p local/bin で準備しておく」
- ExodusII出力:有効 : ExodusII出力(-o exo)をサポート(libexodus.so が必要)
- IntelMKL利用:有効(ただしStaticLinkは無効) : IntelMKL(SOLVER=PARDISO)をサポート(Intel-MKL library が必要)
- SX-Aurora VE利用:この段階では無効
- preCICE利用:なし
として、以下のように設定します。
cd ~/CalculiX-Builder ⇒ cp Makefile Makefile.org ⇒ vi Makefile
14 PREFIX = $(HOME)/local ~
19 WITH_EXODUSII=true ~
24 WITH_MKL=true ~
25 WITH_MKL_STATIC=false ~
30 WITH_AURORA=false ~
36 WITH_PRECICE=false ~
** VH 用の Calculix (CCX)をビルドしインストールする [#e2a74702]
実際にビルドするときには、複数コアを利用すると効果的です。~
計算機の物理コアを「cat /proc/cpuinfo | grep "cpu cores"」で確認します。ここでは8コアでした。
そこで「make NPROCS=8」として、ビルドを実行します。警告は多数出ますが、エラー無く最後に以下表示され、約2分ぐらいで完了します。~
「make[1]: ディレクトリ `/home/dalab/CalculiX-Builder/src' から出ます」
ビルドしたディレクトリ内の「src」にできるので、「$ ls -l src/ccx_2.18_MT」で確認すると、~
VH 用 CCXとして「src/ccx_2.18_MT(size:7265288)」が出来ています。
実行形式が完成したので、インストール先:$(HOME)/local にコピーします。「make install」で行います。
状況を確認するために、「ls -l ~/local/bin/」を実行すると、~
「-rwxr-xr-x. 1 dalab dalab 7265288 3月 6 10:19 ccx_2.18_MT」で確認できました。
ここでは、VH用のCCXとしたので、コマンド名を変更しておきます。~
「cd ~/local/bin ⇒ mv ccx_2.18_MT ccx_2.18_VH」
** VH 用の Calculix (CCX)の動作確認 [#u1479ef7]
まず、CCXの動作に必要な環境変数の設定をして、起動の確認をします。~
以下の内容を「$ vi ~/.bashrc」の最後に追記して、「$ source ~/.bashrc」で有効にしておきます。
IntelMKLのライブラリのパス設定 / CCXの実行形式のパス / OpenMPの並列処理数(現段階では1)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/lib/intel64:/opt/intel/mkl/lib/intel64 ~
export PATH=$PATH:$HOME/local/bin ~
export OMP_NUM_THREADS=1 ~
「$ ccx_2.18_VH」で実行してみます。エラーなく「Usage: CalculiX.exe -i jobname」と表示されたら、取り合えずのビルド成功です。
次に、CCX の作業用のディレクトリを、「mkdir ~/CCXwork21」で作ります。~
動作確認用のディレクトリを作ります。「cd ~/CCXwork21 ⇒ mkdir Ex1」
ここでは約40万要素の片持梁で弾性解析を行うテストデータ「test.inp」を用いて、各ソルバーの動作を検証します。~
まず次のリンクから「&ref(SXAT-CCXbuild1/test.inp);」をダウンロードしてください。
動作確認用ディレクトリ Ex1 の中にテストデータ test.inp を置きます。~
ビルドした CCX の解析として、Ex1 内で「$ ccx_2.18_VH test(拡張子 .inp は外す)」として実行します。
表示されるログの途中で「Using upto 1 cpu・spooles」となり、標準のSpoolesソルバーで1cpu(1core)で実行しています。~
エラーなく「Job finished」と表示されたら終了で、全体の解析時間は「28.038304 [sec]」となっています。
解析によって多数のファイルが作られており、「test.frd」が CCX の独自の解析結果ファイルになります。
次に Exodus出力 を調べるので、入力データtest.inp以外を削除しておきます。~
「$ ccx_2.18_VH test -o exo(オプションは最後に指定する)」で実行します。~
この実行では、ParaView で可視化可能な「test.exo」が作られているのが分かります。
ソルバー変更の効果を確認するために、test.inpを、エディタviなどで開いて、以下を変更する~
「Static,SOLVER=SPOOLES」の行頭を「**」でコメントアウトして、~
「Static,SOLVER=PARDISO」の行頭を「*」で有効にして、ccx_2.18_VHで実行する。
表示されるログの最後に、以下の表示があり、IntelMKLのpardisoソルバーで1コア実行実行しています。~
Solving the system of equations using the symmetric pardiso solver ~
number of threads = 1
解析時間は「18.576814 [sec]」となり、先のspoolesに比べて約1.51倍高速化されています。
[[AboutNecSXAT]]
終了行:
* 1:SXAT の CentOS 上に、VH 用の Calculix (CCX) を構築するまでのビルド手順 【SXAT-CCXbuild-21-1】 [#g629d571]
作成:2022/03/05
ここでのビルド手順は、以下のウエブ「CalculiX-Builder」に基づいて行います。~
https://github.com/ISCPC/CalculiX-Builder/blob/master/README_JP.md
なおsudoの実行では、利用者のパスワードを入力します。
** 現在の状態の確認 [#of90defb]
・CnetOSのバージョン: cat /etc/redhat-release で確認します。~
CentOS Linux release 7.7.1908 (Core)
** 必要なパッケージの導入 [#n86b6bf1]
*** BLAS/LAPACKのインストール(必須) [#he4dae12]
以下の手順で必要なパッケージをインストールします。~
sudo yum install epel-release atlas-devel lapack-devel blas-devel
既に、現行バージョンが導入済みのパッケージはそのままで、更新するパッケージを導入する。確認で y で進めて「完了しました!」で成功です。
*** PARDISO(Intel-oneAPI-MKL)のインストール(選択) [#n24dd990]
Intel-oneAPI-MKLのソルバーPardisoを利用する場合は、以下の手順でインストールします。~
sudo yum-config-manager --add-repo https://yum.repos.intel.com/mkl/setup/intel-mkl.repo
作業時点で最新版として、2020-0-088を、以下の手順でインストールする。~
sudo yum install intel-mkl-2020.0-088
*** ExodusIIのインストール(選択) [#ia43234f]
以下のパッケージをインストールします。~
sudo yum install exodusii exodusii-devel
既に、現行バージョンが導入済みのパッケージはそのまま。
** CalculiX-Builder ソースの取得 [#jb79eb49]
CalculiX-Builder及びパッチのベースとなるccx 及び前提ライブラリ(ARPACK, SPOOLES)のソースを取得します。
以前にビルドを行った場合には、~/CalculiX-Builderが作られているので、削除するか名前を変更しておく。
まず cd でホームディレクトリに移動してから、以下のコマンドで、必要なファイルをgitから入手する。~
git clone https://github.com/ISCPC/CalculiX-Builder.git
ビルド作業用ディレクトリに移動する。~
cd ~/CalculiX-Builder
// (開発版での対応)~
// git checkout develop ★この手順は正式版公開後は不要
次に submodule ソースを入手するために、以下のコマンドを実行します。~
git submodule update --init --recursive
少し待って「Submodule path 'lib/calculix-adapter'」と表示されたら成功です。
** Calculix (CCX) をビルドするMakefileの設定 [#iafa9ee5]
以下の説明は自分の好みの設定ですので、状況に応じて各自で読み替えてください。
次に、ビルドの条件を設定するので、vi などのエディタで ~/CalculiX-Builder にある Makefile を編集します。ここでは、以下の設定とします。~
この段階では、VH で動作する CCXを作るので、VE関連は利用しない設定とします。
- インストール先:$(HOME)/local(標準設定) 「ここで、cd ~ ⇒ mkdir -p local/bin で準備しておく」
- ExodusII出力:有効 : ExodusII出力(-o exo)をサポート(libexodus.so が必要)
- IntelMKL利用:有効(ただしStaticLinkは無効) : IntelMKL(SOLVER=PARDISO)をサポート(Intel-MKL library が必要)
- SX-Aurora VE利用:この段階では無効
- preCICE利用:なし
として、以下のように設定します。
cd ~/CalculiX-Builder ⇒ cp Makefile Makefile.org ⇒ vi Makefile
14 PREFIX = $(HOME)/local ~
19 WITH_EXODUSII=true ~
24 WITH_MKL=true ~
25 WITH_MKL_STATIC=false ~
30 WITH_AURORA=false ~
36 WITH_PRECICE=false ~
** VH 用の Calculix (CCX)をビルドしインストールする [#e2a74702]
実際にビルドするときには、複数コアを利用すると効果的です。~
計算機の物理コアを「cat /proc/cpuinfo | grep "cpu cores"」で確認します。ここでは8コアでした。
そこで「make NPROCS=8」として、ビルドを実行します。警告は多数出ますが、エラー無く最後に以下表示され、約2分ぐらいで完了します。~
「make[1]: ディレクトリ `/home/dalab/CalculiX-Builder/src' から出ます」
ビルドしたディレクトリ内の「src」にできるので、「$ ls -l src/ccx_2.18_MT」で確認すると、~
VH 用 CCXとして「src/ccx_2.18_MT(size:7265288)」が出来ています。
実行形式が完成したので、インストール先:$(HOME)/local にコピーします。「make install」で行います。
状況を確認するために、「ls -l ~/local/bin/」を実行すると、~
「-rwxr-xr-x. 1 dalab dalab 7265288 3月 6 10:19 ccx_2.18_MT」で確認できました。
ここでは、VH用のCCXとしたので、コマンド名を変更しておきます。~
「cd ~/local/bin ⇒ mv ccx_2.18_MT ccx_2.18_VH」
** VH 用の Calculix (CCX)の動作確認 [#u1479ef7]
まず、CCXの動作に必要な環境変数の設定をして、起動の確認をします。~
以下の内容を「$ vi ~/.bashrc」の最後に追記して、「$ source ~/.bashrc」で有効にしておきます。
IntelMKLのライブラリのパス設定 / CCXの実行形式のパス / OpenMPの並列処理数(現段階では1)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/intel/lib/intel64:/opt/intel/mkl/lib/intel64 ~
export PATH=$PATH:$HOME/local/bin ~
export OMP_NUM_THREADS=1 ~
「$ ccx_2.18_VH」で実行してみます。エラーなく「Usage: CalculiX.exe -i jobname」と表示されたら、取り合えずのビルド成功です。
次に、CCX の作業用のディレクトリを、「mkdir ~/CCXwork21」で作ります。~
動作確認用のディレクトリを作ります。「cd ~/CCXwork21 ⇒ mkdir Ex1」
ここでは約40万要素の片持梁で弾性解析を行うテストデータ「test.inp」を用いて、各ソルバーの動作を検証します。~
まず次のリンクから「&ref(SXAT-CCXbuild1/test.inp);」をダウンロードしてください。
動作確認用ディレクトリ Ex1 の中にテストデータ test.inp を置きます。~
ビルドした CCX の解析として、Ex1 内で「$ ccx_2.18_VH test(拡張子 .inp は外す)」として実行します。
表示されるログの途中で「Using upto 1 cpu・spooles」となり、標準のSpoolesソルバーで1cpu(1core)で実行しています。~
エラーなく「Job finished」と表示されたら終了で、全体の解析時間は「28.038304 [sec]」となっています。
解析によって多数のファイルが作られており、「test.frd」が CCX の独自の解析結果ファイルになります。
次に Exodus出力 を調べるので、入力データtest.inp以外を削除しておきます。~
「$ ccx_2.18_VH test -o exo(オプションは最後に指定する)」で実行します。~
この実行では、ParaView で可視化可能な「test.exo」が作られているのが分かります。
ソルバー変更の効果を確認するために、test.inpを、エディタviなどで開いて、以下を変更する~
「Static,SOLVER=SPOOLES」の行頭を「**」でコメントアウトして、~
「Static,SOLVER=PARDISO」の行頭を「*」で有効にして、ccx_2.18_VHで実行する。
表示されるログの最後に、以下の表示があり、IntelMKLのpardisoソルバーで1コア実行実行しています。~
Solving the system of equations using the symmetric pardiso solver ~
number of threads = 1
解析時間は「18.576814 [sec]」となり、先のspoolesに比べて約1.51倍高速化されています。
[[AboutNecSXAT]]
ページ名: