jh220027

非同期入出力機構を用いた大規模乱流直接数値シミュ
レーションコードの開発
横川三津夫（神戸大学）

概要
スペクトル法による非圧縮一様等方性乱流直接数値シミュレーション（DNS）は，その精度の高さから乱流の特性を明らかにするために広く用いられている．しかし，これまで行われてきたシミュレーションよりも格子点数の大きい DNS は，膨大な計算時間とメモリ容量が必要となるため，スーパーコンピュータのメモリ容量を超える DNS は実現できない．本課題では，コード内の変数を細分化し，複数の一時ファイルに格納することにより，使用メモリ容量を削減する省メモリ DNS
コードを開発した．時間積分において，これらのファイルを順次処理することにより DNS を行う．
この DNS コードを用いて，速度など 16 個の変数の分割数を変えながら，それらの値を一時ファイルに保存し，同期型及び非同期型の入出力（I/O）機能を用いて初期性能評価を行った．この結果，
8 分割時の同期 I/O による実行方法が最も計算時間が短かった．また，非同期型 I/O による計算時間は，同期型 I/O の計算時間よりも大きい結果となった．

科）：スキーム及び計算結果評価

1 共同研究に関する情報
1.1• 小松一彦（東北大学サイバーサイエンスセ共同研究を実施した拠点名ンター）：コード性能評価• 東北大学 サイバーサイエンスセンター
1.2• 曽我隆（NEC ソリューションイノベータ関西支社）：コード高速化検討の総括

課題分野• 山口健太（NEC ソリューションイノベー• 大規模計算科学課題分野
1.3タ関西支社）：コード高速化検討，評価共同研究分野 (HPCI 資源利用課題のみ)• 山根悠輝（NEC ソリューションイノベー• 超大規模数値計算系応用分野

タ関西支社）：コード高速化検討，実装，• 超大規模情報システム関連研究分野

評価

1.4

• 松本泰生（神戸大学大学院システム情報学

参加研究者の役割分担研究科）：コード高速化性能評価• 横川三津夫（神戸大学大学院システム情報• 畑中裕翔（神戸大学大学院システム情報学学研究科）：総括及びコード性能評価研究科）：コード高速化性能評価• 撫佐昭裕（東北大学サイバーサイエンスセ
ンター：コード高速化検討• 石原卓（岡山大学大学院環境生命科学研究1

2 研究の目的と意義

3 当拠点公募型研究として実施した意義

乱流は，自然や科学技術のさまざま問題に現れる現象であり，簡単な流れを除いては未だに東北大学サイバーサイエンスセンターは，解析的な解が得られない未解決な問題として知現在ベクトル型プロセッサのスーパーコンピられていいる．したがって数値シミュレーショ

ュータ SX-Aurora TSUBASA（AOBA-A）をンが唯一の解決手段と考えられている．

運用している．SX-Aurora TSUBASA は，x86

非圧縮性乱流 DNS コードは，基礎方程式でアーキテクチャのプロセッサをホスト計算機あるナビエ・ストークス方程式をフーリエ・ス（VH）とし，PCI-e カードとして実装された複ペクトル法により離散化し，フーリエ係数に数のベクトルエンジン（VE）から構成されて関する常微分方程式を数値積分するものであいる．VE 部にはベクトル計算ユニットなどのる．計算時間のほとんどが，非線形項を求める

他にダイレクトメモリアクセス（DMA) エンジための 3 次元高速フーリエ変換（Fast Fourierンが実装されており，この DMA エンジン部をTransform，3D-FFT）に費やされており，この活用した高速 I/O 機能を提供している．また，部分の高速化が必須である．また，問題規模を計算と I/O を同時に実行できる非同期 I/O 機

大きくすると必要なメモリ量が増加するため，能を持ち，本課題でファイルへの一時退避した使用するスーパーコンピュータのメモリ量を超変数の I/O に非同期型 I/O を用いることがでえた大規模な計算格子を扱えない問題がある．

きた．

近年のスーパーコンピュータは，各計算ノード

4 前年度までに得られた研究成果のにファイルアクセス速度の大きい Solid State

概要

Drive (SSD) を使用したローカルファイルシス
テムを持つものが多く見られる．DNS コード

該当なしの中の変数の一時退避場所として，これを利用

