LSDYNA GPU版テストリポート « ACS NEWS

LSDYNA GPU版テストリポート

2012 年 3 月 14 日 by yo yamgatta

LSDYNA 971R6 GPU版のテストリポートです。
GPU版は、正式公開ではありません。 β版、テスト評価用です。

LSDYNA GPU版は、追加ライセンス不要です。
保守契約ユーザは、(Teslaを買えば)誰でも使用できます。

———————————————————————

<<<リリースノート要約>>>

1.モジュール

モジュールは以下の2モジュールのみ。

mpp971_d_r6.0.0_71488_intel64_intel_rhel54_openmpi151_hybrid

ls971_d_r6.0.1_72099_intel64_intel_rhel54_gpu

どちらも、Linx64 Cent OS 用。NVIDIA GPUのみ対応。

2. GPUが効果的かどうかの判断

messageファイルのタイムログ

Implicit Lin. Alg. … 2.0531E+02   77.78     5.6105E+01   69.02

最後の数値は、WCT( wall CLock Time:経過時間)の比率。
この比率が高ければGPU使用メリットがある。
50%以下ならメリットは少ない。

3. *control_implicit_solver LPRINT=2

Implicit解析ソルバ情報をプリントすること。
GPUは、ソリッド要素において効果的である。
‘no. of deferred pivots’の表示に注意する。この値がゼロでない
の処理は、ホスト側で実行されるべきであるので、GPU処理
性能は低下する。

4.ライブラリ

SMP,MPP版共に liblstc_gpu.so を含むので、これを任意の場所
に置き環境変数 LD_LIBRARY_PATH で設定すること。

……………..  LSTC社でのベンチマーク結果 ……………

———————————————————————

 

ソルバータイプ

*control_implicit_solver におけるソルバータイプに関して
記述がなかったので、担当者へ確認しました。

SMP : LSOLVR=4または5 がGPU使用。他は使用しない。
MPP : LSOLVRの設定は関係なく、無条件でGPU使用。

MPP版

% mpirun -np で指定する各ノードには全てGPUが必要です。
私の場合、1台しか持っていないので、-np 1 でしか使えません。
これはでMPPを使う意味がないので、今回はSMP版のみテストします。
(気付く前に、platform MPI版も作ってと、お願いしてしまった)

インストール

難しい点はありません。ファイルをダウンロード、解凍してパスの
通っている場所に置くだけ。
解凍すると、liblstc_gpu.so も出てくるので、

/usr/loca/lstc_gpu/lib

の下に置いたら、.cshrc なら

setenv LD_LIBRARY_PATH /usr/loca/lstc_gpu/lib

等とします。

ついでに、ls971_d_r6.0.1_72099_intel64_intel_rhel54_gpu 
と毎回打ち込むのは、精神的ダメージが大きいので

% ln -s ls971_d_r6.0.1_72099_intel64_intel_rhel54_gpu ls971gpu

とでもして、シンボリックリンクを作っておきます。
以降の実行は、 %ls971gpu でOK。

動作確認

即終了する程度の小さなデータを用意して、
(ちょっとドキドキしながら)

%ls971gpu i=test.k memory=2500m

(搭載メモリが24GBなので、
データ領域=2500m double word=20GB程度を設定)

実行が始まります。そして、

 BEGIN implicit statics  step 1 t= 1.0000E+00 
  Memory required for implicit mtx strg  :      5656794
ls971gpu: symbol lookup error:
ls971gpu: undefined symbol: cublasAlloc

落ちてしまった!!!!
これで諦めてはいけない。


LSTC担当者に相談した所、CUDAライブラリの場所ってどうなの?

setenv CUDA_HOME /opt/cuda/lib64

みたいにちゃんと設定してね、次回からリリースノートにも書いておくからさ。

みたいな明快な解答をもらいました。
色々調べた結果、CUDAライブラリバージョンの相違が原因でした。
今回のハードは、CUDAがプレインストールされており、

/usr/local/cuda40/cuda

にあり、バージョンは、4.0.17です。

NVIDIAのサイトから、cudatoolkit_4.1.28_linux_64_rhel5.x.run

をダウンロードして、root権限で

# sh cudatoolkit_4.1.28_linux_64_rhel5.x.run

インストールの場所は、開発元と同じく /opt/cudaにしました。
途中、古いCUDAは消しましょうか?と聞かれますが、
「いいえ、消さないで残したまま」にしました。
どっちでも良かったみたいです。

# vi /etc/ld.so.conf
古いCUDAのライブラリパスをコメントアウト。
/opt/cuda/lib64 を追加

#/sbin/ldconfig

CUDAバージョン4.1.28を入れて lsdyna-gpuが使用できるようになりました。

速くなるのか確認

テストデータ SOLID2.dyn   線形製解析
     節点数*192261, ソリッド要素*179000(要素タイプ=18)
Solver Type=5、NCPU=1

結果は、GPUなし=439秒、 GP有り=124秒

かなり速くなったようなので、ベンチマークへ突入します。

ベンチマーク結果

SOLID2  (N*192261, SOLID*179000)
SOLID3  (N*557701, SOLID*540000)
SHELL   (N*78481, SHELL*78000)

   MASAMUNEによるLSDYNA GPU版テスト結果 (経過時間、秒)


( – は効果見込めないので実施せず)

テスト問題SOLID3を実メモリ上で解くには、64GB程度が必要でした。
今回のハードは、24GBしかないので、SOLID3の赤の数値はアウトオブコア
になってしまい、ディスクIOに時間が取られてしまったことを示しています。

先ずは、シェル要素では確かに効果ありませんでした。
同じソルバタイプ#5では、GPUにより速度向上し、アウトオブコア状態でも
恩恵にあずかれます。      ただし、GPUが効果的な”ソリッド要素らしい”
問題では、
ITER(反復解法)も効くわけで、何とも微妙です。

#6BCSソルバは、相当条件の悪いマトリクスで強いはずなので、今回のベンチ
マークでは明らかに不利な結果になりました。

最初にも書きましたが、GPUを買うのみで使用可能。
追加ライセンスは不要です。今後更に速くなると思われます。
GPU版試す、試さない、はユーザの判断にお任せします。

 





 

 

コメントをどうぞ

*