高速化技術の紹介& 東大センターにおける産業利用の将来
東大センタ における産業利用の将来

中島研吾
東京大学情報基盤センタ
東京大学情報基盤センター
第11回PCクラスタシンポジウム パネルディスカッション
パネルディスカッション「実用アプリの加速のために実用アプリの加速のために何が必要か：PCクラスタコンソーシアムに何ができるか」
2011年12月8・9日

10thPCCC

2

最近10年くらいやっていること
2008年も2009年にも話したこと，2010年にも話した・・・
年にも話した• 様々な科学技術手法の様々な処理に対応するライブラリの集合体に基づく科学技術アプリケーショ
ン開発基盤を整備し ポストペタスケ ル環境にン開発基盤を整備し，ポストペタスケール環境における移植性，信頼性の高い科学技術アプリケーションの効率的な開発のためのフレームワークを提供する。
– 多様なHPC環境（SC11：10種類以上のアーキテクチャ）– その急速な進歩・変動• GeoFEM，HPC‐MW/HEC‐MW，OpenMM11th‐PCCC

3

11th‐PCCC

ppOpen‐HPC• 自動チューニング機構を有するアプリケーション開発・実行環境• ヘテロジニアスなアーキテクチャによる計算ノードを有するポストペタスケ ルシステムの処理能力を充分に引きるポストペタスケールシステムの処理能力を充分に引き出す科学技術アプリケーションの効率的な開発，安定な実行に資する– pp= post petascale，Five Key‐Issues （J.J. Dongarra）を考慮• 東大情報基盤センタ
東大情報基盤センターに2014年度に導入予定の数10に2014年度に導入予定の数10
PFLOPS級システム（ポストT2K）を最終的なターゲット：– スパコンユーザーの円滑な移行支援
スパコンユ ザ の円滑な移行支援– T2K，東大FX10（1.13PFLOPS），京，TSUBAME ，GPUクラスタ• JST‐CREST「ポストペタスケール高性能計算に資するシスJST CREST「ポストペタスケ ル高性能計算に資するシステムソフトウェア技術の創出（H23～H27）」

4

11th-PCCC

5

対象とするアーキテクチャ
対象とするアキテクチャ• ホストCPU– 8～16コア程度（またはそれ以上）を有するマルチコア低消費電
8 16 ア程度（またはそれ以上）を有するマルチ ア低消費電力CPU• Co-Processor
C P– 数十～数百のコアを有する複数のCo-Processor– PCI Expressに接続に接続• GPGPU：ホストCPUからCUDAまたはOpenCLによって利用する• Intel Many Integrated Core（MIC）ア
Core（MIC）アーキテクチャに基づくメニーコア
キテクチャに基づくメニ コア（Knights Series）：軽量OS，コンパイラが稼働する• GPGPU＋MICメニーコアもあり得る• ノード間ネットワーク：Infiniband等
Co Processor間通信はホストCPUを経ないで可能• Co-Processor間通信はホストCPUを経ないで可能• Hybrid並列プログラミングモデルは必須

11th‐PCCC

東大情報基盤センターのスパコン

FY
05

06 07 08 09 10 11 12 13 14 15 16 17 18 19
Hitachi SR16000/M1
based on IBM Power‐7

Hitachi SR11000/J2
18.8TFLOPS, 16.4TB
大容量メモリを使って自動並列化54.9 TFLOPS, 11.2 TB
Our Last SMP，MPPへ移行サポート

Hitachi HA8000 (T2K)
140TFLOPS, 31.3TB
MPIによる並列化，メモリは遅いが通信は良い

Fujitsu PRIMEHPC FX10
based on SPARC64 IXfx
1.13 PFLOPS, 150 TB
Hybridへの転回点，Flat MPIでも高い性能

Post T2K with Heterogeneous
Computing Nodes
O(101‐102)PFLOPS

本研究のターゲット

Peta

京Exa

6

11th-PCCC

7

