2.8 核融合プラズマ流体解析コード GT5D および GKV の性能測定
日本原子力研究開発機構 井戸村 泰宏、伊奈 拓也、朝比 祐一
名古屋大学 前山 伸也
富士通株式会社 三吉 郁夫、千葉 修一

2.8.1 はじめに
核 融 合 プラズマ流 体 解 析 コード GT5D および GKV は磁 場 閉 じ込 め型 の核 融 合 炉 における炉心 プラズマの閉 じ込 め性 能 を決 定 する乱 流 輸 送 現 象 の評 価 を目 的 として開 発 された。 核融合プ
ラズマの第一原理モデルは 5 次元位相空間（3 次元空間×2 次元速度）におけるプラズマ粒子分布の発展を記述する移流・拡散方程式（ボルツマン方程式）で与えられる（スライド p3、以降、ページ番号のみ表記する）。核融合プラズマ流体解析ではこの方程式を 5 次元格子上で離散化して CFD スキームを適用するため、3 次元流体モデルに比べて〜1002倍程度大きい自由度の流体計算となる。「京」を用いてようやく ITER 規模の炉心プラズマの数値実験を水素、あるいは、重水素のみの単一イオン種のイオン系乱流に対して行うことが可能になったが、電子系乱流を含む数値実験、あるいは、重水素と三重水素を燃料とする核融合反応によってヘリウムが生成される多種イオン系の核燃焼プラズマの数値実験を行うには将来のエクサスケールマシンが必要となる。このような大規模計算を実現する上で最新のメニーコア
プロセッサによって構成される超並列環境の利用技術の高度化が必要不可欠となっている。本性能測定
では、特に、FX100 において強化されたキャッシュ機構や新たに機能拡張されたアシスタントコアの利用技術に焦点を当てて最適化技術の開発およびその有効性検証を行った。

2.8.2 プログラム概 要
GT5D（p4）は炉 心 プラズマ全 体 を計 算 領 域 としてプラズマ乱 流 やプラズマ分 布 の大 域 的 な非線 形 発 展 を追 跡 する。この特 徴 を活 かして、これまで非 局 所 的 な乱 流 輸 送 現 象 の研 究 や乱 流
輸 送 の装 置 サイズスケーリングの研 究 が行 われてきた。計 算 手 法 としては 5 次 元 移 流 ・拡 散 方 程式 に差 分 法 を適 用 し、時 間 積 分 に半 陰 解 法 を用 いている。移 流 項 を陰 的 に計 算 する差 分 ・ 陰
解 法 カーネルは共 役 残 差 法 によって実 装 されており、コードの主 要 コストを占 める。並 列 化 手 法
としては MPI と OpenMP を用 いるハイブリッド並 列 モデルを採 用 している。さらに、OpenMP によって実 装 した通 信 スレッドによる通 信 隠 蔽 処 理 、階 層 的 な多 次 元 領 域 分 割 モデル、および、Tofu
ネットワーク向 けのランクマップ最 適 化 を実 装 することによって、「京 」全 系 に至 る強 スケーリングを
達 成 し、約 1000 億 格 子 を用 いる ITER 規 模 の数 値 実 験 が可 能 になった。本 報 告 では GT5D の差 分 ・陰 解 法 カーネル（GT5D カーネル）を対 象 として FX100 における性 能 測 定 を実 施 する。
GKV（p5）は一 本 の磁 力 線 に沿 った局 所 領 域 を計 算 領 域 として高 解 像 度 のプラズマ乱 流 計
算 を低 コストで行 う。この特 徴 を活 かして、これまで多 くのパラメータスキャンを必 要 とする実 験 データ解 析 やイオンスケールから電 子 スケールにおよぶマルチスケール乱 流 の研 究 が行 われてきた。
計 算 手 法 としては 5 次 元 移 流 ・拡 散 方 程 式 の磁 力 線 に垂 直 な 2 次 元 方 向 に擬 スペクトル法 、それ以 外 の 3 次 元 方 向 に差 分 法 を適 用 し、時 間 積 分 に陽 解 法 を用 いている。非 線 形 項 を擬 スペ
クトル法 で計 算 するカーネルでは 5 次 元 データに対 して並 列 化 2 次 元 FFT を適 用 するため、高コストの転 置 通 信 処 理 が必 要 となる。並 列 化 手 法 としては MPI と OpenMP を用 いるハイブリッド
並 列 モデルを採 用 している。さらに、GT5D と同 様 に OpenMP によって実 装 した通 信 スレッドによる通 信 隠 蔽 処 理 、階 層 的 な多 次 元 領 域 分 割 モデル、および、Tofu ネットワーク向 けのランクマッ

146 / 253

プ最 適 化 を実 装 することによって、「京 」全 系 に至 る強 スケーリングを達 成 し、約 6000 億 格 子 を用いるマルチスケール電 子 乱 流 計 算 が可 能 になった。本 報 告 では GKV のスペクトル法 カーネル（GKV カーネル）を対 象 として FX100 における性 能 測 定 を実 施 する。

2.8.3 通 信 と演 算 のオーバーラップ「京 」全 系 の強 スケーリングを実 現 する上 で通 信 と演 算 をオーバーラップする通 信 マス ク手 法が鍵 となる技 術 となっている。p4 に示 す例 では差 分 演 算 、および、2 次 元 FFT の並 列 処 理 における通 信 オーバーラップの事 例 が示 されている。差 分 演 算 の例 では、通 常 は境 界 データを通 信
してから差 分 演 算 を行 うが、通 信 オーバーラップの場 合 には、差 分 演 算 を境 界 データを参 照 する
周 辺 領 域 とそれ以 外 の中 心 領 域 に分 離 し、後 者 の背 後 で境 界 データの通 信 処 理 を同 時 実 行する。この事 例 では、差 分 演 算 を中 心 領 域 と周 辺 領 域 で分 離 したが、これ以 外 にも異 なる次 元
方 向 に分 離 する、あるいは、異 なる項 毎 に分 離 するといったバリエーションが考 えられる。一 方 、2次 元 FFT の例 では、通 常 は全 データの転 置 処 理 を実 行 してから 1 次 元 FFT を実 行 する処 理 を
繰 り返 すが、通 信 オーバーラップの場 合 には、まず、xy 方 向 の 2 次 元 FFT 処 理 を z 方 向 （GKV
カーネルの場 合 には残 りの 3 次 元 方 向 ）に分 割 する。次 に、異 なる z 方 向 位 置 の FFT と転 置 処
理 を同 時 実 行 する通 信 オーバーラップをパイプライン的 に繰 り返 すことで、高 コストの転 置 通 信 を
隠 蔽 する。
上 記 の通 信 オーバーラップを実 装 する手 法 として「京 」では p8 に示 す通 信 マスク手 法 を開 発 している。この手 法 では OpenMP の MASTER 構 文 によってマスタースレッドを通 信 スレッドとして使用 し、残 りのスレッドに演 算 処 理 を動 的 に割 り当 てる。この実 装 によって、通 信 処 理 の完 了 後 にマスタースレッドも演 算 に復 帰 させ、スレッド間 の負 荷 分 散 を最 適 化 することが可 能 となる。この手
法 は n スレッドを用 いて通 信 処 理 のオーバーヘッドを 1/n に削 減 できるため、今 後 のメニーコア環
境 において非 常 に有 望 な技 術 である。また、通 信 マスク手 法 は標 準 的 な MPI と OpenMP の機 能のみで実 装 可 能 であり、非 同 期 1 対 1 通 信 のみならず、同 期 通 信 や集 団 通 信 も処 理 できるため、極 めて汎 用 性 が高 い。
一 方 、p9 に示 すように、FX100 ではアシスタントコアを用 いる新 たな通 信 オーバーラップが利 用
可 能 である。この機 能 を用 いると、ソースコードの書 き換 えなしに、オーバーラップ区 間 をディレク
ティブで指 定 することによって、対 象 とする演 算 処 理 の背 後 で p10 に示 す MPI-3.0 の非 同 期 通
信 処 理 をアシスタントコアで同 時 実 行 することができる。以 下 では GT5D カーネルの境 界 データ
通 信 と GKV カーネルの転 置 通 信 を対 象 にこの機 能 の有 効 性 を検 証 する。

2.8.3.1 GT5D カーネルにおける境 界 データ通 信 のオーバーラップ
まず、GT5D カーネルを用 いて通 信 オーバーラップの効 果 を調 べた。このカーネルは境 界 デー
タ通 信 を含 む xyzv 方 向 の 4 次 元 差 分 演 算 を行 うが、領 域 分 割 は xy 方 向 の 2 次 元 方 向 のみとなっている。このため、差 分 演 算 のループを zv 差 分 演 算 と xy 差 分 演 算 に分 離 し、zv 差 分 演 算の背 後 で境 界 データ通 信 を実 行 し、その後 で xy 差 分 演 算 を実 行 する。通 信 処 理 は p12 に示 す
5 パターンの実 装 を用 意 した。
•

