SS研 HPCフォーラム

ポスト｢京｣開発の取り組み- ARM HPCエコシステムの形成とコンパイラの強化 次世代テクニカルコンピューティング開発本部
新庄 直樹
2017.8.30
0Copyright 2017 FUJITSU LIMITEDアウトライン 富士通のHPCへの取り組み
 エコシステム形成への取り組み
 コンパイラ強化への取り組み
 まとめ

1

Copyright 2017 FUJITSU LIMITED富士通のHPCへの取り組み
 お客様のニーズに合わせたHPCソリューションを提供

 独自CPU搭載の専用スパコンとx86クラスタシステムの両面サポート
 シングルシステムイメージ運用を実現するシステムソフトの開発･提供
 高性能､高可用性､高信頼性の実現
K computer

専用ｽﾊﾟｺﾝ
PRIMEHPCPRIMEHPC FX100（理研様と共同開発）

PRIMEHPC FX10

High-end
Divisional

CPUとインターコネクトを独自開発し、高いスケーラビリティを実現

x86クラスタ
CX400/CX600(KNL)

Large-Scale
SMP System

Departmental

PRIMERGYによるx86クラスタで、最新のCPUとアクセラレータに対応

BX900/BX400

Work Group

RX2530/RX2540
2RX900
Copyright 2017 FUJITSU LIMITEDPRIMEHPC FXシリーズとポスト「京」の開発
Past2015

PRIMEHPC FXシリーズ

2020

FUJITSU PRIMEHPC
FX10

•
•
•

FX100

 1.8x CPU perf.  4x(DP) / 8x(SP) CPU & Tofu2
 Easier High-density & lower energy「京」のデザインコンセプトを継承し、Tofuをはじめシステムアーキテクチャを踏襲、強化
アプリケーション互換を維持
アプリケーション資産と利用ノウハウを蓄積

installation

Technical Computing Suite (TCS) Handles millions of parallel jobs  Lower OS

 Context-aware

jitter using optimizing compiler
 MPI: Ultra scalable collective assistant  Job-dedicated, scalablecore
local file systemcommunication libraries

 FEFS: super scalable file system

Japan’s National Projects

Post-K

Operation of K computer

ポスト「京」•理研とともにポスト「京」システ
ムの開発に取り組み中• ARMv8-A+HPC拡張命令(SVE)をサポートするCPUを開発中（FP16をサポート）

HPCI strategic apps program Priority Issues

Apps.
review/ FS

Post K computer development

FUJITSU developed HPC optimized ARM CPU
w/ lower energy
3

Copyright 2017 FUJITSU LIMITEDポスト「京」開発の取り組み
 要件
 「京」、PRIMEHPC FXシリーズとの連続性の堅持 電力あたり演算性能の向上
 オープンコミュニティとの連携と普及

 施策
 レイテンシコアの高い演算性能と高いメモリバンド幅＋高いスケーラビリティ【スケーラビリティ向上】 ハイブリッド並列（VISIMPACT）、アシスタントコア【演算性能向上】【効率向上】FMA、SIMD拡張、数学関数補助
コア間バリア同期、セクタキャッシュ、
ソフトウェア制御プリフェッチ

 最先端テクノロジ使いこなしと制御•半導体、メモリに最先端テクノロジの採用と電力制御

 システムソフト、OSSの拡がるオープンアーキテクチャへの移行•ARM/Linuxのコミュニティとの協業を促進し、コミュニティとともにHPC技術、利用技術を磨き、利用者の利便性を高める
4

Copyright 2017 FUJITSU LIMITED

エコシステム形成への取り組み

5

Copyright 2017 FUJITSU LIMITEDARM HPCエコシステムの重要性と形成への手順
 ポイント 最先端技術、アプリケーションの早期活用
 コモディティ化によるカバー範囲の拡大と発展

 ARM HPCエコシステム形成にむけた手順
 ARM HPCシステム環境整備 ←コミュニティとの連携が重要
 市場形成 市場拡大、コモディティプラットホームとしての地位確立
マルチベンダーによる水平協業(ゴール)シングルベンダーによる垂直統合(京)Application Application Application Application

Application

ApplicationCompiler/Tools

Compiler/Tools
Middleware

Middleware

OS/Driver

Compiler/Tools

Middleware

Middleware

OS/Driver

HW/NetHW/Net6Compiler/Tools
Middleware

OS/Driver
HW/NetHW/NetCopyright 2017 FUJITSU LIMITEDARM HPCエコシステム形成に向けた連携
 ARM
 Linux, GCCのSVE対応他、OpenHPCのARM対応など積極的にARM HPCエコシステム形成に貢献