ppOpen-HPC：基本的方針ppp• 対象離散化手法による分類（次ページ）• ハードウェアに依存しない共通インタフェースを有するア
プリケーション開発用ライブラリ群，耐故障機能を含む実行環境を提供– 各離散化手法の特性に基づく• 自動チューニング技術の導入により，様々な環境下における最適化ライ ラリ，最適化ア リケ シ ン自動 成ける最適化ライブラリ，最適化アプリケーション自動生成を目指す
数値ライブラリ システムソフトウェア アプリケーションション• 数値ライブラリ，システムソフトウェア，アプリケの専門家の協力：Co-Design• 既存ソフトウェア資産（e.g.
既存ソフトウェア資産（e g HEC
HEC-MW）の効率的利用MW）の効率的利用• 実際に動いているアプリケーションから機能を切り出す11th‐PCCC

8

対象とする離散化手法
局所的，隣接通信中心，疎行列

有限要素法

差分法

有限体積法

Finite Element Method
FEM

Finite Difference Method
FDM

Finite Volume Method
FVM

境界要素法

個別要素法

Boundary Element Method
BEM

Discrete Element Method
DEM11th‐PCCC

9User’s Program

ppOpen-APPL

FEM

FDMii

FVM

BEM

ppOpen-MATH
ppOpen
MATH

MG

ii
GRAPH

VIS

MP

ppOpen-AT

STATICii
DYNAMIC

ppOpen-SYS

COMM

ii
FTpp pppOpen-HPC

Optimized Application with
Optimized ppOpen-APPL, ppOpen-MATHDEM

11th‐PCCC

10ppOpen‐HPC：何を作るか（1/2）
ppOpen
HPC 何を作るか（ / ）• ppOpen‐APPL– 各手法個別の並列プログラム開発用ライブラリ群またはテンプレート• ①共通データ入出力インタフェース②• ②領域間通信• ③係数マトリクス生成• ④離散化手法の特性を考慮した前処理付き反復法• ⑤適応格子，動的負荷分散• ppOpen‐MATH
ppOpen MATH
– 各手法に共通の数値演算ライブラリ群– 単独で切り出しても使える11th‐PCCC

11ppOpen‐HPC：何を作るか（2/2）
ppOpen
HPC 何を作るか（ / ）• ppOpen‐ATppOpen AT– 自動チューニング（AT）コンパイラ：Directive Base
• 最適化ライブラリ群，アプリケーションを自動生成
最適化ライブラリ群 アプリケ シ ンを自動生成• OpenFOAM等オープンソースアプリ，ライブラリも対象• Hybrid，CUDA，OpenCL
b d• メモリアクセス最適化に主眼• CPU～GPU– タスク分散– 負荷分散• ppOpen‐SYS– ノード（アクセラレータ）間通信，耐故障機能に関連するライブラリ群

11th‐PCCC

12OpenACC• C/C++/FORTRAN＋Directive– ppOpen‐ATと類似• 最適化の範囲：現行のコンパイラと同じかそれ以下・・・であろう– 密行列，構造格子差分法（陽解法）には一定の効果– 全てをカバーできるわけではない• 非構造格子，陰解法，デ非構造格子 陰解法 データ依存性がある場合には別途タ依存性がある場合には別途最適化が必要– ライブラリ等で対応する必要がある11th-PCCC

