ANSYS Ver.14 Win64版GPU性能を測定してみました。
GPUを使用するためには、HPCパックオプション(有償)が必要です。
今回はデモライセンスを借用してテストしました。
使用マシンは、以前紹介した MASAMUNE です。
テストデータは、LSDYNA GPU版テストと同じものを使います。
GPUアクセラレータを使用するためには、CUDA実行環境が必要ですが、
ANSYSの場合必要なライブラリは、ANSYSインストールファイルに組み込
まれています。
1. GPU使用オプション
ここではコマンドラインでの起動方法を紹介します。
(勿論 GUI からでも設定できます)
CMD> ansys140.exe -p ライセンス -b -s read -I 入力データ -O 出力.out -np 2 -acc nvidia -J ジョブ名
ここで
-np : 使用プロセッサ数。 デフォルト=2
-acc nvidia : GPUを使用する
2. 使用できるソルバータイプ
EQSLVコマンドにおける SPARSE, JCG, PCG が GPUアクセラレータに
対応しています。
これらのソルバタイプを設定した場合でも、マトリクスの状況が好ましくない?
ような場合GPUは使われなくなるようです。
3. GPU使用の確認
-acc nvidiaをつけてANSYSを実行、終わったら outファイルを見てください。
——————— OUT の例——————————
*** NOTE *** CP= 53.540 TIME= 14:14:32
このANSYSの実行では、GPUアクセラレータの機能を使
用します。 [acc_warning.3030]
スパース法ソルバーは節点1075、UYで
最大ピボット47.01996587を検出しました。 [bcs_pivotPrint.3000]
後半の部分では
+——————— A N S Y S S T A T I S T I C S ————————+
Release: 14.0 Build: UP20111024 Platform: WINDOWS x64
Date Run: 03/13/2012 Time: 14:15
Windows Process ID: 4016
Compiler: Intel(R) FORTRAN Compiler Version 11.1.0 (Build: 20100414)
Microsoft(R) Visual C/C++ Compiler Version 15.0 (Build: 30729)
Intel(R) Math Kernel Library Version 10.3.3 Product Build 20110314
Number of cores: 2 (Shared Memory Parallel)
GPU Acceleration: NVIDIA Library Requested and Enabled
赤で示したのが、GPUを使った証拠です。
4. テスト結果
ソルバーは、スパース法とPCG法を使用しました。
同じデータなのでLSDYNAとの比較も気になるところですが、要素特性の違い、
反復法においてはデフォルトの判定値の違いで計算時間は大幅に異なるので
ANSYS単体での測定結果のみを示します。
(1) SOLID2 (192261Nodes, 179000HEXA, LINEAR STATICS)
(2) SOLID3 (558701Nodes, 540000HEXA, LINEAR STATICS)
赤は、メインメモリ不足によるアウト・オブ・コアに突入したことを示します。
outファイルにも
SPARSE MATRIX DIRECT SOLVER.
Number of equations = 1688689, Maximum wavefront = 63
Memory allocated for solver = 2636.955 MB
Memory required for in-core = 30494.214 MB
Optimal memory required for out-of-core = 2511.386 MB
Minimum memory required for out-of-core = 366.628 MB
*** NOTE *** CP= 166.484 TIME= 14:59:09
Sparse Matrixソルバーは現在アウトオブコアメモリーモー
ドで実行されています。このメモリーモードでは、メモ
リーとハードドライブの使用量が良いバランスに保たれ、
効率的な解析時間がもたらされます。 [bcs_warning.3500]
*** NOTE *** CP= 170.805 TIME= 14:59:13
このANSYSの実行では、GPUアクセラレータの機能を使
用します。 [acc_warning.3030]
スパース法ソルバーは節点475024、UYで
最大ピボット26.32650407を検出しました。 [bcs_pivotPrint.3000]
「効率的な解析時間がもたらされ」とありますが、要するにメモリが足りない
のでハードディスク使用して遅くなるよ!! というメッセージです。
ANSYSでもLSDYNAでも 主メモリ24GBは明らかに不足でした。
(MASAMUNEは、24GBが最大なのでこれ以上は無理)
予算があるなら、沢山メモリを搭載できるハードを選んでください。
PCG法+GPUの効果は微妙です。効いたかどうかわからない、ですね。
PCG法はメモリ少なく、計算時間も速いのでベストなように見えますが
問題の条件により常に最速であるとは限りません。
(3) SHELL (78481Nodes, 78000QUAD4, LINEAR STATICS)
効果ないのは分かっていますが、やってみました。
まったく効果ありませんでした。
今回のテストは、有償オプションを使用しました。
どんな問題を解くかによってGPUによる性能向上は違ってきますので、
効果の程はユーザの判断にお任せします。