3.1乱流LESのサンプルプログラム
数値シミュレーションに関する最近のコンピュータ環境をみると、ベクトル演算プロセッサーを用いたスーパーコンピュータから、RISCチップCPUの演算性能向上、さらに、並列型の超スカラーコンピュータへと、技術開発がめまぐるしく行われてきた。その結果、ユーザーが利用できるコンピュータ資源は、数年前に比べて、その大きさも種類も格段に向上しており、当然ながらコンピュータ性能に対する評価も変えねばならない。実際にコンピュータ・プログラムを製作、実行するユーザーにとって、適切なコンピュータ環境を選んでいるか、使用したコンピュータが十分に性能を発揮しているかは、きわめて重要な問題である。一方で、流れ場数値シミュレーションは大規模な数値計算を必要とする代表的な事例であり、その主要部分である大規模配列の反復演算は、コンピュータの得意とする処理の一つであることもあって、実用的な流れ場シミュレーションプログラムにおいても最大演算性能に比較的近い効率での実行が可能である。よって、流れ場シミュレーションは汎用コンピュータの実数演算性能を評価するのに適した課題の一つと考えられる。
ここでは、流れ場数値シミュレーション研究において実際に利用しているコンピュータ・プログラムをチューニングする目的で各種のパーソナルコンピュータ、ワークステーション、スーパーコンピュータにおいて実行テストを実施した結果を紹介する。ただし、これらの実行テストは少数の特定プログラムのみを対象に行ったもので、また、実際のプログラム実行環境(マルチユーザー、マルチジョブ環境)のままで実施したため、計測値の一般性や再現性は必ずしも保証できない。また、本報告に記載されていない機種の詳細な仕様や、運用されているソフトウェアーによっても結果が変わる恐れがあることを、あらかじめ指摘しておく。本報告のデータを利用する際には、これらの点に十分に注意されたい。
まず、乱流の数値シミュレーション法であるラージ・エディ・シミュレーション(LES)のために開発した2種のプログラムをサンプルとして用いた5)。以下に、本計算での数値解析の概要を示す。解析法の詳細は文献6)、7)を、解析内容については文献8)を参照されたい。
非圧縮性乱流場LESの基礎方程式は以下の通りである。
このうち、運動方程式(1)は各座標方向3成分それぞれについて与えられる。式(1)、(2)は非圧縮性流れ場の一般的な基礎式であり、乱流粘性 vt を算出する部分がLES(本計算では、Smagorinski SGSモデルを適用)特有の計算となる。LESでは式(1)および式(2)から流れ場、すなわち、速度 ui と圧力 p の時間変化を得る。ここで、式(1)に2次精度Adams-Bashforth法、式(2)に1次精度Euler法を用いて時間微分について時間刻み δt で離散化すると、
uin−uin-1=δt {1.5fi (un-1,pn-1)−0.5fi (un-2,pn-2)} (3)
Dn+1 −Dn =δt{▽2pn + gi (un)} (4)
を得る。ここで、上付き添え字 n-2,n-1,n は離散化した時間ステップをあらわす。式(3)は速度成分 uin の3成分について、式(4)は連続の式の条件
Dn+1=0 (5)
を代入したのち圧力 pn についての代数方程式とみなして、これらを順次計算することで時間ステップ n の数値解を得る。以上の数値解法はMAC法と呼ばれ、非圧縮性流れ場シミュレーションに広く用いられている方法である。
(3)、(4)式の右辺 fi 、gi は空間微分のみを含む。本計算では、偏微分方程式の数値解析手法として一般的な有限差分法(finite deference method;FDM)と有限要素法(finite element method;FEM)を用いた2種類の計算プログラムを使用した。それぞれの計算手法を表1にまとめて示した。
プログラム名 |
LES_FDM |
LES_FEM |
離散化法 |
有限差分法 |
有限要素法 |
計算アルゴリズム |
MAC 法 |
MAC 法 |
時間離散化スキーム |
2次精度 Adams-Bashforth |
2次精度 Adams-Bashforth |
計算格子分割・ 空間離散化スキーム |
直交直線座標格子 2 次精度中心差分 |
6面体双1次要素 Galarkin 法 |
圧力ポアソン式の行列解法 |
ICCGS 法 |
CG 法 |
LES モデル |
Smagorinski モデル |
Smagorinski モデル |
ところで、上記に示した非圧縮性流れの非定常解析において、計算時間の過半は式(4)、(5)から得られる圧力ポアソン方程式の求解に費やされる。特に、乱流LESのように格子点数の多い問題では反復解法が用いられるが、そこに現れる典型的な演算式を用いたベンチマークテストが姫野9)、白山10)よりそれぞれ提案されている。前者は古典的なヤコビ法、後者はSOR法の代入演算を模擬している。これらは、数10行程度プログラムによるポータビリティの良いテストであるため、パソコンも含む多くのシステムでの実行結果が報告されているので、今回のテストでも合わせて取り上げた。なお、白山のオリジナルコードはC言語で書かれているが、ここでは著者らの乱流LES実行環境に合わせてFortranに書きなおしたものを用いている。
3.2実行テスト結果
まず、FDMおよびFEMを適用したLES乱流解析プログラムによるチャンネル乱流シミュレーションをサンプルとした実行テストについて示す。初期条件には前もって同じプログラムで計算した乱流場の数値解を代入し、少数回の時間ステップだけ計算を進行した(実際の解析では約10000ステップを実行する)。実行したサンプル計算を表2に、使用した計算機およびその仕様を表3に示す。ここで用いた計算機は東京大学に設置されているもので、大型計算機センター、生産技術研究所共同利用計算機室、あるいは、著者の所属する研究室にて運用されている。実行テストは、実際のプログラム実行環境を想定して、通常のマルチユーザー/マルチジョブ環境で実施した。そのため、計測値の一般性や再現性は必ずしも保証できないが、いくつかのテストから計算時間の測定誤差は数%程度と推定している。また、ここに記載していない機種の詳細な仕様や、運用されているソフトウェアーによっても結果が変わる恐れがあることを指摘しておく。なお、Fortranコンパーラーのオプションについては、メーカーの標準推奨値を用いている。コンパイラーの自動最適化による効果は小さくないこともあるので、使用機種の解説書に従うことをお勧めする。表4に各計算機による計算時間を示した。今回用いた機種のいくつかは複数のCPUで構成されており並列計算が可能であるが、実行テストはすべて単体CPUで実施した。
各手法のプログラム上の特徴として、FDMでは各計算点の長い配列に対する計算が最内側DOループとなるが、FEMでは要素毎の節点(本プログラムでは8点)に対する計算が最内側DOループとなることが多い。ベクトル演算プロセッサーをもつ機種ではこの点が重要なチューニング対象となるが、スカラー機種においてはあまり大きな影響はないと考えられる。(本テストプログラムはベクトル演算プロセッサー向けのチューニングを行っている。この修正はベクトル演算プロセッサーを持たない計算機では不用であるが、本実行テストでは主に計算機ハードウェアーの性能を判定する目的のため全ての計算機で修正プログラムを使用している。修正を行わないプログラムではOrigin 2000(R10000 198MHz)で約60%に計算時間が短縮された。)
同様に、ベンチマークプログラム(A:姫野、B:白山、C:加藤)の結果について表4にFLOPS値で示した。いくらかばらつきはあるものの上記LESコードの結果との相関は妥当なものと思われ、計算性能評価として実際的にも有効といえる。
計算ケース |
プログラム |
計算点(節点)数 |
時間ステップ数 |
無次元時間刻 |
FDM-0 |
LES_FDM |
32x64x32=65,536 |
10 |
0.01 |
FDM-1 |
〃 |
〃 |
30 |
〃 |
FDM-2 |
〃 |
〃 |
100 |
〃 |
FEM-0 |
LES_FEM |
49,060 |
1 |
0.01 |
FEM-1 |
〃 |
〃 |
4 |
〃 |
FEM-2 |
〃 |
〃 |
10 |
〃 |
姫野 Bench |
ヤコビ反復 |
128x64x64 |
− |
− |
白山 Bench |
SOR |
101x55x51 |
− |
− |
No. |
コンピュータ機種名
|
CPU |
主メモリ |
OS |
コンパイラー |
0 |
DEC Alphastation 600-5/333 |
DEC 21164 (333MHz) |
384MB |
OFS 1v3.2c |
DEC Fortran |
1
|
Visual Technology Alpha 600 |
DEC 21164A (600MHz) |
256MB |
Digital UNIX 4.0D |
DEC Fortran |
2 |
Compaq XP1000 |
DEC 21264 (500MHz) |
512MB |
Digital UNIX 4.0D |
DEC Fortran |
3 |
SGI O2 |
MIPS R5000SC (200MHz) |
192MB |
IRIX 6.5 |
Fortran77 4.02 |
4 |
Fujitsu S-7000U M350 |
Ultra SPARC II(336MHz) (x8) |
2GMB
|
Solaris 2.1 |
Fujitsu Fortran90v1 |
5 |
IBM RS6000/590 |
IBM Power2 (66MHz) |
128MB |
AIX 3.2.5 |
Fortran |
6 |
SGI Origin 2000 |
MIPS R10000 (198MHz)(x8) |
1GB |
IRIX 6.2 |
MIPS Power Fortran 7.0 |
7 |
SGI Origin 2000 |
MIPS R12000 (300MHz)(x16) |
16GB |
IRIX 6.4 |
MIPS Power Fortran 7.0 |
8 |
DELL XPS450 |
Pentium II (450MHz) |
512MB |
UNICOS 9.0 |
CF90 V2.0 |
9 |
Visual Technology Alpha 600 |
DEC 221164A (600MHz) |
256MB |
Windows NT 4.0 |
DEC Fortran 1.1 |
10 |
Fujitsu VX
|
(2PE) |
2 GB |
UXP/V |
VP-Fortran |
11 |
Hitachi S3800/480
|
2 GB |
VOS 3/FS |
HAP Fortran90 |
No. |
Computer System |
姫野 (MFlop) |
白山 (MFlop) |
FDM (sec)Level-0 1 2 |
FEM (sec)Level-0 1 2 |
||||
0 |
DEC Alpha |
114 |
385 |
1164 |
111 |
412 |
992 |
||
1 |
VT Alpha |
102 |
73 |
235 |
|||||
2 |
XP1000 |
209 |
236 |
190 |
|||||
3 |
SGI O2 |
30 |
19 |
||||||
4 |
S-7000U |
39 |
477 |
1127 |
|||||
5 |
IBM 590 |
1452 |
533 |
||||||
6 |
Origin (198MHz)(no-Vec) |
124
|
71 |
80 |
210 125 |
742 |
88 |
288 |
772 |
7 |
Origin (300MHz)(2CPU) (4CPU) (8CPU) |
236 389 718 1634 |
145 |
125 |
|||||
8 |
DELL(NT) |
91 |
|||||||
9 |
Alpha(NT) |
57 |
|||||||
10 |
Fujitsu VX (no-vec) |
760 |
376
|
405 |
100 1115 |
||||
11 |
HitachiS3800 (no-vec) |
26 |
38 |
105 |
238 |
789 |
* 計測はtimeコマンドなどで表示される全CPU時間(sec)による
* no-Vecは、ベクトル化修正をしないプログラムを使用