5 今年度の研究成果の詳細することにより実行時に必要なメモリ容量を削減することが考えられる．ファイル入出力時間

オリジナルの非圧縮一様等方性乱流 DNSが追加され全体の計算時間が増加するが，大規

コードは，倍精度変数を用いた Fortran コード

模計算を可能にする方法である．

であり，また y 軸，z 軸の 2 軸で領域分割さ本課題では，一様等方性乱流 DNS コードにれた並列化コードである．このコードに対し，対し，計算ノード直結のファイルシステムに変ファイル I/O を用いて使用メモリ量を節約す数の退避場所としての一時ファイルを作成し，るコードを実装した．

実行時の使用メモリ容量を削減する実装を行

メモリ節約型 DNS コードで扱う変数の分割

い，その計算性能及びファイル入出力性能を評

イメージを図 1 に示す．図 1 の左の立方体は，価することを目的とした．非圧縮性乱流 DNS

非圧縮性乱流 DNS コードで使用する変数がプにおいては，大きな格子点数による DNS デー

ロセス分割によって領域分割されていることタを得ることにより乱流研究に貴重なデータをを表している．また，右上の直方体は 1 つの示すことができる．

プロセス中の変数がさらに分割されることを表す．ここで分割された変数を一時ファイルに退2

Pencil domain decompositionin spectral space

A subregion assigned to an MPI processreal(kind=8) :: a(n,m,NN)
real(kind=8) :: b(n,m,NN)

real(kind=8) :: a(n,m,NN/nf)real(kind=8) :: b(n,m,NN/nf)
do F = 1, nf
read a(:,:,:), b(:,:,:) from the #F file.

𝑘

do k = 1, NN
do j = 1, m
do i = 1, na(i,j,k) = ... b(i,j,k)
end doend d0end do𝑘

do k = 1, NN/nf
do j = 1, m
do i = 1, na(i,j,k)=... b(i,j,k)
end doend doend do𝑘write a(:,:,:) to the #F file.

図1

各プロセスにおける変数の分割イメージ

end do図2

メモリ削減コードの実装イメージ

避させ，必要な時に順に入出力処理を行い，計real(kind=8) :: a(n,m,NN/nf,0:2)
real(kind=8) :: b(n,m,NN/nf,0:2)

算に利用する．したがって，1 つの変数に対してメモリ上で確保する記憶領域は，ファイル数

do F = 1, nf
nr = mod(F‐1,3)
nc = mod(F+1,3)
nw = mod(F ,3)

を Nf とすると，既存コードの使用メモリ容量の N1f となる．ただし，3D-FFT に用いる変数! Computation region for the data in the #F file.
do k = 1, NN/nf
do j = 1, m
do i = 1, na(i,j,k,nc) = ... b(i,j,k,nc)
end doend doend doについては，その実行時に all to all 通信が頻繁に現れ，ファイルアクセス回数が多くなるため，ファイル退避しないこととした．
この方法の実装イメージを図 2 に示す．3 次! I/O operation region
read a(:,:,:,nr), b(:,:,:,nr) from the #(F+1) file.
write a(:,:,:,nw) to the No. #(F‐1) file.

元配列の３次元目を N1f し，分割された各部分

end doを別々のファイルに書き込む．実行時には，各ファイルを順番に読み込み，その部分の計算を

図3

非同期 I/O の実装イメージ行い，結果を同じファイルに上書きする．この方法では，入出力と計算を順番に行っており，同期型 I/O により実行する．

非同期 I/O コードに対し，東北大学サイバー

非同期 I/O については，入出力時間より計算

サイエンスセンターのスーパーコンピュータ時間が大きい場合に，入出力時間が計算時間にAOBA-A を用いて，DNS の１時間ステップの隠蔽されることを確認しており，本コードにつ計算時間を計測した．計算格子数は 5123 ，並いても非同期 I/O 機能を用いたコードも実装

列数を 8 × 8 とし，各変数の一時ファイル数をした．実装のイメージを図 3 に示す．配列変数

2，4，8，16, 32 と変えながら計算性能を比較

を，4 次元目にサイズ 3 を持つ 4 次元配列に拡した．64 並列プロセスは，64 個の VE に割り張し，それぞれ読み込む領域，計算する領域，当て，各 VE ではスレッド並列計算を行った．