ppOpenppOpen
ppp -AT Extension: Loopp Splittingpg!oat$ install LoopSplit region start!oat$ name MyFDMkernel
DO K = 1, NZ
DO J = 1, NY
DO I = 1, NX
J K)
RL(I) = LAM (I(I,J,K)
RM(I) = RIG (I,J,K)
RM2(I) = RM(I) + RM(I)RMAXY(I) = 4.0/(1.0/RIG(I,J,K) + 1.0/RIG(I+1,J,K) + 1.0/RIG(I,J+1,K) + 1.0/RIG(I+1,J+1,K))
RMAXZ(I) = 4.0/(1.0/RIG(I,J,K) + 1.0/RIG(I+1,J,K) + 1.0/RIG(I,J,K+1) + 1.0/RIG(I+1,J,K+1))
RMAYZ(I) = 4.0/(1.0/RIG(I,J,K)
4 0/(1 0/RIG(I J K) + 11.0/RIG(I,J+1,K)
0/RIG(I J 1 K) + 1.0/RIG(I,J,K+1)
1 0/RIG(I J K 1) + 11.0/RIG(I,J+1,K+1))
0/RIG(I J 1 K 1))!oat$ SplitPointRLTHETA(I) = (DXVX(I,J,K)+DYVY(I,J,K)+DZVZ(I,J,K))*RL(I)QG(I) = ABSX(I)*ABSY(J)*ABSZ(K)*Q(I,J,K)!oat$ SplitPointSXX (I,J,K) = ( SXX (I,J,K) + (RLTHETA(I) + RM2(I)*DXVX(I,J,K))*DT )*QG(I)SYY (I,J,K) = ( SYY (I,J,K) + (RLTHETA(I) + RM2(I)*DYVY(I,J,K))*DT )*QG(I)SZZ (I,J,K) = ( SZZ (I,J,K) + (RLTHETA(I) + RM2(I)*DZVZ(I,J,K))*DT )*QG(I)!oat$ SplitPoint
SXY (I,J,K)(I J K) = ( SXY (I(I,J,K)
J K) + (RMAXY(I)(RMAXY(I)*(DXVY(I(DXVY(I,J,K)+DYVX(I,J,K)))
J K)+DYVX(I J K)))*DTDT ))*QG(I)QG(I)
SXZ (I,J,K) = ( SXZ (I,J,K) + (RMAXZ(I)*(DXVZ(I,J,K)+DZVX(I,J,K)))*DT )*QG(I)SYZ (I,J,K) = ( SYZ (I,J,K) + (RMAYZ(I)*(DYVZ(I,J,K)+DZVY(I,J,K)))*DT )*QG(I)END DOEND DOEND DO!oat$ install LoopSplit region end13

11th-PCCC

ppOpen--AT Extension: Loop Fusion
ppOpen!oat$ install LoopFusion region start!oat$ name MyFDMkernel
DO K = 1, NZ
DO J = 1, NY
DO I = 1, NX
RL(I) = LAM (I,J,K)
RM(I) = RIG (I,J,K)
RM2(I) = RM(I) + RM(I)RMAXY(I) = 4.0/(1.0/RIG(I,J,K) + 1.0/RIG(I+1,J,K) + 1.0/RIG(I,J+1,K) + 1.0/RIG(I+1,J+1,K))
RMAXZ(I) = 4.0/(1.0/RIG(I,J,K) + 1.0/RIG(I+1,J,K) + 1.0/RIG(I,J,K+1) + 1.0/RIG(I+1,J,K+1))
RMAYZ(I) = 4.0/(1.0/RIG(I,J,K) + 1.0/RIG(I,J
1.0/RIG(I,J+1,K)
1,K) + 1.0/RIG(I,J,K
1.0/RIG(I,J,K+1)
1) + 1.0/RIG(I,J
1.0/RIG(I,J+1,K+1))
1,K 1))RLTHETA(I) = (DXVX(I,J,K)+DYVY(I,J,K)+DZVZ(I,J,K))*RL(I)QG(I) = ABSX(I)*ABSY(J)*ABSZ(K)*Q(I,J,K)
SXX (I,J,K) = ( SXX (I,J,K) + (RLTHETA(I) + RM2(I)*DXVX(I,J,K))*DT )*QG(I)RM2(I)*DYVY(I,J,K))*DTSYY (I,J,K) = ( SYY (I,J,K) + (RLTHETA(I) + RM2(I)
DYVY(I,J,K)) DT ))*QG(I)QG(I)
SZZ (I,J,K) = ( SZZ (I,J,K) + (RLTHETA(I) + RM2(I)*DZVZ(I,J,K))*DT )*QG(I)SXY (I,J,K) = ( SXY (I,J,K) + (RMAXY(I)*(DXVY(I,J,K)+DYVX(I,J,K)))*DT )*QG(I)SXZ (I,J,K) = ( SXZ (I,J,K) + (RMAXZ(I)*(DXVZ(I,J,K)+DZVX(I,J,K)))*DT )*QG(I)SYZ (I,J,K) = ( SYZ (I,J,K) + (RMAYZ(I)( YVZ(I,J,K) ZVY(I,J,K))) T ))*QG(I)QG(I)(RMAYZ(I)*(DYVZ(I,J,K)+DZVY(I,J,K)))*DTEND DOEND DOEND DO!oat$ install LoopFusion region end14