original 版 ：MPI_Isend/Rrecv/Waitall を連 続 して実 行 し、通 信 の同 期 をとってから差
分 演 算 を実 行 。

•

overlap 版 ：マスタースレッドのみが MPI_Isend/Rrecv/Waitall を実 行 し、他 は演 算 処
理 を実 行 。

147 / 253

•

unroll 版 ：32 スレッドの FX100 で十 分 なループ長 を確 保 するために外 側 2 重 ループ
を 1 重化。

•

unroll+overlap 版 ：unroll 版 でオーバーラップを実 装 し、演 算 負 荷 バランスを改 善 。

•

通 信 スレッド解 除 版 ：unroll+overlap 版 において MASTER 構 文 を削 除 し、MPI_Isend/Recv、および、MPI_Waitall をそれぞれ演 算 処 理 の前 後 に発 行 。さらに、スレッドスケ
ジューリングを DYNAMIC から STATIC に変 更 。

FX100 における性 能 測 定 結 果 を p13 に示 す。ここで、処 理 時 間 はマスタースレッドで計 測 した
境 界 データコピー（copy 区 間 ）、xy 差 分 演 算 （kernel 区 間 ）、通 信 処 理 （waitall 区 間 ）、および、
zv 差 分 演 算 （kernel_p 区 間 ）の内 訳 を示 す。マスタースレッドを通 信 スレッドとして使 用 する overlap 版 、および、unroll+overlap 版 では zv 差 分 演 算 と通 信 処 理 の同 時 実 行 により kernel_p 区 間がマスタースレッド上 で縮 小 する。一 方 、アシスタントコアを用 いる通 信 スレッド解 除 版 （通 信 促 進あり）では通 信 処 理 の大 部 分 がマスタースレッドからアシスタントコアに移 行 するため、waitall 区
間 が縮 小 する。overlap 版 では 16 スレッド（1CMG）に対 し、OpenMP を適 用 している最 外 の x 方
向 のループ長 が 32 となるのに対 し、unroll+overlap 版 では xy 方 向 のループ長 が 1024 となり、ス
レッド間 の動 的 負 荷 分 散 のバランスが改 善 する。通 信 スレッド解 除 版 では、アシスタントコアを用いない場 合 には unroll 版 とほぼ同 じコスト分 布 となるが、アシスタントコアを用 いる通 信 促 進 を適
用 することにより、従 来 の通 信 マスク手 法 を上 回 る性 能 を達 成 した。p14 に示 す kernel_p 区 間 の
詳 細 プロファイラでは、unroll+overlap 版 ではマスタースレッドの演 算 数 はほぼゼロとなり、通 信 処
理 に専 有 されているが、通 信 スレッド解 除 版 （通 信 促 進 あり）では、マスタースレッドも含 めてほぼ
均 等 な演 算 量 となっていることがわかる。しかしながら、MPI 起 動 処 理 とアシスタントコアへの移 行
処 理 のオーバーヘッドが残 っており、静 的 スレッドスケジューリングを行 った場 合 には約 5%程 度の遅 延 がマスタースレッドで発 生 している。このため、アシスタントコアを利 用 する場 合 でも動 的 ス
ケジューリングを用 いてスレッド間 の負 荷 分 散 を最 適 化 する必 要 があることに注 意 が必 要 である。

2.8.3.2 GKV カーネルにおける転 置 通 信 のオーバーラップ
次 に、GKV カーネルを用 いて通 信 オーバーラップの効 果 を調 べた。このカーネルは k x k y zvw
空 間 の 5 次 元 データに対 して k x k y 波 数 空 間 の 2 次 元 逆 フーリエ変 換 を実 行 し、擬 スペクトル法
によって xy 実 空 間 で非 線 形 項 を計 算 した後 で非 線 形 項 を再 び k x k y 波 数 空 間 に 2 次 元 順 フー
リエ変 換 する。この処 理 を w 方 向 にパイプライン化 し、w 方 向 のインデックスの異 なる転 置 通 信 とFFT 処 理 、および、非 線 形 項 計 算 をオーバーラップする。通 信 処 理 は p16 に示 す 5 パターンの
実 装 を用 意 した。
•

オーバーラップなし MPI_Alltoall 版 ：MPI_Alltoall を用 いる転 置 通 信 と FFT 処 理 を
逐 次 的 に実 行 するオリジナル版 。

•

オーバーラップあり MPI_Alltoall 版 ：FFT 処 理 の背 後 でマスタースレッドが MPI_Allt
oall を用 いる転 置 通 信 を同 時 実 行 。

•

オーバーラップなし MPI_Ialltoall 版 ：MPI-3.0 の非 同 期 集 団 通 信 MPI_Ialltoall を用
いる転 置 通 信 と FFT 処 理 を逐 次 的 に実 行 。

•

オーバーラップあり MPI_Ialltoall 版 ：FFT 処 理 の背 後 でアシスタントコアが MPI_Iallt
oall を用 いる転 置 通 信 を同 時 実 行 。

•

オーバーラップあり MPI_Ialltoall、静 的 スレッドスケージュール版 ：オーバーラップあり
MPI_Ialltoall 版 においてスレッドスケジューリングを DYNAMIC から STATIC に変 更 。

148 / 253

FX100 における性 能 測 定 結 果 を p17 に示 す。ここで、処 理 時 間 はマスタースレッドで計 測 した
逆 フーリエ変 換 用 の転 置 通 信 （Comm.(bwd)）、FFT（Comp.(bwd)）、順 フーリエ変 換 用 の転 置
通 信 （Comm.(fwd)）、FFT（Comp.(fwd)）、および、非 線 形 項 処 理 等 （Others）の内 訳 を示 す。マスタースレッドを通 信 スレッドとして使 用 するオーバーラップあり MPI_Alltoall 版 ではマスタースレ
ッドが転 置 通 信 を実 行 するため FFT の処 理 コストが縮 小 する。一 方 、アシスタントコアを用 いるオ
ーバーラップあり MPI_Ialltoall 版 では通 信 コストの一 部 がマスタースレッドからアシスタントコアに移 行 しマスタースレッドから見 えなくなる。測 定 結 果 では通 信 マスク手 法 が最 も良 い性 能 を示 しているが、非 同 期 集 団 通 信 とアシスタントコアの利 用 でも同 程 度 の性 能 向 上 が確 認 できた。アシス
タントコア利 用 によるスレッド間 の負 荷 分 散 の均 等 化 を期 待 して、オーバーヘッドの少 ない静 的 ス
レッドスケジューリングを適 用 した結 果 、性 能 が低 下 した。また、オーバーラップあり版 では、スレッド同 期 の回 数 が減 少 するため、スレッド間 の負 荷 バランスが改 善 し、Others 区 間 のコストが減 少 している。
より詳 細 なコスト分 析 を p18 に示 す。通 信 コストを比 較 した結 果 、オーバーラップあり/なし、MPI_Alltoall/MPI_Ialltoall、全 ての組 み合 わせでほぼ同 等 の通 信 コストとなることがわかった。インターコネクトのバンド幅 とメモリバンド幅 は一 桁 以 上 異 なることから、通 信 オーバーラップ適 用 時 の演
算 処 理 による通 信 性 能 への影 響 は限 定 的 である。また、MPI_Ialltoall では Tofu 向 け高 速 アル
ゴリズムが利 用 できないが、今 回 テストを行 った小 規 模 ノード数 では性 能 劣 化 は少 ないことがわかった。MPI-3.0 の MPI_Ialltoall は非 同 期 集 団 通 信 であるが、MPI_Isend/Irecv と同 様 にアシスタ
ントコアを用 いないと非 同 期 に動 作 しないことに注 意 が必 要 である 。アシス タン トコアを用 いる場
合 には通 信 コストが約 3/1 に減 少 するが、MPI_Ialltoall の起 動 とアシスタントコアへの処 理 移 行のオーバーヘッドがかなり残 っている。
スレッド間 の負 荷 バランスを p11 に示 す。オーバーラップなしの場 合 にはマスタースレッドの通信 処 理 の間 、残 りのスレッドにかなり大 きいバリア同 期 待 ちのコストが見 られる。オーバーラップありの場 合 にはスレッド間 の負 荷 分 散 が改 善 し、バリア同 期 待 ちのコストが大 幅 に減 少 する。しかしながら、アシスタントコアを利 用 して静 的 スレッドスケジューリングを適 用 すると、MPI_Ialltoall 起
動 とアシスタントコアへの移 行 処 理 のオーバーヘッドによってスレッド間 の負 荷 バランスが崩 れて
再 びバリア同 期 待 ちのコストが顕 在 化 する。このため、動 的 スレッドスケジューリングによって負 荷
分 散 を均 等 化 する実 装 が最 も良 い性 能 となった。アシスタントコアの利 用 によって比 較 的 簡 易 に
通 信 オーバーラップを実 現 できることを集 団 通 信 についても示 したが、大 規 模 問 題 で Tofu 専 用
アルゴリズムの利 用 が必 須 となる場 合 には従 来 の通 信 マスク手 法 の利 用 が推 奨 される。