書き込む領域とし，ラウンドロビンにより計算

また，VH 直結の SSD で構成されたファイルを進める方法である．ループの最初と最後に工システム，HDD で構成された共用の並列ファ夫が必要であるが，これにより，ピンク色の部

イルシステムとの比較も行った．ファイルに退分と青色の部分がオーバラップして実行できる

避した変数は，速度など 23 変数である．図 4と考えた．に，各ケースの実行時間を示す．

オリジナルコード，同期 I/O コード，及びオリジナルコードの計算時間は，約 1.8 秒

3

16.0

コード開発と動作検証を行うこととした．

Calc. of NL terms

14.0

Other calc.
I/O in NL terms

12.0

Other I/O

6 今年度の進捗状況と今後の展望

OthersTime (sec.)

10.0
8.0

計算ノードに直結した第一階層のファイルシ

6.0

ステム上のファイルに変数退避によりメモリ4.02.0削減する DNS コードの計算時間の評価を行っ

0.0
2
Original

48 16 32

HDD
Synchronous I/O

2

48 16 32

HDD
Asynchronous I/O

図4248 16 32

SSD
Synchronous I/O

24た．同期型 I/O と非同期型 I/O の計算時間を

8 16 32

SSD
Asynchronous I/O

比較すると，非同期型 I/O の性能が十分に発計算時間揮されておらず，今後さらに実装の検討が必要と考えている．本課題では，計算時間が増加することを許容して，スーパーコンピュータが持程度であるのに対し，メモリ節約型コードは，つメモリ容量を超える大規模 DNS を実行する

I/O 時間が必要なため，約 4 倍から約 7 倍のことが目標である．今後，メモリ節約型 DNS計算時間が必要だった．I/O 時間が計算時間よ

コードをスーパーコンピュータ富岳への実装をりもかなり大きかったためである．非同期 I/O

行い，本コードの性能評価と大規模な DNS をについては，ファイル分割数の増加とともに計目標としたい．

算時間が増加した．非同期 I/O では，VE 側の7 研究業績一覧（発表予定も含む）

入出力命令に対し，VH 側に対応するスレッドを生成すると聞いており，このスレッド数は退学術論文 （査読あり）

避変数の数とファイル分割数の積となるため，国際会議プロシーディングス

スレッド数増加によるオーバヘッドが原因と考（査読あり）• M. Yokokawa, Y. Yamane, K. Ya-

えているが，今後さらに調査したい．HDD とmaguchi,T. Soga,

SSD の比較では，やはり計算ノードにローカ

A. Musa,K. Komatsu,

T. Ishihara,ルに接続された SSD の方が計算時間が短くな

and H. Kobayahashi,“I/O Perfor-る結果となった．

mance Evaluation of a Memory-Saving

一方，並列化圧縮性乱流 DNS コードについDNS

Codeては，新規にスクラッチから開発しており，各ASA,” Proc.

部分の動作確認を行っている．コード実装でnational

は，移流項に対し 8 次精度コンパクト差分，onT. Matsumoto,SX-Aurora

TSUB-of 2023 IEEE InterandDistributed

Processing

SymposiumWorkshops

拡散項に対し 8 次精度中心差分を適用するた(IPDPSW),pp.

め，並列領域の袖領域のデータ交換の実装を

https://doi.org/10.1109/IPDPSW59300.

行った．また，低波数成分への外力挿入部分に2023.00117

ついて，離散フーリエ変換（Discrete FourierTransform，DFT) への変更を行い，全体の計算を確認した．非圧縮性 DNS コードへのメモ

Parallel

国際会議発表（査読なし）

国内会議発表（査読なし）

692-696，(2023).

• 畑中裕翔，松本泰生，山根悠輝，山口健太，

リ削減実装により非同期 I/O による計算時間

曽我隆，撫佐昭裕，小松一彦，今村俊幸，石短縮は現状では見込めないことから，当面は4

原卓，横川三津夫，“メモリ節約型非圧縮性乱流直接数値シミュレーションコードの挙動解析，” Vol. 2023-HPC-188, No. 5,

pp. 1-8 (2023)
公開したライブラリ等
その他（特許，プレス発表，著書等）

5