https://developer.arm.com/hpc

 Linaro ARM基本ソフト(Linux Kernel, glibc, GCC他)の標準化とUpstream
 ARM HPCにおけるバイナリレベルでのポータビリティ確保
 SVE対応ソフトのOSSへのUpstream、普及推進
https://www.linaro.org/sig/hpc/

 OpenHPC
 PCクラスタソフトの標準化（IAとARM間のソフトウェアポータビリティ確保による相互補完）
 配布の現状• 2016/11: v1.2 for ARM Tech. Preview版が配布• 2017/11: v1.3.3 for ARM 通常版配布予定
http://www.openhpc.community/

 富士通
 HPCの経験・技術をコミュニティに展開→ARM HPCエコシステムの環境整備
 最新で強力なコンパイラの早期整備・展開と利用環境の整備
7

Copyright 2017 FUJITSU LIMITED富士通のARM HPCシステムの環境整備の取組み コミュニティとの連携と環境整備推進のイメージ
現在

開発・試験
環境

アプリ
ケーション
整備

～

2020

【NEON】～

開発者クラウド提供

Linaro Developer Cloudベース【SVE】

シミュレータ・コンパイラ環境の提供

シミュレータ環境整備

実機環境提供【OSS】
ARMv8での移植準備

NEON対応版 移植・
性能評価

SVE対応版 移植・
性能評価

ARM HPCコミュニティとの協業を通じ整備【商用アプリ】

ARM HPCコミュニティ・ISVとの協業を通じ整備

