2:SXAT の CentOS 上に、VE 対応の Calculix (CCX) を構築するまでのビルド手順 【SXAT-CCXbuild-21-2】 †
VE 用 vesolverのインストール †
vesolverを以下からダウンロードして、任意のディレクトリに展開します。 (以下の例では、~/localに展開します)
まず、インストールするディレクトリに移動します。 cd ~/local
次に、vesolverを、以下のコマンドで入手します。
wget https://github.com/ISCPC/vesolver/releases/download/Release_20220212_beta/vesolver_20220212_beta.tar.gz
入手したファイル「vesolver_20220212_beta.tar.gz」を展開します。
tar xvzf vesolver_20220212_beta.tar.gz
これより、~/local の、ve, lib, include に必要なファイルが設置されます。(ビルドは不要です)
VE 用の Calculix (CCX)をビルドしインストールする †
ビルドの条件を設定するので、vi などのエディタで ~/CalculiX-Builder にある Makefile を編集します。ここでは、以下の設定とします。
ここでは、VH 用のビルド設定を踏まえて、追加する設定で VE 用のビルドを行います。
- WITH_AURORA=ture : SX-AuroraのVEを用いたソルバ(SOLVER=SX-AUR_*)をサポートする
- VESOLVER_PATH=~/local : 上記手順で、vesolverを展開したPATH(デフォルト:~/local)
として、以下のように設定します。
cd ~/CalculiX-Builder ⇒ vi Makefile
30 WITH_AURORA=true
31 VESOLVERPATH=$(PREFIX)
先の VH 用のファイルを、make clean で削除して、同様に8コアでビルドするために、make NPROCS=8 を実行する。
ビルドしたディレクトリ内の「src」にできるので、「$ ls -l src/ccx_2.18_MT」で確認すると、
VH 用 CCXとして「src/ccx_2.18_MT(size:7274440)」が出来ています。
実行形式が完成したので、インストール先:$(HOME)/local に設定します。「make install」で行います。
状況を確認するために、「ls -l ~/local/bin/」を実行すると、
「-rwxr-xr-x. 1 dalab dalab 7274440 3月 6 11:04 ccx_2.18_MT」で確認できました。
ここでは、VE用のCCXとしたので、コマンド名を変更しておきます。
「cd ~/local/bin ⇒ mv ccx_2.18_MT ccx_2.18_VE」
SX-Aurora TSUBASA 用に追加されたソルバーの説明 †
SX-Aurora用(WITH_AURORA指定)のccxでは以下の既存のソルバに加えて、
SX-Aurora TSUBASA のVE(Vector Engine)を利用した以下のソルバが追加されます。
- SX-AUR_HS: SX-Aurora TSUBASA用に実装された直接法による大規模疎行列連立1次方程式ソルバであるHeteroSolverを使用します。
- SX-AUR_SCALING: CalculiXに実装されている反復法ソルバITERATIVESCALINGをSX-Aurora TSUBASAのVE(Vector Engine)上で高速に実行します。
本ソルバはSBLASを利用することで、ベクトル化+OpenMPによる高速化が図られています。
VE ソルバーを実行するための環境設定(各種ライブラリのパス設定等) †
以下の内容を「$ vi ~/.bashrc」の最後に追記して、「$ source ~/.bashrc」で有効にしておきます。
なお、DISTROOT には、vesolverを展開したPATHを指定します。
export PATH=/opt/nec/ve/bin:${PATH}
source /opt/nec/ve/nlc/2.2.0/bin/nlcvars.sh
export OMP_NUM_THREADS=8
export DISTROOT=${HOME}/local
export VESOLVER_PATH=${DISTROOT}/ve/lib/libvesolver.so
export VE_LD_LIBRARY_PATH=${DISTROOT}/ve/lib:${VE_LD_LIBRARY_PATH}
「$ ccx_2.18_VE」で実行してみます。エラーなく以下のメッセージが表示されたら、取り合えずのビルド成功です。
INFO: SX-Aurora TSUBASA VE Offloading API version: 9
INFO: Using VE0
Usage: CalculiX.exe -i jobname
VE 用の Calculix (CCX)の動作確認 †
先の VH 用の動作確認のディレクトリ ~/CCXwork21/Ex1 に移動して行います。
まずは8コアの設定で、spooles で試す。test.inp の設定で、「Static,SOLVER=SPOOLES」を有効にします。
動作確認用ディレクトリ Ex1 の中にテストデータ test.inp で検証します。
ビルドした VE 用 CCX の解析として、Ex1 内で「$ ccx_2.18_VE test(拡張子 .inp は外す)」として実行します。
表示されるログの途中で「Using upto 8 cpu・spooles」となり、標準のSpoolesソルバーで8cpu(8core)で実行しています。
エラーなく「Job finished」と表示されたら終了で、全体の解析時間は「17.537349 [sec]」となっています。
次に「Static,SOLVER=SX-AUR_HS」を有効にすると、以下のメッセージで8cpuで、全体の解析時間は「9.645826 [sec]」となっています。
Using up to 8 cpu(s) for the symmetric stiffness/mass contributions.
Solving the system of equations using the symmetric VE solver (solvertype=0)
次に「Static,SOLVER=SX-AUR_SCALING」を有効にすると、以下のメッセージで8cpuで、全体の解析時間は「8.935242 [sec]」となっています。
Using up to 8 cpu(s) for the symmetric stiffness/mass contributions.
Solving the system of equations using the symmetric VE solver (solvertype=1)
以上のように、VEソルバーを用いることで、約2倍の高速化が実現できました。
AboutNecSXAT