2.8.4 GT5D カーネルにおける演 算 処 理 の性 能 測 定
FX100 で強 化 されたキャッシュ機 構 等 、演 算 機 能 を評 価 するために GT5D カーネルの逐 次 処
理 性 能 を「京 」と FX100 で比 較 した。p21 に示 す GT5D カーネルは xyzv 方 向 の 4 次 元 移 流 項
を 4 次 精 度 中 心 差 分 によって評 価 する 17 ステンシルの計 算 となっている（ここでは、逐 次 処 理 性
能 を比 較 するため、通 信 オーバーラップの際 に適 用 した zv 差 分 演 算 と xy 差 分 演 算 の分 割 は適用 していない）。ソースコードにおいて浮 動 小 数 点 演 算 数 は 35Flop となるのに対 し、メモリアクセ
ス数 は 32B となる。ここで、l-2~l+2、k-2~k+2、j-2~j+2 の範 囲 はコアあたりのキャッシュサイズ以 下となるため、オンキャッシュとして取 り扱 う。i-2~i+2 についてはメモリアクセスとなるが、動 的 スケジューリングを適 用 する場 合 には隣 接 スレッドがロードしたデータを共 有 キャッシュ上 で再 利 用 できるため、やはりオンキャッシュとして取 り扱 う。この結 果 、メモリアクセスは f(l,k,j,i)、fc(l,k,j,i)のロー

149 / 253

ド、および、df(l,k,j,i)のロード・ストアで合 計 4 となり、演 算 密 度 は Flop/Byte~1.1 となる。この演 算
密 度 からルーフラインモデルによって見 積 もった演 算 性 能 の対 ピーク性 能 比 は「京 」、および、FX
100 でそれぞれ 28.4%、および、25.1%となるが、実 測 した演 算 性 能 は約 半 分 となり、理 論 的 な予
測 を大 幅 に下 回 っている。プロファイラの数 値 を比 較 すると、「京 」では L1D ミス数 が大 きく L1D ミ
ス dm 率 （プリフェッチが効 かない実 質 的 な L1D ミスの比 率 ）も高 い。一 方 、FX100 では L2 ミス d
m 率 （プリフェッチが効 かない実 質 的 な L2 ミスの比 率 ）が高 く、FMA 命 令 率 （ここでは浮 動 小 数
点 命 令 数 に対 して定 義 ）が「京 」よりかなり低 いことがわかった。ここで、非 FMA 命 令 では FMA 命
令 の半 分 の演 算 しか処 理 できないため、FMA 命 令 率 が低 いと処 理 性 能 が劣 化 する。
この状 況 をより詳 しく調 べるために、p22 ではさらにカーネルを簡 約 化 し、定 数 係 数 の 17 ステン
シル計 算 を行 った。この結 果 、「京 」ではルーフラインモデルによる対 ピーク性 能 比 の 8 割 以 上 の演 算 性 能 を達 成 した。プロファイラの数 値 を見 ると、「京 」では L1D ミス数 が p24 の理 論 見 積 とほ
ぼ一 致 し、L1D ミス dm 率 、L2 ミス dm 率 も低 く、ほぼ理 想 的 なメモリアクセスが実 現 していることがわかった。ここで、L1D ミス数 の理 論 評 価 は同 じキャッシュライン上 の l-2~l+2、および、プリフェッチされる 3 キャッシュライン上 の k-1~k+1 までを含 む 7 要 素 をオン L1 キャッシュとして扱 い、残 りの 10 要 素 にループ回 転 数 をかけてキャッシュラインサイズで割 った値 によって定 義 している。また、
ソースコードは典 型 的 な積 和 処 理 のパターンになっており、FMA 命 令 率 も 9 割 以 上 という理 想 的な性 能 となっていた。一 方 、FX100 ではキャッシュラインサイズが 128B から 256B に拡 張 されたことに伴 い L1D ミス数 が半 減 し、L1 キャッシュについてはほぼ理 想 的 な性 能 が得 られているが、L2
ミス dm 率 が高 くプリフェッチの効 率 が低 い、また、FMA 命 令 率 が低 いという問 題 が明 らかになった。
次 に、p23 では係 数 を定 数 から配 列 に変 更 し、17 ストリーム版 に近 い形 に修 正 した。この結 果 、「京 」では L1D ミス数 、および、L1D ミス dm 率 が増 大 し、演 算 性 能 がルーフラインモデルによる理論 的 な予 測 から大 幅 に劣 化 することが確 認 された。L1 キャッシュが 2way の「京 」ではループ内 の配 列 数 の増 大 に伴 って、L1 キャッシュ競 合 が頻 発 する。この問 題 の回 避 策 としては、通 信 オー
バーラップで適 用 したようなループ分 割 によってループ内 の配 列 数 を調 整 することが有 効 である。
一 方 、FX100 では L1 キャッシュが 4way に増 え、キャッシュラインサイズも 256B に拡 張 されているため、「京 」で顕 在 化 したような L1 キャッシュ競 合 は見 られず L1D ミス数 は変 化 しなかった。ただし、L1D ミス dm 率 が増 大 しており、プリフェッチの効 率 が劣 化 していることがわかった。
以 上 の性 能 測 定 結 果 から、FX100 では「京 」の弱 点 であった L1 キャッシュの問 題 が解 消 しているが、FMA 命 令 率 とプリフェッチ効 率 の低 下 という新 たな問 題 が発 生 していることがわかった。
この 2 つの問 題 の原 因 調 査 を行 ったが、本 報 告 書 の執 筆 時 点 でプリフェッチ効 率 低 下 の問 題 は
未 解 決 であったため、以 下 では FMA 命 令 率 の問 題 について調 査 結 果 をまとめる。

2.8.4.1 FX100 における FMA 命 令 率 低 下
FMA 命 令 率 低 下 の原 因 調 査 にあたり、コンパイラの動 作 を解 析 した結 果 、ループボディの演
算 特 性 に応 じてコンパイラが以 下 の 2 つの最 適 化 アルゴリズムから最 適 と判 断 されるものを選 択
していることがわかった。p26 の FMA 促 進 アルゴリズムでは積 和 型 の多 項 式 演 算 を FMA 命 令 の繰 り返 しによって深 い木 構 造 で表 現 するのに対 し、p27 の並 列 化 促 進 アルゴリズムでは同 じ演 算を非 FMA 命 令 が多 い浅 い木 構 造 で表 現 する。前 者 は FMA 命 令 率 が高 い最 適 化 であるが、命令 の並 列 度 が低 くソフトウェアパイプライニングが有 効 化 できるル ープに対 して高 い性 能 を発 揮する。一 方 、後 者 は FMA 命 令 率 が低 いが、命 令 の並 列 度 が高 く、ソフトウェアパイプライニング

150 / 253

がそれほど効 かない場 合 でも、命 令 スケジューリングを最 適 化 できる。通 常 はコンパイラが自 動 的にどちらの最 適 化 を採 用 するか選 択 するが、今 回 は強 制 的 に 2 つの最 適 化 アルゴリズムを適 用し、p28 に示 すループボディのサイズが異 なる 5 つのプログラムの処 理 性 能 を比 較 した。
p.29 に 9 ステンシルのコード C の処 理 性 能 を示 す。このプログラムに対 してコンパイラは並 列 化
促 進 アルゴリズムを選 択 するため、オリジナルの場 合 には FMA 命 令 率 （ここではロード・ストア、整
数 演 算 等 を含 む全 命 令 数 に対 して定 義 ）が低 くなる。これに FMA 促 進 アルゴリズムを適 用 すると
FMA 命 令 率 は FX10 とほぼ同 じ値 に向 上 するが、処 理 速 度 は低 下 する。ここで、FMA 促 進 アルゴリズムを適 用 した場 合 には SIMD 幅 が 128bit の FX10 に比 べて SIMD 幅 が 256bit の FX100
では総 命 令 数 がほぼ半 分 になる。p30 に 5 つのプログラムに対 する最 適 化 アルゴリズムの比 較 を示 すが、ループボディが小 さい場 合 には並 列 化 促 進 アルゴリズムが有 効 であるが、ループボディ
が大 きくなるにつれて FMA 促 進 アルゴリズムの性 能 が逆 転 する傾 向 にあることがわかった。p22の簡 約 化 カーネルに相 当 するコード D の場 合 には、コンパイラは並 列 化 促 進 アルゴリズムを選 択していたが、この調 査 結 果 から FMA 促 進 アルゴリズムの方 が高 い処 理 性 能 を示 すことがわかった。