多くのソフトを稼働 ポイント PCクラスタで動作するものは再コンパイルで動作可能とする
 ARM向けソフトの拡大とバイナリ互換性の維持• OS含め再コンパイル不要(バイナリ互換)を維持• SVE対応を含めたソフトウェア動作検証環境の整備推進(強力なコンパイラサポート）

8Copyright 2017 FUJITSU LIMITED富士通の協業活動
 Linaro
 QEMU（アーキシミュレータ）のSVE対応
 LLVM（コンパイラ基盤）への富士通の最適化技術の導入
https://www.linaro.org/

 OpenHPC OSSパッケージのARM対応•PLASMA (並列線形計算)/SCOTCH (PT-SCOTCH, Graph処理)/SLEPc (固有値問題計算)

 Orchestration機能の大規模化・RAS機能の強化•Orchestration機能：システムのインストール、設定、管理機能

 TSC(Technical Steering Committee)に参画予定

 Open MPI ARM対応修正、障害修正など、コミュニティ活動を継続•MPI 3.x、4.x…

 Linuxディストリビュータ(RedHat/SUSE/Canonicalなど)

https://www.open-mpi.org/

 SVE対応等HPC向け機能のサポート推進(カーネル、コンパイラ、ライブラリ等)
9

Copyright 2017 FUJITSU LIMITED

バイナリ互換性確保(ARM, Linaro) OSレベルでのバイナリ互換性
 ARMとLinaro他が協力しARMベースのサーバ実現のための仕様を策定•SBSA(Server Base System Architecture)•SBBR(Server Base Boot Requirements)

 RedHat, SUSE等ARMv8向けディストリビューションが改変なく利用可能 システムソフトウェアレベルでのバイナリ互換性
 LinaroでARM向けHPCシステムソフトスタックを整備

 SIMD幅が異なるシステムでのバイナリ互換性
 ARMが、Scalable Vector Extension(SVE)仕様を策定
実行バイナリ互換性
実行バイナリはハードのVL長とは独立、実行時にVL長を設定
実行ステップが2倍に増加

アプリケーション実行SVE

実行ステップが半分に減少

512bit SIMD

SVE
256bit SIMD

10

Copyright 2017 FUJITSU LIMITEDコミュニティにおけるソフトウェア動作検証と移植推進 ソフトウェア動作検証と移植推進のための２つの施策
 ARM HPC User Group：アプリ移植に関する情報集約(次頁) Linaro Developer Cloud：簡易に使える実行環境提供(次次頁)

 SVE対応を含めたシステムソフト環境の整備
 Linaro: ARM版Linux Kernel, glibc, GCCを含めた基本ソフトは各OSSコミュニティにUpstream
 SVE対応ソフトウェア移植推進と普及推進•LinaroによるQEMUのSVE対応(富士通からのリクエストによる)•Linaro Developer Cloudリソースを使ったSVE対応QEMUによる実行環境提供
現在

開発・試験
環境

アプリ
ケーション
整備～

2020

【NEON】～

開発者クラウド提供

Linaro Developer Cloudベース【SVE】

シミュレータ・コンパイラ環境の提供

シミュレータ環境整備

実機環境提供【OSS】
ARMv8での移植準備

NEON対応版 移植・
性能評価

SVE対応版 移植・
性能評価

ARM HPCコミュニティとの協業を通じ整備【商用アプリ】

ARM HPCコミュニティ・ISVとの協業を通じ整備
11

Copyright 2017 FUJITSU LIMITEDARM HPC User Groupによる動作検証・移植推進 アプリのARM HPC対応を有志で作業中
Hosted by ARM
 https://gitlab.com/arm-hpc/

 実現のためのステップ
 パッケージ移植を通して共通問題を抽出
 共通問題を解決すべきパッケージを抽出・修正、コミュニティにフィードバック パッケージ個別修正とコミュニティにフィードバック

 例：OpenFOAM

https://gitlab.com/arm-hpc/packages/wikis/home 現状• パッケージ毎にAArch64向けにパッチが必要(-m64オプションがARM版gcc/gfortranでエラーになるので-m64オプションを外すことで暫定回避)

 今後• パッケージ構築ツールで対応可能なものは対応すべき(ARM版gcc/gfortranで–m64オプション対応する）
https://gitlab.com/arm-hpc/packages/wikis/packages/openfoam

12

Copyright 2017 FUJITSU LIMITEDLinaro Developer Cloudによる動作検証・移植推進https://www.linaro.cloud/ オースチン(USA)、ケンブリッジ(UK) 、上海(中国)の３拠点
 AMD, Cavium, HPE, Huawei, Qualcommにより構築

 今後、日本を含め６拠点に拡大予定
 日本はSBクラウド社、富士通が協力

 現在、LinaroのOSS開発(OpenStack, DPDK*等)、OpenHPC検証向けにLinaro HPC SIGメンバー(※)が利用中
 今後、メンバー外の利用も計画中※ Linaro HPC SIG: HPC特化型のグループでLinaroメンバー外からも参加(https://www.linaro.org/sig/hpc/)* Data Plane Development Kit (DPDK): a set of data plane libraries and NIC drivers that provide a programming
framework for fast, high speed network packet processing on general purpose processors.
13

Copyright 2017 FUJITSU LIMITEDコンパイラ強化への取り組み

14

Copyright 2017 FUJITSU LIMITED最新で強力なコンパイラの早期整備のポイント
 ARMv8-A w/ SVEサポート+富士通HPCコンパイラにより、実アプリの高速実行に加えてエコシステムの形成拡大に貢献
実アプリの高速実行• 高いSIMD効率、SVEの活用• コンパイラの最適化能力の更なる強化

エコシステ
ムの形成

バイナリ互換性• 可変SIMD幅(VLA：Vector
Length Agnostic)対応

ISV、OSSの拡大

他コンパイラとの互換性• CMake, configure…
• C++の機能、性能強化

最新言語規格のサポート
15

Copyright 2017 FUJITSU LIMITEDI

実アプリの高速実行
 富士通のHPC向けプロセッサ技術とコンパイラ技術の継承・発展
 HPC拡張（SVE）の策定においてLead partnerとしてARMに協力
 SVE ISA+富士通マイクロアーキテクチャを活かすコンパイラの強化
ポスト「京」 CPU コア
ARMv8-A with SVE

富士通
コンパイラ

富士通マイクロアーキテクチャ

実アプリケーションの高速実行を実現 アーキテクチャ強化とコンパイラ最適化の強化
 SVEを活用したSIMD化 ARMアーキテクチャに対応したループ分割の強化

16

Copyright 2017 FUJITSU LIMITEDSVEを活用したSIMD化
 4-byte要素16SIMDのリストアクセスで、512bitレジスタを活用
int index[n]float P[n], Q[n];memory Q [15][14][13] ・ ・ ・ ・ ・ ・ ・ ・ ・ [3] [2] [1] [0]SIMDReg. dest. Q[14]Q[1] ・for (i=0; i<n; ++i) {P[i] = Q[index[i]];}Reg. index

Q[15]
Q[2]
・ ・ ・ ・Q[13]・ ・ ・ ・ Q[0]Q[3]

14 1 ・ ・ ・ ・ ・ 13 ・ ・ ・ ・ 0 3 15 2

 Predicateを活用した多様なループのSIMD化（VLA）
 IF文を含むループ

 データ依存のwhile型ループ

for (int i=0; i<n; ++i) {if (mask[i] !=0) { a[i] = b[i]; }}do {b[i] = a[i];} while(a[i++] != 0);

 SIMD長に満たない少回転ループ
for (int i=0; i<VL/2; ++i) {a[i] = b[i] * c[i];}17

Copyright 2017 FUJITSU LIMITEDARMアーキテクチャに対応したループ分割の強化
 ループ分割によりループを縮小し、必要なレジスタ数を削減
 更にレジスタが不足する場合に、以下の最適化をハードのO-o-O機能をより有効に活用するように改善
 ソフトウエアパイプライニング、レジスタ割付、命令スケジューリング
コンパイラSIMD化//レジスタ不足

ループ分割// レジスタに余裕
for (...) {for (...) {

分割前
カーネル

ソフトウェア
パイプライニング

SWP後
カーネル1}// レジスタに余裕
for (...) {}CPU

命令
スケジューリング// レジスタの限界まで
for (...) {分割後
カーネル1}

レジスタ
割り付け}// レジスタの限界まで
for (...) {分割後カーネル2}

SWP後
カーネル2

ループ分割を強化し、最適化の適用率を改善して、命令実行の並列性を上げ、高い実行性能を実現
18

Copyright 2017 FUJITSU LIMITEDループ分割の効果
 気候予測モデルの力学過程(NICAM-DC-MINI)での評価
AS ISソースコード (※)

ループ分割後のイメージ

do k = ADM_kmin, ADM_kmax
do n = nstart, nendsclt(n,k,ADM_TI)= ( ..
!!! (27配列の参照))* 0.5D0 * GMTR_T_var(n, .. ) &+ sclt_rhogw(n,k,TI)
!!! 略
enddo
enddo

do k = ADM_kmin, ADM_kmax
do n = nstart, nendsclt(n,k,ADM_TI)= ( ..
!!! (27配列の参照))
!!! 略
enddo
do n = nstart, nendsclt(n,k,ADM_TI)= sclt(n,k,ADM_TI) &* 0.5D0 * GMTR_T_var(n, .. ) &+ sclt_rhogw(n,k,TI)
!!! 略
enddo
enddo

※ OPRT3D_divdamp(鉛直方向の音波・重力波計算区間)

 ループ分割により約1.5倍高速化を見込む
 自動ループ分割により、各ループの必要レジスタ数が削減され、ソフトウェアパイプライニングの適用が可能となる
19

Copyright 2017 FUJITSU LIMITED最新言語規格のサポート
 C言語
 C11 (ISO/IEC 9899:2011)をフルサポート
C++14からメジャーバージョンアップ
・標準アルゴリズムのマルチスレッド対応など

 C++

 C++14 (ISO/IEC 14882:2014)をフルサポート
 C++17 (2017年に規格化予定)の主要機能をサポート

 Fortran
 Fortran 2008(ISO/IEC 1539-1:2010)をフルサポート
 Fortran 2015(策定中)の主要機能をサポート

・Fortran 2008からモデレートバージョンアップ
・並列機能の強化など

 OpenMP OpenMP 4.5が最新(2015/11 公開)をフルサポート
 OpenMP 5.0(策定中)の主要機能をサポート

・OpenMP 4.5からメジャーバージョンアップ
・taskのreductionサポートなど

C++14のサポート、 Fortran 2015の部分サポートによりオブジェクト指向開発の生産性と実行性能の両立を可能にする20

Copyright 2017 FUJITSU LIMITEDC++の機能、性能強化
 C++向けに新しい最適化を導入し機能強化
 プレ最適化では、ソースコードレベルの情報を活用 ポスト最適化では、オブジェクト間の情報を活用 1

 予定している拡張機能
 Multi versioning: データごとに処理/関数を特殊化
 Global constant propagation: 大域的な定数伝播
 Virtual function optimization: 仮想関数最適化
 Feedback optimization: フィードバック最適化
 etc.
コンパイル
プログラム
コード

プレ最適化

15% 高速化

0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0

従来コンパイラ

機能強化コンパイラ

3次元画像解析（Ray-Tracing）アプリの実行時間比

リンク

基盤の最適化

ポスト最適化

リンカ

a.out

コンパイラドライバ
21

Copyright 2017 FUJITSU LIMITEDまとめ ARMエコシステム構築への取り組み コミュニティと連携・協力して積極的に推進
 ARM HPC普及に向けた情報発信と予定•2017/9: GoingArm workshopでの富士通のARM HPCプロモーション•2017/11: SC17におけるARM HPCプロモーションを計画中

 コンパイラへの取り組み
 最新で強力なコンパイラの早期整備•実アプリの高速実行等による、エコシステムの形成とISV, OSSの拡大•SVEを活用したSIMD化•ARMアーキテクチャに対応したループ分割の強化

 最新言語規格のサポート
 C++の機能、性能強化

22

Copyright 2017 FUJITSU LIMITEDCopyright 2017 FUJITSU LIMITED