— 28 —SENAC Vol. 49, No. 1（2016. 1）［大学 ICT 推進協議会 2015 年度年次大会論文集より転載］

暑熱環境下体温上昇解析コードのスーパーコンピュータ SX-ACE での高速化と並列化佐々木 大輔 1), 山下 毅 1) ,西尾 渉 2), 浅野 陽平 2) ,平田 晃正 2)
江川 隆輔 3) , 小林 広明 3)1) 東北大学 情報部 情報基盤課
2) 名古屋工業大学
3) 東北大学 サイバーサイエンスセンター スーパーコンピューティング研究部
d-sasaki@cc.tohoku.ac.jp
概要：東北大学サイバーサイエンスセンターでは，大規模科学計算システムを最大限活用するために計算科学者と本センターの計算機科学者が連携しながら，プログラムの高速化技法の研究・開発に取り組んでいる．本稿では，名古屋工業大学の研究グループが開発してきた暑熱環境下体温上昇解析コードのベクトル型スーパーコンピュータ SX-ACE での高速化について紹介する．現在ワークステーションで数時間程度かかっている解析時間を数十秒程度に短縮できれば，様々な環境を模した解析を即時的に処理でき，熱中症の注意喚起等への展開が期待できる．

図1

スーパーコンピュータ SX-ACE

1 はじめに報基盤共同利用・共同研究拠点(JHPCN) や革新的

東北大学サイバーサイエンスセンター(以下，本ハイパフォーマンス・コンピューティング・インセンター) は，全国共同利用機関として大規模科フラ(HPCI) を構成し，多様なニーズに応える計算学計算システムの運用と，本システムを最大限に環境の提供も行っている．以上のように本センタ

活用可能なコードの高速化技法や新しいシミュレーでは，利用者である計算科学者と本センターのーション技術の研究・開発に取り組んでいる．本

計算機科学の専門家が密に連携しながら，科学・センターでは 1997 年からさまざまな分野におけ工学の恒常的な進歩を支える共同研究，利用者コる実アプリケーションの高速化の支援を計算科学ードの高速化支援活動を推進している．

分野の利用者との共同研究を通じて行っている

本稿では，名古屋工業大学の研究グループが開[1]．また，センター独自の共同研究に加え，全国発している暑熱環境下体温上昇解析コード[2]のの情報基盤センター等と連携して，学際大規模情高速化について紹介する．

— 29 —

暑熱環境下体温上昇解析コードのスーパーコンピュータ
SX-ACE での高速化と並列化

2 スーパーコンピュータ SX-ACE

では，年齢・性別の違いによるウェブ等による告本センターに導入されているスーパーコンピュ知に留まっており，これらを人体の個体差とそのータ SX-ACE を図 1 に示す．SX-ACE の CPU はこれ変化を考慮した熱中症リスクの評価は行われていまでのベクトルプロセッサと同様に，高ベクトルない．従って，体の個体差とその変化を考慮した演算性能と高メモリバンド幅を継承している．ま

高い精度を有する熱中症リスクを評価できれば，た，SX シリーズ初のマルチコア化により，4 コア

一般的な啓発活動のみならず，熱中症のリスク管で構成され最大ベクトル演算性能は 256GFLOPS で理という新しい領域を開拓できると考えられる．

ある．
各コアには容量が 1,024KB に拡張された ADB

名古屋工業大学の研究グループでは，部位ごと（Assignable Data Buffer）が搭載され，ADB との血液温度差を考慮できる混成熱解析手法を開発，コア間のメモリバンド幅は 256GB/sec を有する．

精巧な数値人体モデルに適用し，測定値との比較データが ADB 経由でアクセスされる場合は， メモにより，その有効性を確認してきた．解析には，リバンド幅は 4Bytes/FLOP となり，メモリ負荷の図 2(a)の国立研究開発法人情報通信研究機構

高いアプリケーションでも高い実行効率で実行可(NICT)の成人男性[3]に相当する日本人の解剖学能となっている．また，単一コアで演算を実行す的数値人体モデル[4]を使用している．これらのモる場合も 256GB/sec のメモリバンド幅が利用でき，

デルは皮膚，筋肉，脂肪，骨，骨髄液，心臓，水

4Byte/FLOP での実行が可能となっている．SX-ACE

