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


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-07-02 (土) 08:30:19 (86d)