2015 年8月18日
富士通株式会社
次世代テ ニカルコンピューティン 開発本部
原口正寿
富士通のFortranへの取り組み
発表 概要
富士通 Fortran 歩
Fortran ?
Fortran 使う利点
Fortran サ 意義
富士通 タン
並列 Fortran : COARRAY 機能 紹
富士通 Fortran 歩
1980 1985 1990 1995 2000 2005 2010 2015
VP Series FORTRAN77/VP
FORTRAN77EX/VP
VPP500
AP1000
VPP300 VPP700
AP3000
VPP5000
HPC2500
PRIMERGY RX200 Parallelnavi1.0
PRIMEQUEST Parallelnavi2.0
FX1
PRIMERGY HX600
FX10
京
Technical Computing Suite 1.0 FX100
Parallelnavi3.0
Technical Computing Suite 2.0
FORTRAN77
Fortran90/VP Fortran90/VPP
Fortran90
Fortran95
Fortran2003
AP-FORTRAN F230-75APU
Fortran2008
富士通 Fortran 歴史= パコン 歴史
MODULE,配列記述,
内部手 近 化
FORALL,ELEMENTAL, PURE 並列化強化
非同期入出力,C言語 結合, 派生型 開発言語 し 強化
散型並列 強化
PRIMERGY BX900 PRIMERGY CX400
Fortran ?
Q. HPC 求 い こ ?
超高速計算
Q. 超高速計算 ?
数★万 セ 動作
チコ 使い
複数 演算器 使い
SIMD 命 利用 命 ベ 並列性向上
ッ ュ利用効率 向上
こ 要望 応え い 言語 Fortran
京コン ュ タ い
実行効率 % 上
ほ
Fortran
実績
Fortran 使う利点
Q. Fortran 良さ 何?
多次元配列 扱いやすさ
性能 支え 文法
期待した性能 出
性能 出しやすさ
こ 良さ Fortran 使う理由
Q. Fortran 使う ?
既存資産 Fortran
数学 充実
ネ ?
大 目的
早く実現す た 手段
性能 支え 文法
subroutine sub(x)
real(kind=8),dimension(1:100,1:75,1:50) :: x x = 0.0
end subroutine
100
75 50
x(1,1,1) x(2,1,1) x(3,1,1) x(1,2,1) x(2,2,1) x(3,2,1) x(1,1,2) x(2,1,2) x(3,1,2) x(100,75,50)
多次元配列 扱いやすさ: 多次元配列 = 連 性
性能 支え 文法 進化
引数 配列同士 無し
配列記述 配列演算
FORALL, ELMENTAL,PURE
DO CONCURRENT,BLOCK 構文
COARRAY
簡単 文法 性能
性能 出しやすさ 性能透過性
subroutine sub(a,b,c,m,n)
real(kind=8),dimension(1:m, 1:n, 1:64) :: a,b,c do k=1,64
do j=1,n do i=1,m
a(i,j,k) = a(i,j,k) + b(i,j,k) * c(i,j,k) enddo
enddo enddo
end subroutine
例 京 FX10 FX100 最適化例
ッ 並列化
SIMD化
FMA化
Software Pipelining
命 ュ ン 一種
計算す た 言語 あ 故
言語 比較し 素直 性能 出
最適化 適用 多い
Fortran 期待した性能 出 言語
⇒最適化⇒性能
Fortran サ 意義
最高性能 出す言語 し Fortran 健在
性能
保守性
拡張性
ソ ン ニ ン
開発コ 保守コ 減 したい
最高性能 追求
性能チュ ニン コ 減 したい
両立 残念 い 言え い現状
新しい言語 様 両立 向 い
Fortran C++
Java スクリプト
富士通 タン
富士通言語処理系
ノー ド間 ノー ド内
Fortran
コン イラ・通信lib 数学lib ール
COARRAY機能
•SSL II
•BLAS
•LAPACK •IDE
•デ ガ
• プロファイラ
XPFortran*1
•SSL II
•ScaLAPACK C
C++ OpenMP
*1: eXtended Parallel Fortran (富士通の分散並列Fortran言語)
(FFT)
MPI
富士通 言語製品 ッ
MPI OpenMP 連携 ハ 特性 活 す言語パッ し
後 強化 新しい言語 様 対応
HPC 需要 応え べく Fortran 後 強化
超並列動作
MPI+ ッ 並列 自動 OpenMP
XPFortran+ ッ 並列
COARRAY機能+ ッ 並列
並列 Fortran : COARRAY 機能 紹
COARRAY 機能 年末頃 FX100 向け 公開予定
利用者 書いた通 動作 性能透過性 視
間 タ移動 通信 利用者 高速化 意識
し ン
配列記述 一括転送化
内 極力通信 書 い
COARRAY し [ ] 付 セ
実装
COARRAY 機能 性能状況
himeno ベンチ タ 連 領域 転送
No Grid-size, 散パターン fj-caf-himeno MPI-himeno L, 1x4x4 (n=4,i=16) 32,604 32,624 XL, 1x8x8 (n=4,i=64) 143,362 126,030
10,000 30,000 50,000 70,000 90,000 110,000 130,000 150,000
MFLOPS
HIMENO (on FX100)
fj-caf-himeno MPI-himeno
fj-caf-himeno MPI-himeno ベ Fortran2008 COARRAY 書 換えた
計算部 通信部 明確 し 通信部 CAF 記述
MPI-himeno 計算部 通信部 明確 し 通信部 MPI 記述
単位:MFLOPS
COARRAY 機能 性能状況
himeno ベンチ タ 領域 転送
転送 細 片側通信 た MPI う
pack/unpack い
No Grid-size, 散パターン fj-caf-himeno MPI-himeno L, 2x2x4 (n=4,i=16) 19,460 32,079 XL, 4x4x8 (n=4,i=64) 61,508 98,697
10,000 30,000 50,000 70,000 90,000 110,000 130,000 150,000
MFLOPS
HIMENO (on FX100)
fj-caf-himeno MPI-himeno
単位:MFLOPS