晶体，血管など 51 種類の組織から構成されておは高ベクトル演算性能，高データ供給性能により，り， 2mm の分解能を有している．図 2(b)のよう高い実行性能を得ることができる．に血液温度を考慮するため，モデルの各部位ごと

本センターの SX-ACE は 2,560 ノードで構成されに分割して計算している．ている．各ノード間は最大 4GB/sec×2（双方向）で接続された 2 段ファットツリーネットワークで構成され，システム全体の性能は 706.6TFLOPS となっている．利用者には，最大 1,024 ノードの大規模な実行環境を提供している．

3 暑熱環境下体温上昇コードの概要
近年の地球温暖化に加え，2011 年の東日本大震災以降の節電要求と相まって，2011 年以降，熱中症による搬送者数は増加傾向にあり，2014年にその数は全国で約 58,000 人に達したと言われている．熱中症に関する啓発活動は，温熱生理（特に，スポーツ医学）あるいは救急医療に基づく考察がほとんどであり対処療法的である．また，(a)

啓発活動も展開される中，従来の「気温・湿度」に加え，「暑さ指数」なども導入されているが，その認知度は高いとは言えない．
また，熱中症のリスクは性別・年齢のみならず，身長・体重等の人体の個体差と置かれた環境に大きく依存することが知られている．しかし，現状図2(b)

数値人体モデルの外観(a)と部位分割(b)の定義図

— 30 —

SENAC Vol. 49, No. 1（2016. 1）

環境下体温上昇コードの初期性能解析結果を表1に示す．解析には，SX-ACEの簡易性能解析ツール
FTRACEを用いた．
初期性能解析の結果，温度上昇の計算ルーチン（サブルーチンA）とファイルの入出力処理ルーチン（サブルーチンB）の実行時間が全体の約98%を占めていたため，この2つのサブルーチンを高速化することを検討した．また，コア性能の向上を目的とした高速化と，将来の大規模並列実行を見据えた，コードの並列化にも取り組んだ．

表1
PROC.NAME

図3

解析のフローチャート

サブルーチンＡ
サブルーチンＢ
サブルーチンC
サブルーチンD
サブルーチンE
サブルーチンF
サブルーチンG
サブルーチンH
total

初期性能

FREQUENCY EXCLUSIVEMFLOPS V.OP AVER.
TIME[sec](%)
RATIO V.LEN
300 3371.986( 89.9)
193.7
14.8 216.5
1 325.450( 8.7)
1.4
0.36 224.3
300
25.284( 0.7)7250 99.33
222
1114.385( 0.4)
154.6 41.36 219.9
300
13.450( 0.4)
14626 99.26 223.6
10.885( 0.0)
180.1 94.87 217.6
10.325( 0.0)
3271.3 98.99 229.1
10.184( 0.0)
099.1 218.6
915 3751.949(100.0)
276.4 45.62 221.5

暑熱環境下体温上昇解析コードのフローを図 3

以下では本コードに適用した高速化について述に示す．本コードは実行すると，暑熱環境下におべる．シングルコアでの高速化では，効率的に高ける熱定常状態の初期温度分布，人体モデル，発速化作業を行うため，反復回数を 300 回とし実行

汗モデル，外気温などのデータを読み込む．読み時間を短縮した．並列化後は実際に研究で使用さ込みが完了すると，発汗率や血流量の変化，体温れている反復回数 5,400 回とした．

調整機能を考慮して，人体の温度変化を計算す

4.2 シングルコアでの高速化

る．
暑熱環境下体温上昇コードの解析例を図 4 に示す．図は，3 時間暑熱ばく露（37℃）を行った際の体表面温度を表している．

4.2.1 ファイル入出力の高速化
サブルーチン B と入力データを解析すると，入力データがテキスト形式になっていることと，三次元の人体モデルデータを読み込む際，2mm に分割されているデータを，ループが実行される度に読み込むようになっていたため，これが処理を遅くする原因となっていることが判明した．ファイルの入出力を行う際，一般的にバイナリ形式で読み込みを行う方がテキスト形式で読み込みを行うよりも高速となる．そのため，入力データをテキ

図4

暑熱ばく露における表面温度上昇の解析結果

スト形式からバイナリ形式に変換するコードを開発し，本コードの入力データをバイナリ化した．