2.8.5 まとめ
核融合プラズマ流体解析コード GT5D、および、GKV の主要計算カーネルを対象として FX100 の新機
能の有効性を検証した。アシスタントコアを利用した通信オーバーラップでは 1 対 1 通信、および、集団通信の両方に対して従来の通信マスク手法と同程度の処理性能が得られたが、MPI を起動してアシス
タントコアに処理を移行するまでのオーバーヘッドが無視できないため、通信マスク手法と同様の動的スケジューリングによるスレッド間の負荷分散の最適化が必要である。演算性能に関しては、L1 キャッシュの機能強化によって「京」の弱点であった L1 キャッシュ競合が改善しているが、「京」に比べて F
MA 命令率やプリフェッチ効率が低下するという新たな問題点が明らかになった。これらの問題は今後のコンパイラ改善によって解消されるものと期待する。

151 / 253ĆóûąöåăĐU Æn,ăďôć|ïĖü ÏáÝ ÜU}@`g)<"¶tr
Vh{?É;Y Éew/+G9=
!H 
B7¯mM
-´:É'ïĖüÜq¡

152 / 253Â6ŎśĽœÎę¶0¡Ï·ŗńŝ     





ŎśĽœ

Yę¯Ţosw°`∂f= G[f ] + C[f ]∂t∂f∂f− U2 [φ]G[f ] = −U1 [φ] ·ä,ĤEĘĥĨ¯
∂R
∂v

2