11th-PCCC

ppOpen-AT Extension:
ppOpenLoop Splitting & Fusion Selection!oat$ install LoopFusionSplit region start!oat$ name MyFDMkernel
DO K = 1, NZ
DO J = 1, NY
DO I = 1, NX
RL(I) = LAM (I(I,J,K)
J K)
RM(I) = RIG (I,J,K)
RM2(I) = RM(I) + RM(I)RMAXY(I) = 4.0/(1.0/RIG(I,J,K) + 1.0/RIG(I+1,J,K) + 1.0/RIG(I,J+1,K) + 1.0/RIG(I+1,J+1,K))
RMAXZ(I) = 4.0/(1.0/RIG(I,J,K) + 1.0/RIG(I+1,J,K) + 1.0/RIG(I,J,K+1) + 1.0/RIG(I+1,J,K+1))
RMAYZ(I) = 4.0/(1.0/RIG(I,J,K)
4 0/(1 0/RIG(I J K) + 11.0/RIG(I,J+1,K)
0/RIG(I J+1 K) + 1.0/RIG(I,J,K+1)
1 0/RIG(I J K+1) + 11.0/RIG(I,J+1,K+1))
0/RIG(I J+1 K+1))!oat$ SplitPointRLTHETA(I) = (DXVX(I,J,K)+DYVY(I,J,K)+DZVZ(I,J,K))*RL(I)QG(I) = ABSX(I)*ABSY(J)*ABSZ(K)*Q(I,J,K)!oat$ SplitPointSXX (I,J,K) = ( SXX (I,J,K) + (RLTHETA(I) + RM2(I)*DXVX(I,J,K))*DT )*QG(I)SYY (I,J,K) = ( SYY (I,J,K) + (RLTHETA(I) + RM2(I)*DYVY(I,J,K))*DT )*QG(I)SZZ (I,J,K) = ( SZZ (I,J,K) + (RLTHETA(I) + RM2(I)*DZVZ(I,J,K))*DT )*QG(I)!oat$ SplitPoint
SXY (I,J,K) = ( SXY (I,J,K) + (RMAXY(I)(RMAXY(I)*(DXVY(I,J,K)+DYVX(I,J,K)))*DT(DXVY(I,J,K) DYVX(I,J,K))) DT ))*QG(I)QG(I)
SXZ (I,J,K) = ( SXZ (I,J,K) + (RMAXZ(I)*(DXVZ(I,J,K)+DZVX(I,J,K)))*DT )*QG(I)SYZ (I,J,K) = ( SYZ (I,J,K) + (RMAYZ(I)*(DYVZ(I,J,K)+DZVY(I,J,K)))*DT )*QG(I)END DOEND DOEND DO!oat$ install LoopFusion Split region end
15

11th‐PCCC

マイルストーン＝動くソフトウェアの公開

公開内容
趣旨 目標
趣旨，目標
ターゲットマシンタゲットマシン
第 1 回 ppOpen-APPL プ ロ ppOpen-APPL ， ppOpen-AT 東大T2K
H24秋 トタイプ（適応格 が様々なマルチコアクラス 東大FX10子・動的負荷分散 タ，GPUクラスタで稼働す 京コンピュータ
クラ タを除く） 領域分 る こ と を 検 証 す る 。 大 学 GPUクラスタを除く），領域分割ユーティリティ，（学部，大学院）講義へのppOpen導入，講習会開催を継続的
MATH/VIS・MATH/VISに実施する。
ppOpen-AT/STATIC
プロトタイプ
第 2 回 ppOpen-HPC
ppOpen-HPC の 各 機 能 東大FX10
H25秋 （ ppOpen-ATO
AT ／ （ppOpen-AT／DYNAMICを（ OAT／DYNAMICを 京コンピュータ
京コンピ
タ
DYNAMIC を 除 除く）をこの時期までに一 GPUクラスタく）通り完成する。実アプリケーションへ適用すること
ケ
適用するにより更なる改良を図る。
第 3 回 ポストペタスケー ターゲットとするポストペ 東大ppシステム
H26秋 ス シ ス テ ム 向 け タスケールシステム向けのppOpen HPCプロト ppOpen-HPCをマシン稼働開ppOpen-HPCプロト
ppOpen HPCをマシン稼働開タイプ
始と同時に利用可能とする。
第 4 回 ポストペタスケー 第 3 回 で 公 開 し た ppOpen- 東大ppシステム
H27秋 ス シ ス テ ム 向 け HPCを実アプリケーション
ppOpen-HPC完成版 へ適用することにより，更に改良，最適化した最終バージョンを公開する。