4 暑熱環境下体温上昇コードの高速化

バイナリ化することでファイルのサイズも半分程

4.1 SX-ACE での初期性能解析度まで小さくなった．また，データを一括して読名古屋工業大学の研究グループが開発した暑熱み込むようにファイルの読み込み処理を変更した．

— 31 —

暑熱環境下体温上昇解析コードのスーパーコンピュータ
SX-ACE での高速化と並列化

高速化前と後の実行時間を表 2 に示す．ファイ
ル入出力の実行時間がテキスト形式では約 325 秒かかっていたが，入力データをバイナリ形式にし，なおかつデータを一括して読み込むようにすることにより１秒以下にすることができた．

表2

サブルーチン B の高速化の効果

PROC.NAME FREQUENCY EXCLUSIVEMFLOPS V.OP AVER.
TIME[sec](%)
RATIO V.LEN
before1 325.450( 8.7)
1.40.36 224.3
after
10.138( 0.0)
844.6 99.35 217.9

4.2.2 ベクトル化による高速化
次にサブルーチン A の高速化について検討した．
表 1 から，サブルーチン A はベクトル化率が約 14%と非常に低い値となっている．SX-ACE のベクトルプロセッサは，複数のデータを一括して演算を行うベクトル演算が可能であり，配列のそれぞれの

図5

オリジナルコード

図6

高速化後コード要素に同一の演算を行う計算に適している．ベク
トルプロセッサの性能を引き出すためには，スカラ処理での実行時間とベクトル処理が可能な実行時間の比であるベクトル化率を高めることが重要である．ベクトル化率が 90%を超えると急速に性能が向上するため，ベクトル化率を 100%に限りなく近づけることが重要となる．
対象のサブルーチンを解析すると 3 重ループ構造となっており，図 5 の前半では，後半の計算で必要な変数の値を決めるための処理が行われている．この変数がスカラ型となっているためベクトル化阻害の要因の 1 つとなっていた．また，図 5の後半では，別のサブルーチンを呼びだす処理があり，これもベクトル化阻害の要因となっていた．
以上のベクトル化阻害要因を取り除くため，図6 に示す通り，スカラ型の変数を配列変数に変更し，サブルーチン呼び出しをインライン展開した．
高速化前と後の性能を表 3 に示す．サブルーチ
ン A はベクトル化率が約 99%になり，約 22 倍の性能向上を得ることができた．

表3PROC.NAME
beforeafter

サブルーチンＡの高速化の効果

EXCLUSIVE
MFLOPS V.OP
AVER.
VECTOR
TIME[sec](%)
RATIO
V.LEN
TIME
3371.986( 89.9)
193.7
14.8
216.5
12.55
147.017( 73.1)
6448.599.16
196.4
138.76

— 32 —

SENAC Vol. 49, No. 1（2016. 1）

4.2.3 シングルコアでの高速化後の性能

Flat MPI では MPI 並列による分割を図 8 のルー高速化を行ったコードをシングルコアで実行しプ 1 で行った．Hybrid MPI では，ループ 1 を MPIた際の性能を図7に示す．棒グラフはコードの実行並列で分割し，分割後のループ 1 をさらに自動並時間，折れ線グラフはベクトル化率を表している．

列した．また，利用するコア数を同一にすることサブルーチンAとサブルーチンBに前項までに示しで両並列化の効果を比較することとした．

た最適化を施す事で，コード全体のベクトル化率並列化後の実行時間を図 9 に示す． 32 コアまが45%から99％に向上し，約18倍の性能向上を実現

での利用の場合は Flat MPI（194.9sec）が高速としている．

なっている． 40 コアを超えたあたりで，Flat MPIと Hybrid MPI の差は徐々に縮まり，160 コアの場合は Hybrid MPI（59.5sec）の方が高速となった．
この原因は，Flat MPI はプロセス数の増加に伴いプロセス間のデータ通信のオーバヘッドが増加しためと考えられる．

図7

シングルコアでの高速化の効果

4.3 コードの並列化
本コードはベクトル化等を行うことでシングルコアでの性能を高めてきた．更なる性能の向上のためには，ネットワークに接続される複数のノー

図9

コア数と実行時間のグラフ