∂
∂
· (D1 f ) +: (D2 f )C[f ] = −ĵţşšÄ´+∂v∂v∂v
EĪĢĨŒĭĿšw°`−∇⊥ · (P1 ∇⊥ φ) + P2 (φ − φ) = ρ[f ]KB¨ŗńŝŤ #ÿ#Xn,ăďôć
Vm¨ŗńŝŤ ÿ!Xť$  ť"|ïĖüÂÄÀÁÜq¡

Gyrokinetic Toroidal 5D Eulerian code>ûĖďóµÛÏÎØ5uòČæē±%©ċúđÛáãn,TăďôćÜ) |¤ñĈčĒĖñĎĔä ÎÉ |­®Uä¦¤Xz
MPI+OpenMPÿæĂĐøü ċúđ
5u·Ü|ĕZ\ÈIza·È(¹đĔîĕëøöz
ėéĖýđÈPvIz+¯ºĘ¤¢sėITER¢sĘ
610x128x610x96x20 ~ 1000o<~105óùøă
È4þĖüa·/ñĎøû*^5u·ė°L2uĘÜ[%<J

v⊥
v//
z

Idomura et al., Comput.Phys.Commun.2008
Idomura et al., Nucl. Fusion 2009
Idomura et al., Int. J. HPC Appl. 2014
Idomura-Nakata, Phys. Plasmas 2014
Idomura, Phys. Plasmas 2014

y

v⊥
v//

x

GT5DïĖüÜóûēĔìóíĖĐĔì

589,824cores
K (2013)
65,536cores
Helios (2012)
16,384cores
BX900 (2011)

(NR,Nζ,NZ,Nv//,Nμ)=(768,64,768,128,32)

4

153 / 253n,ăďôć








|ïĖüÂÃÅÜq¡

GyroKinetic Vlasov code"Ûy×ÖFW¾5ÛÏÎØ5uòČæē±%©ċúđÛáãn,TăďôćÜ) |¤äÎÉ |­®Uä¦Õã¤Xz
MPI+OpenMPÿæĂĐøü ċúđ
5u·Ü|ĕZ\Èóąëûđz(x,y)ÉIz(z,v,w)
a·ÈđĔîĕëøöz
ėéĖýđÈ2uFFT+¯ºĘ¤¢s1024x1024x96x96x32x2 ~ 6000o<~105óùøă
È4þĖüa·/ñĎøû*^GKVÛáãćđ÷óíĖđ¼<


|¤

 SóíĖđ
¼<¬²(Q0.1mm
æèĔ¬²(Q5mm→503Ü£LGKVïĖüÜóûēĔìóíĖĐĔì

Watanabe-Sugama, Nucl. Fusion 2006
Watanabe et al., Phys. Rev. Lett. 2008
Maeyama et al., Parallel Computing 2015
Maeyama et al., Phys. Rev. Lett. 20155¯Ú~ÜèĖĀĖďøă

154 / 253áĕ·ę7y¡ĘĥĨıţŊţŏŃņ&áńţŀĕµė·¡Ě0¡¨Ę7y¡Ć4¿õB (ČĐX ·ęF¥ńţŀĪü1ĎĨ·
ĕý1ČėĂ·Ę ð·¡ýę¾dĔF¥ńţŀęTáĪQÃeęn

vČĂn

ťF¥ńţŀáťF¥ńţŀáĕhõBę7y¡!- ę ńţŀÙ¼ÿĪēw
8Ę ( w8Ę¦ĨįšńŃĵļę
ńţŀÙ¼ĕĪ7y¡eęn

vČĂn

ťńţŀÙ¼¡ťw8ĘµėńţŀÙ¼ĕĪ7y¡




ťX

ť;ÜõBęX

Ï·Ï·ť

ťw8Ę7ę¡áĕ·ę7y¡ĪQĎĨáœļĵn  ĔáļŞŃņĪQÇČÿNìęĂáĕ·Ī7y¡ 2T2áŤ7|áÿñ7|áť X
Ï·ęÆõBáŤ6ÿ ť ïAá
 J!-Ť ť ńţŀÙ¼¡Ť6ť',&! 

8,

',&! 

2345+ 2345+#"!
*

áĸļŅĪ2,Ę&)
áĸţńĮšĶęįŖţĻ)0   )0  
  %#)0   
)0  -  .

%#)0    *
7

155 / 253䜰䝅䝇䝍䞁䝖䝁䜰䛻䜘䜛㏻ಙ䜸䞊䝞䝷䝑䝥ಁ㐍 䜰䝅䝇䝍䞁䝖䝁䜰䛻㏻ಙฎ⌮䜢௵䛫䜛䜛౑⏝᫬䛾ືస䜲䝯䞊䝆

 MPI䝷䜲䝤䝷䝸䛻ືస䝰䞊䝗䜢㏣ຍ
a. progress thread䛺䛧 (䝕䝣䜷䝹䝖)b. progress thread䛒䜚
i.
ii.
iii.

⮬ື༊㛫䝰䞊䝗
ᣦᐃ༊㛫MPI࿧䜃ฟ䛧䛺䛧䝰䞊䝗ᣦᐃ༊㛫MPI࿧䜃ฟ䛧䛒䜚䝰䞊䝗 ືసᴫせ:䜰䝅䝇䝍䞁䝖䝁䜰䛜䝜䞁䝤䝻䝑䜻䞁䜾㏻ಙฎ⌮䛾኱༙䜢ᐇ⾜ᑐ㇟༊㛫䜢᫂♧䛩䜛ሙྜ ฼⏝⪅䛾ᑐฎ
1. MCA䝟䝷䝯䞊䝍䛷progress thread᭷↓䜢㑅ᢥ
2. ᚲせ䛻ᛂ䛨䛶䚸䜸䞊䝞䝷䝑䝥㏻ಙ䛾ᑐ㇟༊㛫䜢ᣦᐃ••

FJMPI_Progress_start: 㠀ྠᮇ㏻ಙ䛾ಁ㐍ฎ⌮䜢㛤ጞ
FJMPI_Progress_stop: 㠀ྠᮇ㏻ಙ䛾ಁ㐍ฎ⌮䜢೵Ṇ叏吁  ಁ呎 㐍 吧ᑐ呀吚 
㇟ 吮
༊㏻
   
㛫ಙ᤼௚ไᚚ䜸䞊䝞
䝦䝑䝗䜢๐ῶ 䝯䝸䝑䝖: 䝁䞊䝗᭩䛝᥮䛘䛺䛧䛻䜸䞊䝞䝷䝑䝥㏻ಙ䛜ྍ⬟䚸⡆᫆䛺༊㛫ᣦᐃ䛷᤼௚ไᚚ䜸䞊䝞䝦䝑䝗䜒ᢚไ䛷䛝䜛3

Copyright 2014 FUJITSU LIMITED

MPI-3.0䛾䝜䞁䝤䝻䝑䜻䞁䜾㞟ᅋ㏻ಙAPI (ᢤ⢋)
 1ᑐከ㏻ಙ
 MPI_IBCAST(buffer, count, datatype, root, comm, request)
 MPI_ISCATTER(sendbuf, sendcount, sendtype, recvbuf, recvcount,recvtype, root, comm, request) ከᑐ1㏻ಙ
 MPI_IGATHER(sendbuf, sendcount, sendtype, recvbuf, recvcount,recvtype, root, comm, request) ከᑐከ㏻ಙ
 MPI_IALLGATHER(sendbuf, sendcount, sendtype, recvbuf, recvcount,recvtype, comm, request)
 MPI_IALLTOALL(sendbuf, sendcount, sendtype, recvbuf, recvcount,recvtype, comm, request) 䝸䝎䜽䝅䝵䞁
 MPI_IREDUCE(sendbuf, recvbuf, count, datatype, op, root, comm,request) MPI_IALLREDUCE(sendbuf, recvbuf, count, datatype, op, comm,request) 䝞䝸䜰ྠᮇ
 MPI_IBARRIER(comm, request)
6

156 / 253

Copyright 2015 FUJITSU LIMITED éĖýđÛÏÓã
6úĖö¯ÜèĖĀĖďøă

㏻ಙ䜸䞊䝞䝷䝑䝥ຠᯝ䛾ホ౯(1/3)
unroll+overlap∧䛾䝁䞊䝗䜲䝯䞊䝆 ホ౯᮲௳
ᐃ⎔ቃ
• FX100 32䝜䞊䝗 (1.975GHz䚸32.4Tflops)• FX10 64䝜䞊䝗 (1.848GHz䚸15.1Tflops)ᐃ᮲௳• ၥ㢟䝃䜲䝈:nnx㽢nny㽢nnz㽢nnv䠙256㽢256㽢64㽢128• ୪ิᩘ:
npx㽢npy䠙8㽢8 (16䝇䝺䝑䝗㽢64䝥䝻䝉䝇) ౑⏝䝞䜲䝘䝸

!$OMP PARALLEL!$OMP MASTERMPI_Isend㏻ಙ䝇䝺䝑䝗ゎ㝖∧䛷䛿ศ㞳䛧䚸₇⟬ฎ⌮ᚋ䛻⛣ືMPI_Irecv
MPI_Waitall!$OMP END MASTER!$OMP DO SCHEDULE(DYNAMIC)
do ij=…
₇⟬ฎ⌮
enddo!$OMP END PARALLEL• original∧: MPI_Isend/Irecv/Waitall䜢㐃⥆䛧䛶ᐇ⾜• overlap∧: 䝬䝇䝍䝇䝺䝑䝗䛜MPI_Isend/Irecv/Wait䜢ᐇ⾜䛧䚸௚䛿₇⟬ฎ⌮䜢ᢸᙜ• unroll∧: ㏻ಙ┤ᚋ䛾₇⟬ฎ⌮(kernel_p༊㛫)䛷እഃ2㔜䝹䞊䝥䜢୍㔜໬• unroll+overlap∧: overlap∧䛸unroll∧䜢⼥ྜ䛥䛫䚸₇⟬㈇Ⲵ୙ᆒ⾮䜢ᨵၿ• ㏻ಙ䝇䝺䝑䝗ゎ㝖∧: unroll+overlap∧䜢䜒䛸䛻䚸MPI_Waitall䜢₇⟬ฎ⌮ᚋ䛻⛣ື 䛭䛾௚• FX100䛾䜸䞊䝞䝷䝑䝥ಁ㐍䛿⮬ື༊㛫䝰䞊䝗䜢౑⏝(--mca opal_progress_thread_mode 3)5

157 / 253

Copyright 2015 FUJITSU LIMITED㏻ಙ䜸䞊䝞䝷䝑䝥ຠᯝ䛾ホ౯(2/3)
 ㏻ಙ䝇䝺䝑䝗ᑐ䜰䝅䝇䝍䞁䝖䝁䜰䛾ຠᯝẚ㍑
䐟䝬䝇䝍䝇䝺䝑䝗䛾ᐇ⾜᫬㛫 䝭䝸⛊





䐠










༊㛫

 ༊㛫㏻ಙ䝇䝺䝑䝗ゎ㝖∧
㏻ಙಁ㐍䛒䜚㏻ಙ䝇䝺䝑䝗ゎ㝖∧    ∧ ∧  ∧

∧  ༊㛫 ༊㛫䛭䛾௚ὀ) ㏻ಙ䝇䝺䝑䝗ゎ㝖∧䛾kernel_p༊㛫᫬㛫䛿
unroll∧䛛䜙䛾᥎ᐃ䛻䜘䜛 䜰䝅䝇䝍䞁䝖䝁䜰䛾䜸䞊䝞䝷䝑䝥ಁ㐍ຠᯝ䛿䚸㏻ಙ䝇䝺䝑䝗᪉ᘧ䛸ྠ➼௨ୖ䐟䐟 ㏻ಙ䝇䝺䝑䝗ゎ㝖∧䛿䚸䜰䝅䝇䝍䞁䝖䝁䜰䛻䜘䜛㏻ಙಁ㐍䛷14%ᛶ⬟ྥୖ䐠
6


Copyright 2015 FUJITSU LIMITED㏻ಙ䜸䞊䝞䝷䝑䝥ຠᯝ䛾ホ౯(3/3)
 䝃䜲䜽䝹䜰䜹䜴䞁䝔䜱䞁䜾⤖ᯝ䛾ẚ㍑(kernel_p༊㛫) unroll+overlap∧⛊䢎䢏䢔䡡䡳䡨䡫䡸䡩䢇䢚䡸䢚䡬ᚅ䛱ᩚᩘ䝻䞊䝗䝯䝰䝸䜰䜽䝉䝇ᚅ䛱

ᾋືᑠᩘⅬ䝻䞊䝗䝯䝰䝸䜰䜽䝉䝇ᚅ䛱䝇䝖䜰ᚅ䛱ᩚᩘ䝻䞊䝗䜰䜽䝉䝇ᚅ䛱ᩚᩘ䢗䡬䢀䢚䡭䡴䡺䡹ᚅ䛱

ᾋືᑠᩘⅬ䝻䞊䝗䜰䜽䝉䝇ᚅ䛱

ᾋືᑠᩘⅬ䢗䡬䢀䢚䡭䡴䡺䡹ᚅ䛱

ᩚᩘ₇⟬ᚅ䛱

ᾋືᑠᩘⅬ₇⟬ᚅ䛱ศᒱ࿨௧ᚅ䛱

࿨௧䝣䜵䝑䝏ᚅ䛱䝞䝸䜰ྠᮇᚅ䛱䛭䛾௚䛾ᚅ䛱

࿨௧䝁䝭䝑䝖 ࿨௧䝁䝭䝑䝖࿨௧䝁䝭䝑䝖

䝡䝆䞊᫬㛫䝡䝆䞊᫬㛫䝯䝰䝸䝡䝆䞊᫬㛫



• 䝬䝇䝍䝇䝺䝑䝗䛾₇⟬ᩘ䛿䜋䜌䝊䝻э䝬䝇䝍䝇䝺䝑䝗䛿㏻ಙฎ⌮䛻ᑓᛕ














































 ㏻ಙ䝇䝺䝑䝗ゎ㝖∧ͤ䢎䢏䢔䡡䡳䡨䡫䡸䡩䢇䢚䡸䢚䡬ᚅ䛱

⛊

䝇䝖䜰ᚅ䛱

ᩚᩘ䝻䞊䝗䜰䜽䝉䝇ᚅ䛱ᩚᩘ䢗䡬䢀䢚䡭䡴䡺䡹ᚅ䛱

ᾋືᑠᩘⅬ䝻䞊䝗䜰䜽䝉䝇ᚅ䛱

ᾋືᑠᩘⅬ䢗䡬䢀䢚䡭䡴䡺䡹ᚅ䛱

ᩚᩘ₇⟬ᚅ䛱

ᾋືᑠᩘⅬ₇⟬ᚅ䛱ศᒱ࿨௧ᚅ䛱

࿨௧䝣䜵䝑䝏ᚅ䛱䝞䝸䜰ྠᮇᚅ䛱ᩚᩘ䝻䞊䝗䝯䝰䝸䜰䜽䝉䝇ᚅ䛱䛭䛾௚䛾ᚅ䛱

ᾋືᑠᩘⅬ䝻䞊䝗䝯䝰䝸䜰䜽䝉䝇ᚅ䛱࿨௧䝁䝭䝑䝖 ࿨௧䝁䝭䝑䝖࿨௧䝁䝭䝑䝖

䝡䝆䞊᫬㛫䝡䝆䞊᫬㛫䝯䝰䝸䝡䝆䞊᫬㛫• ඲䝇䝺䝑䝗䛷₇⟬ᩘ䛿ྠ➼• 䝬䝇䝍䝇䝺䝑䝗䛿㏻ಙฎ⌮䜒ᐇ⾜









ͤ䛯䛰䛧kernel_p༊㛫䛾䝇䝺䝑䝗୪ิ䝹䞊䝥䛿㟼ⓗ䝇䜿䝆䝳䞊䝸䞁䜾






































 ㏻ಙ䝇䝺䝑䝗ゎ㝖∧ͤ(㏻ಙಁ㐍䛒䜚)• ඲䝇䝺䝑䝗䛷₇⟬ᩘ䛿ྠ➼⛊䢎䢏䢔䡡䡳䡨䡫䡸䡩䢇䢚䡸䢚䡬ᚅ䛱ᩚᩘ䝻䞊䝗䝯䝰䝸䜰䜽䝉䝇ᚅ䛱

ᾋືᑠᩘⅬ䝻䞊䝗䝯䝰䝸䜰䜽䝉䝇ᚅ䛱䝇䝖䜰ᚅ䛱ᩚᩘ䝻䞊䝗䜰䜽䝉䝇ᚅ䛱ᩚᩘ䢗䡬䢀䢚䡭䡴䡺䡹ᚅ䛱

ᾋືᑠᩘⅬ䝻䞊䝗䜰䜽䝉䝇ᚅ䛱

ᾋືᑠᩘⅬ䢗䡬䢀䢚䡭䡴䡺䡹ᚅ䛱

ᩚᩘ₇⟬ᚅ䛱

ᾋືᑠᩘⅬ₇⟬ᚅ䛱ศᒱ࿨௧ᚅ䛱

࿨௧䝣䜵䝑䝏ᚅ䛱䝞䝸䜰ྠᮇᚅ䛱䛭䛾௚䛾ᚅ䛱

࿨௧䝁䝭䝑䝖 ࿨௧䝁䝭䝑䝖࿨௧䝁䝭䝑䝖

䝡䝆䞊᫬㛫䝡䝆䞊᫬㛫䝯䝰䝸䝡䝆䞊᫬㛫







• 䝬䝇䝍䝇䝺䝑䝗䛾㐜䜜䛿5%⛬ᗘ



䝇䝺䝑䝗ᩘ䛜2෢䚸ືⓗ䝇䜿䝆䝳䞊䝸䞁䜾୙せ䚸䝹䞊䝥୍㔜໬䜒୙せ






































7


158 / 253

Copyright 2015 FUJITSU LIMITED éĖýđÛÏÓã»4¯ÜU}@GKV䜹䞊䝛䝹䛻䛚䛡䜛䜸䞊䝞䝷䝑䝥ຠᯝ (1/4)
 ホ౯᮲௳
d. 䜸䞊䝞䝷䝑䝥䛒䜚 (MPI_Ialltoall)䛾䝁䞊䝗䜲䝯䞊䝆

ᐃ⎔ቃ:• FX100 16䝜䞊䝗 (2.2GHz䚸18.0Tflops)ᐃ᮲௳• ၥ㢟䝃䜲䝈: nxw㽢nyw䠙128㽢128䚸
global_nz㽢global_nv㽢global_nm
䠙16㽢16㽢15• ୪ิᩘ: 16䝇䝺䝑䝗㽢32䝥䝻䝉䝇䚸
nprocw㽢nprocz㽢nprocv㽢nprocm㽢nprocs
䠙4㽢2㽢2㽢2㽢1

 ౑⏝䝞䜲䝘䝸

!$OMP PARALLEL
do im = 2, nm-2!$OMP MASTERCALL MPI_Ialltoall!$OMP END MASTER!$OMP DO SCHEDULE(DYNAMIC)
do i = 1, num_trans
FFT₇⟬
enddo
!$OMP MASTERCALL MPI_Waitall!$OMP END MASTER!$OMP BARRIER
enddo!$OMP END PARALLELa. 䜸䞊䝞䝷䝑䝥䛺䛧 (MPI_Alltoall)b. 䜸䞊䝞䝷䝑䝥䛒䜚(MPI_Alltoall䠇OpenMP㏻ಙฎ⌮䝇䝺䝑䝗)c. 䜸䞊䝞䝷䝑䝥䛺䛧 (MPI_Ialltoall)ͤ
d. 䜸䞊䝞䝷䝑䝥䛒䜚 (MPI_Ialltoall)ͤ
e. 䜸䞊䝞䝷䝑䝥䛒䜚 (MPI_Ialltoall䠇㟼ⓗ䝇䝺䝑䝗䝇䜿䝆䝳䞊䝹)ͤ

ͤ:ᐩኈ㏻ഃ䛷సᡂ 䛭䛾௚• 䜸䞊䝞䝷䝑䝥ಁ㐍䛿⮬ື༊㛫䝰䞊䝗䜢౑⏝ (--mca opal_progress_thread_mode 3)8

159 / 253

Copyright 2015 FUJITSU LIMITEDGKV䜹䞊䝛䝹䛻䛚䛡䜛䜸䞊䝞䝷䝑䝥ຠᯝ (2/4)
ᐃ⤖ᯝ &) ! "

&(
&'

䐟

&

䐡

䐠

%*
%)
%(
%'
%

     !      !    " !    " !    + !   " + " !    "+    "+  !  "!  "! "! "

 MPI_Alltoall䠇OpenMP㏻ಙฎ⌮䝇䝺䝑䝗䛷䛿䚸35.4%䛾ᐇ⾜᫬㛫▷⦰䐟䐟 MPI_Ialltoall䠇䜰䝅䝇䝍䞁䝖䝁䜰᭷ຠ໬䛷䛿䚸34.7%䛾ᐇ⾜᫬㛫▷⦰䐠 䐠䛻ᑐ䛧㟼ⓗ䝇䝺䝑䝗䝇䜿䝆䝳䞊䝹䜢⾜䛖䛸䚸▷⦰ᖜ䛿26.5%䛻ῶᑡ䐡
9

Copyright 2015 FUJITSU LIMITED

GKV䜹䞊䝛䝹䛻䛚䛡䜛䜸䞊䝞䝷䝑䝥ຠᯝ (3/4)
 ㏻ಙฎ⌮᫬㛫▷⦰䛚䜘䜃䜸䞊䝞䝷䝑䝥ᗘྜ䛔䛾☜ㄆྛᐃ䛾᫬㛫ෆヂ䜢୪䜉᭰䛘䛯⤖ᯝ&) ! "&( 䜰䝅䝇䝍䞁䝖䝁䜰↓ຠ᫬䖩䖩䛿
MPI_Alltoall䛸MPI_Ialltoall䛜䜋䜌ྠ䛨ฎ⌮᫬㛫

&'
&
%*
%)

65%⛬ᗘ

%(
%'

• ᚋ⪅䛿Tofuྥ䛡䜰䝹䝂䝸䝈䝮䛷䛺䛔䛜䚸䝜䞊䝗ᩘ䛜ᑡ䛺䛔䛯䜑ᙳ㡪ᑠ%     !      !    " !    " !    + !   " + " !    "+    "+  䖩 䜰䝅䝇䝍䞁䝖䝁䜰䜢᭷ຠ䛻䛩䜛䛸䚸
MPI_Ialltoall䛿65%⛬ᗘ᫬㛫▷⦰!  "䖩! "䖩䖩!  "! "&) ! "&( 䐠MPI_Alltoall䠇OMP㏻ಙ䝇䝺䝑䝗䜔
䐡MPI_Ialltoall䠇䜰䝅䝇䝍䞁䝖䝁䜰䛷䛿䚸bwd䠇fwd༊㛫䛾⤒㐣᫬㛫䛜䐟䜸䞊䝞䝷䝑䝥䛺䛧᫬䛾₇⟬᫬㛫䛻ᴫ䛽୍⮴㏻ಙ᫬㛫䛾㞃䜊䛔䛻ᡂຌ

&'
&
%*
%)
%(
%'
%

     !      !    " !    " !    !   " + " !    "+  + 
  "+  䐟!  "10
160 / 253䐠! "䐡!  "! "

Copyright 2015 FUJITSU LIMITEDGKV䜹䞊䝛䝹䛻䛚䛡䜛䜸䞊䝞䝷䝑䝥ຠᯝ (4/4)
 䝃䜲䜽䝹䜰䜹䜴䞁䝔䜱䞁䜾⤖ᯝ䛾ẚ㍑(bwd:comm.+comp.༊㛫)䐟 䜸䞊䝞䝷䝑䝥䛺䛧 (MPI_Alltoall)䐟⛊䢎䢏䢔䡡䡳䡨䡫䡸䡩䢇䢚䡸䢚䡬ᚅ䛱ᩚᩘ䝻䞊䝗䝯䝰䝸䜰䜽䝉䝇ᚅ䛱

ᾋືᑠᩘⅬ䝻䞊䝗䝯䝰䝸䜰䜽䝉䝇ᚅ䛱䝇䝖䜰ᚅ䛱ᩚᩘ䝻䞊䝗䜰䜽䝉䝇ᚅ䛱ᩚᩘ䢗䡬䢀䢚䡭䡴䡺䡹ᚅ䛱

ᾋືᑠᩘⅬ䝻䞊䝗䜰䜽䝉䝇ᚅ䛱

ᾋືᑠᩘⅬ䢗䡬䢀䢚䡭䡴䡺䡹ᚅ䛱

ᩚᩘ₇⟬ᚅ䛱

ᾋືᑠᩘⅬ₇⟬ᚅ䛱ศᒱ࿨௧ᚅ䛱

࿨௧䝣䜵䝑䝏ᚅ䛱䝞䝸䜰ྠᮇᚅ䛱䛭䛾௚䛾ᚅ䛱

࿨௧䝁䝭䝑䝖

࿨௧䝁䝭䝑䝖࿨௧䝁䝭䝑䝖

䝡䝆䞊᫬㛫䝡䝆䞊᫬㛫䝯䝰䝸䝡䝆䞊᫬㛫• 㠀䝬䝇䝍䝇䝺䝑䝗䛾䝞䝸䜰ྠᮇᚅ䛱኱









䐠 䜸䞊䝞䝷䝑䝥䛒䜚(MPI_Alltoall䠇OMP㏻ಙ䝇䝺䝑䝗)







⛊



• 䝞䝸䜰ྠᮇᚅ䛱䜢䜋䜌ゎᾘ























































































































䐠








䐡 䜸䞊䝞䝷䝑䝥䛒䜚 (MPI_Ialltoall)䠇䜰䝅䝇䝍䞁䝖䝁䜰







• 䝞䝸䜰ྠᮇᚅ䛱䜢䜋䜌ゎᾘ⛊



䐡






䐢 䜸䞊䝞䝷䝑䝥䛒䜚(MPI_Ialltoall䠇㟼ⓗ䡹䢖䡫䢀䢚䡹䡵䡸䢚䡩䡬䢕)䠇䜰䝅䝇䝍䞁䝖䝁䜰









⛊


• ྛ䝇䝺䝑䝗䛾₇⟬㔞䛜ྠ䛨䐢э㠀䝬䝇䝍䝇䝺䝑䝗䛻㏻ಙฎ⌮ᚅ䛱䛜Ⓨ⏕
⏕










௒ᅇ䜿䞊䝇䛿ືⓗ䝇䝺䝑䝗䝇䜿䝆䝳䞊䝹䛜᭷฼








11

Copyright 2015 FUJITSU LIMITED éĖýđÛÏÓã~ÜU}@161 / 253

GT5DéĖýđ
~]

35

ĊċĐåëõó]

32
K

6

FX100-1CMG

đĖāďæĔ[%]

28.4 

25.1

đĖāďæĔ[msec]

2.01

0.58

~U[%]

14.0

13.4

A

4.39

1.17

a·[msec]

ĊċĐĀĔüK [GB/s]
L1DĈó]

23.4

89.3

2.73e6

1.04e6

L1DĈódm[%]

43.4

24.8

6.44e5

3.14e5

8.9

37.4

SIMD1[%]

99.7

99.8

2SIMD~/SIMD~[%]

72.3

34.3

L2Ĉó]
L2Ĉódm[%]

ÇSTREAM Benchmark: K~46.6GB/s, FX100~310GB/sÇCompiler option
K:-Kfast -Kparallel,openmp -X9 -Kmfunc=2 -Kocl -CcdRR8-fw -Qt -Ntl_notrt-xpre_diff -Kfast -Kopenmp -Kocl,optmsg=2 -X9-Kmfunc=2 -Kloop_nofusion -CcdRR8-Kprefetch_sequential=soft,prefetch_cache_level=1

FX100:



real*8 f(-1:nv+2,-1:nz+2,-1:ny+2,-1:nx+2)
!$OMP DO SCHEDULE(dynamic)
do i = 1,nx (nx=32)
do j = 1,ny (ny=32)
compute vxyv~vxl2 from vx(l,j,i),vy(l,j,i),vz(l,j,i),vv(l,j,i)do k = 1,nz (nz=16)
do l = 1,nv (nv=128)
LOADdf(l,k,j,i)=
LOAD/STORE&
vxyv(l)*f(l,k,j,i)&+ vvr(l) *f(l+1,k,j,i)&- vvl(l) *f(l-1,k,j,i)&- vvr2(l)*f(l+2,k,j,i)&+ vvl2(l)*f(l-2,k,j,i)&+vzl2(l)*(f(l,k-2,j,i)-f(l,k+2,j,i))&+vzl(l) *(f(l,k+1,j,i)-f(l,k-1,j,i))&+ vyr(l) *f(l,k,j+1,i)&- vyl(l) *f(l,k,j-1,i)&- vyr2(l)*f(l,k,j+2,i)&+ vyl2(l)*f(l,k,j-2,i)&+ vxr(l) *f(l,k,j,i+1)&- vxl(l) *f(l,k,j,i-1)&- vxr2(l)*f(l,k,j,i+2)&+ vxl2(l)*f(l,k,j,i-2)
dfc=dfc+df(l,k,j,i)*fc(l,k,j,i)
enddo
enddo
enddo
enddo

đĖāďæĔÐâ9ÑÒU#&ÈU#&Ü)3ä¨lÔÖÎ21¦¨,ĝŋĲņæŏOnn
¥n

33

ĿŀŅĖğĨĦn

24
K

D

33.3 

29.7

ņŋķńĘŉ[msec]

1.62

0.46

¥b¯[%]

28.3

16.5

P²rÒ[msec]

1.91

0.83

ĿŀŅĴŉİX [GB/s]
L1DĽĦn
L1DĽĦdm[%]
L2ĽĦn
L2ĽĦdm[%]
SIMD8

[%]

9SIMD¥/SIMD¥[%]

FX100-1CMG

ņŋķńĘŉ[%]

38.9 

87.6

1.41e6

7.35e5

18.8

6.6

4.17e5

1.87e5

4.0

34.2

100.0

100.0

93.9

37.5

āĆņŋķńĘŉąŎ$ĂăĒąĄS÷éFX100āĆIXĄb¯(,L2ĽĦdmñÚóĸŅķĚĬīñíĉó¯÷Āìăìő

FMA¥ñóê.©ă 9ąĝŋĲņĕíĉó¸ÎāòĀìăìő

real*8 f(-1:nv+2,-1:nz+2,-1:ny+2,-1:nx+2)
!$OMP DO SCHEDULE(dynamic)
do i = 1,nx (nx=32)
do j = 1,ny (ny=32)
do k = 1,nz (nz=16)
do l = 1,nv (nv=128)
LOADdf(l,k,j,i)= &LOAD/STORE&
f(l,k,j,i) *1.11d0&+f(l-2,k,j,i) *1.12d0&+f(l-1,k,j,i) *1.13d0&+f(l+1,k,j,i) *1.14d0&+f(l+2,k,j,i) *1.15d0&+f(l,k-2,j,i) *1.16d0&+f(l,k-1,j,i) *1.17d0&+f(l,k+1,j,i) *1.18d0&+f(l,k+2,j,i) *1.19d0&+f(l,k,j-2,i) *1.21d0&+f(l,k,j-1,i) *1.22d0&+f(l,k,j+1,i) *1.23d0&+f(l,k,j+2,i) *1.24d0&+f(l,k,j,i-2) *1.25d0&+f(l,k,j,i-1) *1.26d0&+f(l,k,j,i+1) *1.27d0&+f(l,k,j,i+2) *1.28d0
enddo
enddo
enddo
enddo

5

162 / 253¦¨,ĝŋĲņçŏÍ
¥n

33

ĿŀŅĖğĨĦn

24
K

D

FX100-1CMG

ņŋķńĘŉ[%]

33.3 

29.7

ņŋķńĘŉ[msec]

1.62

0.46

¥b¯[%]

15.9

12.6

P²rÒ[msec]

3.40

1.09

ĿŀŅĴŉİX [GB/s]
L1DĽĦn
L1DĽĦdm[%]
L2ĽĦn
L2ĽĦdm[%]
SIMD8

[%]

9SIMD¥/SIMD¥[%]


n

21.6

72.3

2.54e6

7.75e5

30.0

25.2

4.11e5

2.10e5

5.0

17.0

100.0

100.0

94.0

37.4

āčIXĄb¯(,L1DĽĦnédmĂčĄIXĄE'ê
FX100āĆL1DĽĦnąEIĆìê

real*8 f(-1:nv+2,-1:nz+2,-1:ny+2,-1:nx+2)!$OMP DO SCHEDULE(dynamic)
do i = 1,nx (nx=32)
do j = 1,ny (ny=32)
do k = 1,nz (nz=16)
do l = 1,nv (nv=128)
LOADdf(l,k,j,i)= &LOAD/STORE&
vv_(l) *f(l,k,j,i)&+vvl2(l)*f(l-2,k,j,i)&-vvl(l) *f(l-1,k,j,i)&+vvr(l) *f(l+1,k,j,i)&-vvr2(l)*f(l+2,k,j,i)&+vzl2(l)*f(l,k-2,j,i)&-vzl(l) *f(l,k-1,j,i)&+vzr(l) *f(l,k+1,j,i)&-vzr2(l)*f(l,k+2,j,i)&+vyl2(l)*f(l,k,j-2,i)&-vyl(l) *f(l,k,j-1,i)&+vyr(l) *f(l,k,j+1,i)&-vyr2(l)*f(l,k,j+2,i)&+vxl2(l)*f(l,k,j,i-2)&-vxl(l) *f(l,k,j,i-1)&+vxr(l) *f(l,k,j,i+1)&-vxr2(l)*f(l,k,j,i+2)
enddo
enddo
enddo
enddo

Cf. L1DĽĦ¿·K:
8B×10¶ª×(128×16×32×32)<À÷128B/$ńĘŉŐ1.31e6
FX100:8B×10¶ª×(128×16×32×32)<À÷256B/$ńĘŉŐ6.55e5
äl-2~l+2,k-1~k+1ĕĜŉL1$ĂkO6 ÛÏÓã1Ü)3

163 / 253ૼ୒ੲਾ भ ৲૗஄્ඉy ৲૨ऋৈःy୵ഥभధഔਙऋ଩ः‫ق‬౰઴ॶজ‫ش‬ऋৈः‫ك‬ yଂਚ৓ऩ୵ഥ५ॣ४গ‫ش‬জথॢभ஍ટൠy९ইॺक़ख़॔ঃॖউছॖথॽথॢऋથ஍ध
ਖ਼૵खञৃ়प৭උ



૗஄୻







          










䠖 ࿨௧
7

Copyright 2016 FUJITSU LIMITEDૼ୒ੲਾ 
भధഔ৲૗஄્ඉy ৲૨ऋ଩ःy୵ഥभధഔਙऋৈः‫ق‬౰઴ॶজ‫ش‬ऋ଩ः‫ك‬yଂਚ৓ऩ୵ഥ५ॣ४গ‫ش‬জথॢभ஍ટৈ y९ইॺक़ख़॔ঃॖউছॖথॽথॢऋൠःध
ਖ਼૵खञৃ়प৭උ

૗஄୻





          
















䠖 ࿨௧
8

164 / 253

Copyright 2016 FUJITSU LIMITEDৌ଴॥‫ ॻش‬㏣ຍਫ਼઒॥‫ॻش‬ड़জ४ॼঝ॥‫ॻش‬भঝ‫ش‬উ঎ॹॕभ१ॖ६॑૗৲
॥‫ ॻش‬ࠥGI ͐ 
ࠥࠥ͐
 
 ࠥࠥ͐
 
 
 
 
ࠥ

 

ࠥ
 ͐ 
 
 
 
 
 
 
  ࠥ॥‫ ॻش‬    


 
 

॥‫ ॻش‬         ࠥ͐
 
 
 
 
 
 
 
 
 
   
ࠥ

 
 
 
 

॥‫ ॻش‬                


 
 
 
 
 
 
 
 

॥‫ ॻش‬                        


3

 
 
 
 
 
 
 
 
 
 
 
 

Copyright 2016 FUJITSU LIMITED৹ਪ੥ટ  ኚ᭦॥‫ॻش‬ถ಍উটই॓ॖছ
⛊


ड़জ४ॼঝ

യਤ

ӖӗӜҩһҰҳӀұӏӢӀӢҴୄठତਯট‫ॻش‬ওঔজ॔ॡ७५ୄठ
೟৿৵ਯਡট‫ॻش‬ওঔজ॔ॡ७५ୄठ
५ॺ॔ୄठତਯট‫॔ ॻش‬ॡ७५ୄठ
ତਯӟҴӈӢ ҵҼӂӁୄठ೟৿৵ਯਡট‫॔ ॻش‬ॡ७५ୄठ
೟৿৵ਯਡӟҴӈӢ ҵҼӂӁୄठତਯ౰઴ୄठ
೟৿৵ਯਡ౰઴ୄठ
ীว୵ഥୄठ
୵ഥইख़ॵॳୄठ
ংজ॔৊਋ୄठ
जभ౎भୄठ
୵ഥ॥঑ॵॺ ୵ഥ॥঑ॵॺ
୵ഥ॥঑ॵॺ

 










౰઴
আ‫ش‬ॡૻ

୵ഥ૨ 
୵ഥ૨

ӖӗӜӁӝҴӐӣҳӈ 

੕୵ഥਯ

ड़জ४ॼঝ

   

 

യਤ

 

   

 

 

    5

165 / 253

Copyright 2016 FUJITSU LIMITED৹ਪ੥ટ ㏣ຍ৸৬ॹ‫ॱش‬
⛊








䢎䢏䢔䡡䡳䡨䡫䡸䡩䢇䢚䡸䢚䡬ᚅ䛱ᩚᩘ䝻䞊䝗䝯䝰䝸䜰䜽䝉䝇ᚅ䛱
ᾋືᑠᩘⅬ䝻䞊䝗䝯䝰䝸䜰䜽䝉䝇ᚅ䛱䝇䝖䜰ᚅ䛱ᩚᩘ䝻䞊䝗䜰䜽䝉䝇ᚅ䛱ᩚᩘ䢗䡬䢀䢚 䡭䡴䡺䡹ᚅ䛱
ᾋືᑠᩘⅬ䝻䞊䝗䜰䜽䝉䝇ᚅ䛱
ᾋືᑠᩘⅬ䢗䡬䢀䢚 䡭䡴䡺䡹ᚅ䛱
ᩚᩘ₇⟬ᚅ䛱
ᾋືᑠᩘⅬ₇⟬ᚅ䛱ศᒱ࿨௧ᚅ䛱
࿨௧䝣䜵䝑䝏ᚅ䛱䝞䝸䜰ྠᮇᚅ䛱䛭䛾௚䛾ᚅ䛱
࿨௧䝁䝭䝑䝖
࿨௧䝁䝭䝑䝖࿨௧䝁䝭䝑䝖

䜸䝸䝆䝘䝹  ಁ㐍 䜸䝸䝆䝘䝹  ಁ㐍 䜸䝸䝆䝘䝹  ಁ㐍 䜸䝸䝆䝘䝹  ಁ㐍 䜸䝸䝆䝘䝹  ಁ㐍



6

Copyright 2016 FUJITSU LIMITEDßÚàn,ăďôć|£jïĖüÜ
tÜd$Uäp¥ÔÖÊ¡¤éĖýđäCªÚÔØFX100Ü_åñóöĔûïåäÎÖ¯Ú~ÜèĖĀĖďøă
 cE¸ÜïĖü8bÙRiÜ¯ćóëXzÚ.LÜ$k§¿
 MPI«%ÐâåñóöĔûïåÞÜßÙÜèĖĀĖĄøü
 ½.f»4¯ÞÜTofuDåđðĐôĉ³~
 L1êČøñčO&Ûá×ØË
ÌÜNÙÍ×ÖL1êČøñč,ä£x§¿
FMA1Ü0ăĐāçø÷$Ü0

30

166 / 253