16

開発環境
東大T2K
東大FX10GPUクラスタ（東大）
京コンピュータ

東大FX10GPUクラスタ（東大）
京コンピュータ

東大FX10小型メニーコアク
ラスタ
京コンピュータ
東大ppシステム
東大次期システム
小型メニーコアク
ラスタ
京コンピュータ11th‐PCCC

17

ppOpen‐HPC：いくつかのチャレンジ• レガシーコードへの対応
ガシド対応– FEMコードは基本的にO（104）プロセスまではスケールするはず• 衝突解析除く– これまでの試み（HPC‐MW等）：余り使われなかった原因• オープンソースアプリ・ライブラリのppOepn‐AT適用
オ プン
スアプリ ライブラリの適用• マルチコア・メニーコアクラスタ環境におけるロバストな前処 付 復法
処理付反復法– ILU，IC系：データ依存性– NUMAアーキテクチャ： First Touch，Sequential Reordering• ＋ Scalableな前処理付反復法– Parallel Multigrid• 粗いレベルにおける通信削減– MPI_Allreduce• 陽解法＋差分法＋非同期通信・・・解けない問題がある18

Weak Scaling:g MGCG
643cells/core, up to 512 nodes(2.05×109 cells)
T2K ((Tokyo):y ) 8,192,cores,, Cray‐XE6y((Hopper):pp ) 12,288,cores
Crayy XE6 ((Hopper@LBNL):pp) HB 6x4

100%

100%

90%

90%

80%

80%

70%

70%

60%

60%%%

T2K ((Tokyo):y ) HB 4x4

50%
40%

50%
40%

30%

30%

CG20%

Coarse Grid

10%CG20%

Coarse Grid10%Multigrid

0%

Multigrid

0%
64128

2565121024 2048 4096 6144 8192

96

core #

192

3847681536 3072 6144 9216 12288

core #ICIAM1111th‐PCCC

19将来展望• 大規模アプリ開発促進，計算科学の進歩に貢献• 商品化，カスタマイズ• エクサスケールへ向けてのCo‐Design体制推進
エクサスケ ル 向けてのC D i 体制推進
• 人材育成– 共通教材としての使用– e‐Learning環境整備
e Learning環境整備• 産業界におけるサイエンス（エンジニアリング）
ロードマップド ップ

11th‐PCCC

20

東大センターと企業利用• 現行（T2K）：社会貢献
現行（） 社会貢献– 2008年10月～– 基本的には資源提供型• 8ノード（1.18 TFLOPS）：240万円／年 （大学・公共機関：85万円）– 講習会：産業界からの参加者も受講・お試しアカウント使用可能
講習会 産業界からの参加者も受講 お試しアカウント使用可能• 将来（FX10）：社会貢献＋α– In‐Houseコード，オープンソース（例：OpenFOAM，生研アプリはド オ プ（例生プ
プリインストール）中心，商用アプリはセンターでは提供しない• 12ノード（2.8412ノード（2 84 TFLOPS）：140万円／年（大学・公共機関：50万円）（予定）– 共同研究型利用を増やして行く予定• センターと共同研究を実施すれば負担金は大学・公共機関並
センタ と共同研究を実施すれば負担金は大学 公共機関並• ppOpen‐HPC利用・高度化 → センターサービスへのフィードバック• 商用アプリケーションもターゲットとなり得る– 講習会：継続– オープンCAE学会（理事：大島聡史）