ドを利用し，多数のコアで計算をする並列化を検討する必要がある．並列化にはノード内のコアレベルで MPI（Message Passing Interface）並列を行う Flat MPI，ノード内はタスク並列，ノード間は MPI 並列の Hybrid MPI がある．ノード内並列にはコンパイラによる自動並列を利用した．
本節では先に述べたベクトル化を行ったコードの 3 重ループについて Flat MPI，Hybrid MPI による並列化を行い，性能の比較を行った．今回の入図 10

コア数と性能向上の比

力データは，
図 8 のループ 1 の反復回数は 160 回，ループ 2 の反復回数は 320 回となっている．

4.4 並列化後の全体の性能並列化前後の性能向上比を並列数毎にまとめた
図 10 に示す．図の点線はコア数を n 倍にしたときに性能向上比が n 倍になる理想値を表している．
Hybrid MPI で 40 ノード 160 コア利用した場合，並列化前の反復回数 5,400 回のシングルコア実行（3,552sec）に比較し，約 60 倍の性能向上が得ら

図8

並列化対象のループ

— 33 —

暑熱環境下体温上昇解析コードのスーパーコンピュータ
SX-ACE での高速化と並列化れたが，理想値の約 40%程度となった．
今回実装した Hybrid MPI では図 8 のループ 1 を可能となった．今後，熱中症リスクのリアルタイ
ム評価・予測への応用が期待される．

分割し 1 プロセス 4 タスク並列で実行しているため，SX-ACE を最大 40 ノードまでしか利用できな

6 参考文献い．そこで，将来の大規模化を見据え図 8 のルー[1] 東北大学サイバーサイエンスセンター, 高速化推進

プ 2 を自動並列し，160 プロセス，4 タスク並列の研究活動報告，第 6 号，p8-12，(2015).

計 640 コアを利用することも検討した．640 コア[2] 西尾 渉，浅野 陽平，佐々木 大輔，山下 毅，平田で実行した場合，実行時間は約 38 秒となりもっと晃正，江川 隆輔，ベクトルスーパーコンピュータ SX-も高速となったが、性能向上比は理想値の約 14%-ACE による暑熱環境下体温上昇の高速解析，信学技法，程度となった．この原因として，今回の MPI 並列

Vol.115, No.213, p43-48, 2015．

による人体モデルの分割方法は，胴体付近は処理[3] T. Nagaoka, S. Watanabe, K. Sakurai, E. Kunieda,

量が大きく，腕などは比較的処理量が小さいため，

M. Taki and Y. Yamanaka, S. Momose, Y. Isobe, :プロセス間の処理量のインバランスが発生してい“Developmentると考えられる．更なる並列化とインバランスの

whole-body voxel models of Japanese adults male and解消による高速化は今後の課題である．

female of average high and weight, and application

ofrealistic

high-resolutionof models to radio-frequency electromagnetic-field

5 まとめ
本稿では暑熱ばく露における人体の表面温度上

dosimetry”, Phys. Med. Biol., vol.49, pp.1-15,(2004).

昇の解析に，本センターが今までに取り組んでき[4] T. Nagaoka, E. Kunieda, and S. Watanabe :

た高速化支援で得られた高速化技法を適用し高速“Proportion-corrected scaled voxel models for化を行った事例について紹介した．本センターのJapanese children and their application to the

提供しているスーパーコンピュータ SX-ACE の性

numerical dosimetry of specific absorption rate for

能を最大限に引き出すためには，ベクトル化率をfrequencies from 30 MHz to 3 GHz”, Phys. Med. Biol.,

100%に限りなく近づくよう高める必要である．まvol.53, no.23, pp.6695-6712, (2008).

た，SX-ACE は従前のベクトル型スーパーコンピュータより，さらにノードを多数接続することで性能の向上を図る構成となっている．従って，今後の高速化支援においては，シングルコアでの高速化に加え，複数のノードのコアを利用する並列化を行うことで性能を引き出していくことが重要となる．
研究の最前線で開発が行われている暑熱環境下体温上昇の解析コードの性能解析情報に基づき高速化を行い，160 コア利用で約 60 倍の性能向上が得られた．各プロセス間の処理量のインバランスの改善により，更なる並列化効率の向上が今後の課題となっている．
本コードは，高速化により数時間程度を要するシミュレーションを数十秒程度で計算することが