⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩VII. 㧗ᛶ⬟ィ⟬ࢩࢫࢸ࣒◊✲㒊㛛
࣓ࣥࣂ࣮
ᩍᤵ

ᮔ Ὀ♸ࠊ㧗ᶫ ኱௓ࠊᘓ㒊 ಟぢ෸ᩍᤵሮ ᩄ༤㸦ᐈဨࠊᮾி኱Ꮫ㸧ຓᩍከ⏣㔝 ᐶேࠊᑠᯘ ㄹᖹࣇ࢙࣮ࣟబ⸨ ୕ஂ◊✲ဨ⸨⏣ ඾ஂ

Ꮫ⏕  ኱Ꮫ㝔⏕ 22 ྡࠊᏛ㢮⏕ 6 ྡᏛෆඹྠ◊✲ဨᏳỌ Ᏺ฼ࠊ࿴⏣ ⪔୍ࠊḈ஭ 㕲ஓࠊᒣཱྀ ెᶞࠊ௒಴ ᬡ㸦௨ୖࠊࢩࢫࢸ࣒᝟ሗ⣔㸧Ꮫእඹྠ◊✲ဨᑠᰗ ⩏ኵ㸦RIST㸧ࠊ▼ᕝ ⿱㸦⌮໬Ꮫ◊✲ᡤ㸧ࠊᯇᒸ ⪽㸦⌮໬Ꮫ◊✲ᡤ㸧ࠊ୰ᓥ ᾈ㸦ி㒔኱Ꮫ㸧ࠊኳ㔝 ⱥᬕ㸦៞᠕⩏ሿ኱Ꮫ㸧ࠊᚋ⸨ ோᚿ㸦㇏ᶫᢏ⾡⛉Ꮫ኱Ꮫ㸧ࠊ㛵ཱྀ ᬛႹ㸦⏘ᴗᢏ⾡⥲ྜ◊✲ᡤ㸧ࠊ୰ᑿ ᫀᗈ㸦⌮໬Ꮫ◊✲ᡤ㸧ࠊబ㔝 ೺ኴ㑻㸦⌮໬Ꮫ◊✲ᡤ㸧ࠊᕝᓥ ⱥஅ㸦៞᠕⩏ሿ኱Ꮫ㸧ࠊ⏣୰ ᫀᏹ㸦៞᠕⩏ሿ኱Ꮫ㸧ࠊᖹ㈡ ᘯᖹ㸦៞᠕⩏ሿ኱Ꮫ㸧ᴫせᮏ◊✲㒊㛛࡛ࡣࠊ㧗ᛶ⬟ィ⟬ࢩࢫࢸ࣒࢔࣮࢟ࢸࢡࢳࣕࠊ୪ิࣉࣟࢢ࣑ࣛࣥࢢ⎔ቃࠊGPU ฼⏝ᢏ⾡ࠊFPGA ฼⏝ᢏ⾡ࠊ୪ิᩘ್ฎ⌮ࡢ㧗㏿໬◊✲ࠊศᩓࢩࢫࢸ࣒ࢯࣇࢺ࢙࢘࢔ࠊ࢚ࢡࢫࢺ
࣮࣒ࣜࣅࢵࢢࢹ࣮ࢱࡢᇶ┙ᢏ⾡➼ࡢ◊✲ࢆ⾜ࡗ࡚࠸ࡿࠋ

◊✲ᡂᯝ

OpenCL ࠿ࡽไᚚྍ⬟࡞ GPU-FPGA 㛫 DMA ㌿㏦ᢏ⾡ࡢ㛤Ⓨ㸦ᮔࠊᑠᯘ㸧

CPU-GPU ࢡࣛࢫࢱᵓᡂ࡛࠶ࡿ⌧ᅾࡢ HPC ࢩࢫࢸ࣒ࡢᛶ⬟ࢆ᭦࡟ྥୖࡉࡏࡿࡓࡵ࡟ࠊGPU
࡟₇⟬㏻ಙᛶ⬟࡟ඃࢀ࡚࠸ࡿ FPGA (Field Programmable Gate Array)ࢆ㐃ᦠࡉࡏࠊ཮᪉ࢆ┦⿵ⓗ࡟฼⏝ࡍࡿ GPU-FPGA 」ྜࢩࢫࢸ࣒࡟㛵ࡍࡿ◊✲ࢆ㐍ࡵ࡚࠸ࡿࠋGPUࠊFPGA ࡜࠸ࡗࡓ␗࡞
ࡿࣁ࣮ࢻ࢙࢘࢔ࢆᦚ㍕ࡍࡿࢩࢫࢸ࣒ୖ࡛ࡣࠊྛࢹࣂ࢖ࢫ࡛ᐇ⾜ࡉࢀࡿ₇⟬ࢆ࡝ࡢࡼ࠺࡟ࣉࣟ
ࢢ࣑ࣛࣥࢢࡋࠊ඲ࢹࣂ࢖ࢫࢆ༠ㄪືసࡉࡏࡿ࠿ࡀ㔜せ࡞ㄢ㢟࡜࡞ࡿࠋࡑࡇ࡛ᮏ◊✲࡛ࡣࠊGPU-- 155 -

─ 155 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩FPGA 㛫㐃ᦠࢆࢩ࣮࣒ࣞࢫ࡟⾜࠺ࡓࡵࡢࢹࣂ࢖ࢫ㛫࣓ࣔࣜ㌿㏦࡟ࡘ࠸࡚╔┠ࡋࠊࡑࡢせ⣲ᢏ⾡ࢆᥦ᱌ࡋ࡚࠸ࡿࠋ
᫖ᖺᗘ࡟ࡣࠊPCIe ࣉࣟࢺࢥࣝࢆ࣮࣋ࢫ࡜ࡍࡿ GPU-FPGA 㛫 DMA ㌿㏦ᢏ⾡ࢆ㛤Ⓨࡋࠊࡇࡢᢏ⾡࡟ࡼࡾࠊCPU ࢆ௓ࡉ࡞࠸ DMA ㌿㏦ࢆ FPGA ࡀ⮬ᚊⓗ࡟㉳ືࡍࡿࡇ࡜ࡀྍ⬟࡜࡞ࡗࡓࠋ
ࡓࡔࡋࡇࢀࡣࠊVerilog HDL ࡢ࡛ࣞ࣋ࣝ GPU-FPGA 㛫࡛ DMA ㌿㏦ࡀᐇ⌧࡛ࡁࡿࡢࢆ☜ㄆࡋࡓࡢࡳ࡛࠶ࡾࠊC ゝㄒࡢࡼ࠺࡞࣮ࣘࢨ࣮ࣇࣞࣥࢻ࣮ࣜ࡞ࣉࣟࢢ࣑ࣛࣥࢢゝㄒ࠿ࡽࡇࡢᶵ⬟ࢆไᚚࡍࡿࡇ࡜ࡀ࡛ࡁ࡞࠿ࡗࡓࠋࡇࡢၥ㢟ࢆࠊࡇࢀࡲ࡛ࡢ◊✲࠿ࡽᚓࡽࢀࡓ▱ぢ࡜ Intel ࡀᥦ౪ࡍࡿ㧗఩ྜᡂࢶ࣮ࣝ Intel FPGA SDK for OpenCL ࡢᶵ⬟࡜ࢆά⏝ࡍࡿࡇ࡜࡟ࡼࡗ࡚ゎỴࡋࡓࠋࡑࡢᡂᯝࢆᅗ 1 ࡟♧ࡍࠋ

ᅗ 1 OpenCL ࠿ࡽไᚚྍ⬟࡞ GPU-FPGA 㛫 DMA ㌿㏦ࡢᐇ⌧ࡇࡢᢏ⾡࡟ࡼࡾࠊGPU-FPGA 㛫 DMA ㌿㏦ࢆ OpenCL ࡢ࡛ࣞ࣋ࣝไᚚ࡛ࡁࡿࡼ࠺࡟࡞ࡾࠊ
㏻ಙࣞ࢖ࢸࣥࢩ࡜㏻ಙࣂࣥࢻᖜࢆホ౯ࡋࡓ࡜ࡇࢁ Verilog HDL ∧࡜ྠᵝࡢᛶ⬟ࢆ♧ࡍࡇ࡜ࢆ☜ㄆࡋࡓࠋᅗ࠿ࡽ᫂ࡽ࠿࡞ࡼ࠺࡟ࠊFPGA ࠿ࡽ GPU ࡬ࡢ㏻ಙࡣᖖ࡟ᚑ᮶ᡭἲࡼࡾᛶ⬟ࡀ㧗ࡃࠊ
᭱኱࡛ 7.0 GB/s (⌮ㄽᛶ⬟ࡢ 87.5%) ࡢࣂࣥࢻᖜࡀ☜ㄆࡉࢀࡓࠋ୍᪉ࠊGPU ࠿ࡽ FPGA ࡬ࡢ㏻
ಙࡣࠊ4 MB ࢹ࣮ࢱࢧ࢖ࢬࢆ㉸࠼ࡿ࡜ᚑ᮶ᡭἲࡢ᪉ࡀᛶ⬟ࡀⰋ࠸⤖ᯝ࡜࡞ࡗࡓࠋࡇࡢ⌮⏤࡟ࡘ࠸࡚ NVIDIA ࡢᢏ⾡⪅࡜㆟ㄽࡋࡓ࡜ࡇࢁࠊGPU ࡢ L2 ࢟ࣕࢵࢩ࣮ࣗ࢜ࣂ࣮ࣇ࣮ࣟ࡟ࡼࡿࡶࡢ
- 156 -

─ 156 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ
筑波大学 計算科学研究センター 平成 30 ᖺᗘᖺḟሗ࿌᭩
年度 年次報告書ࡔ࡜⪃࠼ࡽࢀ࡚࠾ࡾࠊ⌧ᅾヲ⣽࡟ゎᯒ୰࡛࠶ࡿࠋࡑࡋ࡚ࠊ≉࡟ࢹ࣮ࢱࢧ࢖ࢬࡀᑠࡉࡃ࡞ࡿ⣽だと考えられており、現在詳細に解析中である。そして、特にデータサイズが小さくなる細⢏ᗘ୪ิฎ⌮ࢆ⾜࠺ሙྜࠊపࣞ࢖ࢸࣥࢩ㏻ಙࢆᐇ⌧࡛ࡁࡿᥦ᱌ᡭἲࡢ᪉ࡀ᭷฼࡛࠶ࡿࡇ࡜ࡀ
粒度並列処理を行う場合、低レイテンシ通信を実現できる提案手法の方が有利であることが確認された。
☜ㄆࡉࢀࡓࠋ

 GPU-FPGA 連携のためのプログラム開発手法（朴、小林）㐃ᦠࡢࡓࡵࡢࣉࣟࢢ࣒ࣛ㛤Ⓨᡭἲ㸦ᮔࠊᑠᯘ㸧
前項に示した通り、我々は๓㡯࡟♧ࡋࡓ㏻ࡾࠊᡃࠎࡣ GPU に演算通信性能に優れている࡟₇⟬㏻ಙᛶ⬟࡟ඃࢀ࡚࠸ࡿ FPGA (Field Programmable

Gate Array)を連携させ、双方を相補的に利用するために
Array)ࢆ㐃ᦠࡉࡏࠊ཮᪉ࢆ┦⿵ⓗ࡟฼⏝ࡍࡿࡓࡵ࡟ GPU-FPGA 㛫࡛ࢹ࣮ࢱࢆ㏦ཷಙࡍࡿ
間でデータを送受信するࡓࡵࡢ௙⤌ࡳࢆ㛤Ⓨࡋ࡚࠸ࡿࠋGPUための仕組みを開発している。GPU ࡜と FPGA ࢆࢯࣇࢺ࢙࢘࢔ⓗ࡟㐃ᦠࡉࡏࡿࡓࡵ࡟ࡣࠊࣁ࣮
をソフトウェア的に連携させるためには、ハードウェア及び周辺システムの開発だけでなく、GPU ࠾ࡼࡧ
および FPGA ࢆྠ୍ࣉࣟࢢ࣒ࣛ࠿ࡽ࿧ࡧ
を同一プログラムから呼びࢻ࢙࢘࢔ཬࡧ࿘㎶ࢩࢫࢸ࣒ࡢ㛤Ⓨࡔࡅ࡛࡞ࡃࠊGPU

ฟࡋࠊᥦ᱌ࡋࡓ
出し、提案した DMA ㌿㏦ᢏ⾡ࢆά⏝ࡋ࡞ࡀࡽ༠ㄪィ⟬ࢆ⾜࠺ࡓࡵࡢࣉࣟࢢ࣒ࣛ⎔ቃࡀᚲせ転送技術を活用しながら協調計算を行うためのプログラム環境が必要࡜࡞ࡿࠋࡑࡢࡓࡵᮏ◊✲࡛ࡣࠊGPUとなる。そのため本研究では、GPU ࡜と FPGA ࡢࢥࣥࣃ࢖ࣝ⎔ቃࡸ㛤Ⓨゝㄒࡢ⤌ࡳྜࢃࡏࢆ
のコンパイル環境や開発言語の組み合わせを
ㄪᰝࡋࠊGPU-FPGA
調査し、GPU-FPGA ༠ㄪィ⟬ࢆ⾜࠺ࡓࡵࡢᇶᮏࣔࢹࣝࢆᥦ᱌ࡋࡓࠋᅗ
協調計算を行うための基本モデルを提案した。図 2 ࡟ࡑࡢᴫせ࠾ࡼࡧᡂにその概要および成
ᯝࢆ♧ࡍࠋ
果を示す。
協調計算のサン プ ルコ ード(GPU で ベク タ 加算・ F PGA で 加算結果のリ ダク シ ョ ン 演算)

H ea d er files
for CUD A(*.h )__global__
void vecadd(float *a, float *b, float *c, int n) {int i = blockIdx.x * blockDim.x + threadIdx.x;
if (i < n) c[i] = a[i] + b[i];}Ru n ning o n the GPU__kernel void reduction({)__global float *restrict Y,__global const float *restrict X,__global uint *restrict I,
const uint NUMDATA

veca d d .cu

nvcc

So u rce files

com p ile

clho st. cc

g++veca d d .olin k

int idx = *I;
float sum = 0.0f;
for (int i = 0; i < NUMDATA; i++) {sum += X[i];clh o st. o

Op enC L
Lib ra ry(*.a , *. so )H ea d er f iles
fo r O p en CL(*. h)

Y[idx] = sum;
*I = ++idx;

Ru n ning o n th e F PGA

2

20 0

send C

red uction

Stream 1
init

send A

send B veca d drecv C

send Cg et
resultred uction

Stream 2
send A: CPU ta sk: GPU task

send B vecad d

recv C…

: F PGA task

w / FPG A -GPU D M A

16 0
Exe cu tio n tim e [m s ]recv CLow er is Better

Stream 0
send B veca d d

1.8

18 0

Tim e
send A

a.out

nvcc

in clu d e}}

CU D ALib rary(*. a, *.so )in clu d e

1.6

w o / F PGA -GPU D M A

14 0

1.4

S p eed u p ra tio

12 0

1.2

10 0

1

80

0.8

サンプルコ ード に提案し たDM A機能を 付ける・ 付けない
場合の性能を 評価

60
40
20

0.6

Sp eed u p r a tio// Initialization is performed
init();// GPU-FPGA cooperative computationfor (int stm = 0; stm < numstream; ++stm) {// send A (CPU -> GPU)
cudaMemcpyAsync(..., cudaMemcpyHostToDevice, stream[stm]);// send B (CPU -> GPU)
cudaMemcpyAsync(..., cudaMemcpyHostToDevice, stream[stm]);// C = A + B on GPU
vecadd<<<..., stream[stm]>>>(...);// Recieve C (CPU <- GPU)
cudaMemcpyAsync(..., cudaMemcpyDeviceToHost, stream[stm]);// Sync GPU
cudaStreamSynchronize(stream[stm]);// Sync FPGA
clWaitForEvents(1, &kernel_event);// send C (CPU -> FPGA)
clEnqueueWriteBuffer(..., CL_FALSE, ..., &write_event);// Run OpenCL Kernel (Reduction calc.)
clEnqueueNDRangeKernel(..., 1, &write_event, &kernel_event);}// get the FPGA calculation result (CPU <- FPGA)
clEnqueueReadBuffer(...);
Ru n ning o n th e CPU

ホス ト プ ロ グラ ムのコ ン パイ ル方法

0.4
0.2
0

0
1

4

16

64

25 6

10 24

# o f s tr e a m sᅗ
図 2 GPU-FPGA ༠ㄪィ⟬ࡍࡿࡓࡵࡢᇶᮏࣔࢹࣝࡢᥦ᱌
協調計算するための基本モデルの提案
GPU プログラムはࣉࣟࢢ࣒ࣛࡣ CUDA、FPGA
CUDAࠊFPGA プログラムはࣉࣟࢢ࣒ࣛࡣ OpenCL で記述される。図に示すように、
࡛グ㏙ࡉࢀࡿࠋᅗ࡟♧ࡍࡼ࠺࡟ࠊ
CUDA ࢥ࣮ࢻ࡜
ࢆ⏝࠸࡚ศ๭ࢥࣥࣃ࢖ࣝࡉࢀࠊ⏕ᡂ
コードと OpenCL ࣍ࢫࢺࢥ࣮ࢻࡣࠊnvcc
ホストコードは、nvcc ࡜と g++ を用いて分割コンパイルされ、生成ࡉࢀࡓ࢜ࣈࢪ࢙ࢡࢺࣇ࢓࢖ࣝࡣࠊnvcc
されたオブジェクトファイルは、nvcc ࡛ࣜࣥࢡࡉࢀࡿࡇ࡜࡟ࡼࡗ࡚ࠊᐇ⾜ࣇ࢓࢖ࣝでリンクされることによって、実行ファイル (ᅗࡢ(図のa.out) が生成される。
ࡀ⏕ᡂࡉࢀࡿࠋ༠ㄪィ⟬ࡍࡿࡓࡵࡢ౛࡜ࡋ࡚ࠊ
協調計算するための例として、GPU ࡛࣋ࢡࢱຍ⟬ࠊでベクタ加算、FPGA ࡛ຍ⟬⤖ᯝࡢ
で加算結果のࣜࢲࢡࢩࣙࣥ₇⟬ࢆྠ᫬࠿ࡘ㠀ྠᮇⓗ࡟ᐇ⾜ࡍࡿࢧࣥࣉࣝࢥ࣮ࢻࢆᐇ⿦ࡋࠊࡇࢀࢆୖグࡢࢥ
リダクション演算を同時かつ非同期的に実行するサンプルコードを実装し、これを上記のコࣥࣃ࢖ࣝ᪉ἲ࡛ࢥࣥࣃ࢖ࣝࡋ࡚ᐇ⾜ࡉࡏࡓ࡜ࡇࢁࠊពᅗࡋࡓ㏻ࡾࡢ⤖ᯝࢆ♧ࡍࡇ࡜ࡀ☜ㄆࡉ
ンパイル方法でコンパイルして実行させたところ、意図した通りの結果を示すことが確認さ-- 157 -─ 157 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩ࢀࡓࠋࡲࡓࠊࡇࡢࢧࣥࣉࣝ࡟๓㡯┠࡛㏙࡭ࡓ DMA ㌿㏦ᢏ⾡ࢆ௜ຍࡋࡓሙྜ࡜௜ຍࡋ࡞࠸ሙ
ྜࡢᐇ⾜᫬㛫ࢆẚ㍑ࡋࠊ㏻ಙࡀᨭ㓄ⓗ࡞≧ἣୗ࡛ࡣ DMA ㌿㏦ᢏ⾡ࢆ௜ຍࡋࡓሙྜࡢ᪉ࡀඃ
ࢀ࡚࠸ࡿࡇ࡜ࡶ☜ㄆฟ᮶ࡓࠋࡓࡔࡋࠊࡇࡢࡼ࠺࡞」ᩘࡢࣉࣟࢢ࣑ࣛࣥࢢゝㄒࢆ⏝࠸ࡓ࣐ࣝࢳ
ࣜࣥ࢞ࣝࣉࣟࢢ࣑ࣛࣥࢢࡣࠊ࣮ࣘࢨ࣮࡟ከ኱࡞㈇ᢸࢆᙉ࠸ࡿࡢ࡛ࠊ௒ᚋࡢ◊✲࡛ࡣ GPU ࡜
FPGA ࡀᦚ㍕ࡉࢀࡓィ⟬ᶵࢩࢫࢸ࣒ୖ࡟࡚ࠊ୧࢔ࢡࢭ࣮ࣛࣞࢱࡢ⤫ྜⓗ࡞ไᚚࢆྍ⬟࡟ࡍࡿࣉࣟࢢ࣑ࣛࣥࢢ⎔ቃ࡟ࡘ࠸᳨࡚ウࡍࡿࠋ⌧ᅾࠊࡇࡢᡭἲࡢ୍ࡘ࡜ࡋ࡚ࠊ⡿ᅜ Oak Ridge National Laboratorry ࡢ Jeff Vetter ༤ኈࡢ◊✲ࢢ࣮ࣝࣉ࡜ࡢඹྠ◊✲ࢆ㐍ࡵࠊྠࢢ࣮ࣝࣉࡀ㛤Ⓨ୰ࡢ FPGA ࢆࢱ࣮ࢤࢵࢺ࡜ࡋࡓ OpenACC ࢥࣥࣃ࢖࡛ࣛ࠶ࡿ OpenARC ࢆ⏝࠸ࠊ₇⟬ຍ㏿ࢥ࣮ࢻࡢホ౯ཬࡧᡃࠎࡢ⎔ቃ࡬ࡢᐇ⿦ࢆ⾜࡞ࡗ࡚࠸ࡿࠋࡇࡇ࡛ࡣࠊOpenACC ࢆ FPGA ཬࡧ GPU ࡢඹ㏻ࣉࣟࢢ࣑ࣛࣥࢢゝㄒ࡜ࡋ࡚఩⨨௜ࡅࠊࡑࢀࡒࢀࡢࢹࣂ࢖ࢫ⏝࡟᭩࠿ࢀࡓ OpenACC ໬ࡉࢀࡓࢥ࣮ࢻ㸦࣮࢝ࢿࣝࢥ࣮ࢻ࡟┦ᙜ㸧ࢆࠊ
GPU ⏝㒊ศ࡜ FPGA ⏝㒊ศ࡟ศ๭ࠊ๓⪅ࢆᚑ᮶ࡢ PGI 〇 OpenACC ࢥࣥࣃ࢖࡛ࣛࠊᚋ⪅ࢆ
OpenARC ࡛ࡑࢀࡒࢀ㒊ศࢥࣥࣃ࢖ࣝࡋࠊ⏕ᡂࡉࢀࡓ࢜ࣈࢪ࢙ࢡࢺࢆ PGI ࢥࣥࣃ࢖ࣛࡢ࣍ࢫࢺ
ࢥ࣮ࢻ࡜㐃⤖ࡍࡿࡇ࡜࡛ࠊOpenACC ࡢࡳ࡛୧ࢹࣂ࢖ࢫࡢ₇⟬ຍ㏿ࣉࣟࢢ࣒ࣛࢆ᏶⤖ࡍࡿࣉࣟࢢ࣑ࣛࣥࢢ⎔ቃࡢ◊✲ࢆ㐍ࡵ࡚࠸ࡿࠋ
⌧᫬Ⅼ࡛ࡣ୧ࢹࣂ࢖ࢫྥࡅ࡟ OpenACC ໬ࡉࢀࡓ㒊ศࢆศ㞳ࡍࡿ࣓ࢱࢥࣥࣃ࢖ࣛࡀ㛤Ⓨ୰࡛࠶ࡿࡓࡵࠊࢩࢫࢸ࣒࡜ࡋ࡚᏶ᡂࡋ࡚࠸࡞࠸ࠋ࣓ࢱࢥࣥࣃ࢖ࣛ㒊ศࡣ⌮໬Ꮫ◊✲ᡤ R-CCS ࡢ୪ิࣉࣟࢢ࣑ࣛࣥࢢゝㄒ㛤Ⓨ㒊㛛࡜ࡢඹྠ◊✲࡛㛤Ⓨࡋ࡚࠸ࡿ Omni Compiler ࡢὴ⏕࡛࠶ࡿ
XcalableACC Compiler ࢆὶ⏝ࡋ࡚ᐇ⿦ࡍࡿணᐃ࡛࠶ࡿࠋࡇࡢ࣓ࢱࢥࣥࣃ࢖ࣛࡀ⏕ᡂࡍࡿࢥ࣮
ࢻࢆ᝿ᐃࡋࠊࡇࢀࢆᮏ㡯࡛㏙࡭ࡓ GPU ࡜ FPGA ࢆ୧❧ࡉࡏࡿᐇ⾜⎔ቃ࡟㐺⏝ࡋࡓ࡜ࡇࢁࠊ
OpenACC ࡢࡳࡢࢥ࣮ࢻࢆṇࡋࡃ୧ࢹࣂ࢖ࢫ࡛ศᢸᐇ⾜ࡍࡿࡇ࡜ࡀྍ⬟࡛࠶ࡿࡇ࡜ࡀᐇドࡉࢀࡓࠋḟᖺᗘࡢ◊✲࡛ࡣࠊOpenACC ࣓ࢱࢥࣥࣃ࢖ࣛࢆᐇ⿦ࡋࠊOpenACC ࡟ࡼࡿ GPU+FPGAࣉࣟࢢ࣑ࣛࣥࢢ⎔ቃࡢᐇ⌧ࢆ┠ᣦࡍࠋ
OpenCL ࡟ࡼࡿ FPGA ୖࡢ₇⟬࡜㏻ಙࢆ⼥ྜࡋࡓ୪ิฎ⌮ࢩࢫࢸ࣒ࡢ㛤Ⓨ㸦ᮔࠊᑠᯘ㸧᭱᪂ࡢ FPGA ࡣ᭱኱࡛ 100Gbps4 ࡢ㏻ಙᛶ⬟ࢆ᭷ࡋࠊࡲࡓࡑࢀࡽࡢ㏻ಙᶵᵓࡣ┤᥋ FPGA࡟᥋⥆ࡉࢀ࡚࠸ࡿࡓࡵࠊ࣮࢜ࣂ࣮࣊ࢵࢻࡢᑡ࡞࠸ FPGA 㛫㏻ಙࢆྍ⬟࡜ࡍࡿࡇ࡜ࡀࢃ࠿ࡗ࡚
࠸ࡿࠋFPGA ࢆ༢యࡢ࢔ࢡࢭ࣮ࣛࣞࢱ࡜ࡋ࡚ぢࡿ࡜ࠊ௚ࡢ࢔ࢡࢭ࣮ࣛࣞࢱ࡟⤯ᑐⓗ࡞ᾋືᑠᩘⅬᛶ⬟࡛ඃࡿࡇ࡜ࡣ㞴ࡋ࠸ࠋࡋ࠿ࡋ࡞ࡀࡽࠊFPGA ࡀᣢࡘ₇⟬⬟ຊ࡜๓㏙ࡋࡓᙉຊ࡞㏻ಙ⬟ຊࢆ⤌ࡳྜࢃࡏࡿࡇ࡜࡛ࠊࡼࡾᗈ࠸࢔ࣉࣜࢣ࣮ࢩࣙࣥཬࡧ୪ิᐇ⾜⎔ቃ࡟ FPGA ࢆ㐺⏝࡛ࡁࡿ࡜⪃࠼ࡽࢀࡿࠋᮏ◊✲ࡢ┠ⓗࡣࠊ㧗఩ྜᡂ࡛グ㏙ࡉࢀࡓ FPGA ࢔ࣉࣜࢣ࣮ࢩࣙࣥ࠿ࡽ㏻
ಙᶵᵓࢆ᧯సࡋ୪ิฎ⌮ࢩࢫࢸ࣒ࢆᐇ⌧ࡍࡿࡇ࡜࡛࠶ࡿࠋᮏ◊✲࡛ࡣ㧗఩ྜᡂࡢ㛤Ⓨ⎔ቃ࡜ࡋ࡚ Intel FPGA SDK for OpenCL ࢆ⏝࠸ࡿࠋᮏ SDK ࡣ OpenCL ゝㄒ࡟ᑐࡋ࡚࠸ࡃࡘ࠿ࡢ FPGA- 158 -

─ 158 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩࡟≉໬ࡋࡓᣑᙇࢆຍ࠼࡚࠾ࡾࠊࡑࡢᣑᙇࡢ 1 ࡘ࡟ࠕChannelࠖᶵᵓࡀ࠶ࡿࠋChannel ࡣ OpenCL࣮࢝ࢿࣝ㛫࡛ࢹ࣮ࢱࢆ┤᥋஺᥮ࡍࡿࣃ࢖ࣉࢆᵓ⠏࡛ࡁࡿᶵ⬟࡛࠶ࡿࠋࡲࡓࠊChannel ࡢ୍ࡘ࡜ࡋ࡚ࠕI/O Channelࠖࡀ࠶ࡾࠊࡇࢀࢆ⏝࠸ࡿࡇ࡜࡛ OpenCL ࣮࢝ࢿࣝ࡜እ㒊࣌ࣜࣇ࢙ࣛࣝࡢࢹ
࣮ࢱ஺᥮ࡀྍ⬟࡜࡞ࡿࠋᮏ◊✲࡛ࡣࠊOpenCL 㛤Ⓨ⎔ቃ࡟㏻ಙᶵᵓࢆ᧯సࡍࡿࡓࡵࡢࢥࣥࢺ࣮ࣟࣛ (ᮏ◊✲࡛ࡣ 40Gbit Ethernet) ࢆ㏣ຍࡋࠊI/O Channel ࢆ㏻ࡌ࡚ OpenCL ࢥ࣮ࢻ࠿ࡽ㏻ಙࢆ
⾜࠼ࡿ Channel over Ethernet (CoE) ࢩࢫࢸ࣒ࡢ㛤Ⓨࢆ⾜ࡗࡓࠋᅗ 3 ࡟ Intel Arria10 FPGA ࢆ⏝࠸࡚⾜ࡗࡓ CoE ࢩࢫࢸ࣒ࡢ⤖ᯝࢆ♧ࡍࠋࡇࡢᛶ⬟ ᐃࡣࠊ2ࡘࡢ␗࡞ࡿࣀ࣮ࢻ࡟࠶ࡿ FPGA ࢆ Ethernet ࢫ࢖ࢵࢳ⤒⏤࡛᥋⥆ࡋ࡚ ᐃࡋࡓࡶࡢ࡛࠶ࡾࠊࢫ
࣮ࣝࣉࢵࢺࡣ 29.77Gbos (⌮ㄽ್ࡢ࠾ࡼࡑ 75%)ࠊ᭱ᑠࣞ࢖ࢸࣥࢩࡣ 950ns ࡜࠸࠺⤖ᯝࡀᚓࡽࢀࡓࠋ

ᅗ 3 ࢫ࣮ࣝࣉࢵࢺ㸦ᕥ㸧࠾ࡼࡧࣞ࢖ࢸࣥࢩ㸦ྑ㸧ࡢᐃ⤖ᯝ

ᅗ 4 ࡟ᚑ᮶ᡭἲ࡛࠶ࡿ InfinBand (IB) ⤒⏤ࡢ㏻ಙ࡜ CoE ࡟ࡼࡿㄪ⠇㏻ಙࡢᛶ⬟ẚ㍑ࡢ⤖ᯝ
࡜ࠊCoE ࢆ⿇㡿ᇦ஺᥮࠾ࡼࡧ཰᮰ุᐃࡢ Allreduce ࡟㐺⏝ࡋࡓጲ㔝࣋ࣥࢳ࣐࣮ࢡࡢ ᐃ⤖ᯝࢆ
♧ࡍࠋIB ⎔ቃ࡟ࡣ Mellanox ConnectX-4 EDR Host Channel Adapter (HCA)ࢆ⏝࠸ࠊIB ㏻ಙࣛ࢖ࣈࣛࣜ࡜ࡋ࡚ OpenMPI 3.0.1 ࢆ⏝࠸ࡓࠋIB HCA ࡣ FPGA ࡢ࣓ࣔࣜ࡟ PCIe ࣂࢫ⤒⏤࡛┤᥋࢔ࢡࢭࢫࡍࡿࡇ࡜ࡀ࡛ࡁ࡞࠸ࡓࡵࠊOpenCL API ࡟ࡼࡿ CPU-FPGA 㛫㌿㏦࡜ࠊMPI ࡟ࡼࡿ CPUCPU 㛫㌿㏦ࢆ store-and-forward ࡛⤌ࡳྜࢃࡏ࡚ ᐃࢆ⾜ࡗࡓࠋIB EDR ࡢᖏᇦࡣ 100Gbps ࡛࠶
ࡾࠊ40Gbps ࡛࠶ࡿ CoE ࡼࡾࡶ㧗㏿࡛࠶ࡿ࡟ࡶ࠿࠿ࢃࡽࡎࠊCoE ࡟ࡼࡿ㏻ಙࡣ IB ࢆ⏝࠸ࡓ㏻ಙࡼࡾࡶ㧗㏿࡛࠶ࡾࠊ≉࡟▷࣭୰ࢧ࢖ࢬࡢ࣓ࢵࢭ࣮ࢪ࡛ᛶ⬟ᨵၿࡀ኱ࡁ࠸⤖ᯝࡀᚓࡽࢀࡓࠋ
CPU-FPGA 㛫ࡢ㏻ಙࡀ୪ิィ⟬᫬ࡢ࣎ࢺࣝࢿࢵࢡ࡛࠶ࡾࠊࡑࢀࢆ FPGA 㛫ࡢ┤᥋㏻ಙࢆ⏝࠸ࡿࡇ࡜࡛ゎᾘ࡛ࡁࡿࡇ࡜ࡀࢃ࠿ࡿࠋࡲࡓࠊጲ㔝࣋ࣥࢳ࣐࣮ࢡࡢᛶ⬟ホ౯࡛ࡣࠊၥ㢟ࢧ࢖ࢬ㸻
M㸪4FPGA ᐇ⾜᫬࡟ 23.7GFLOPS ࡢᛶ⬟ࡀᚓࡽࢀࡓࠋࡲࡓࠊ1 ࣀ࣮ࢻᐇ⾜᫬ࡢᛶ⬟࡜ẚ࡭ࡿ
࡜ 3.93 ಸ࡜࡞ࡗ࡚࠾ࡾࠊCoE ࡢప㐜ᘏ࡞㏻ಙ࡟ࡼࡗ࡚㧗࠸୪ิ໬ຠ⋡ࡀᚓࡽࢀ࡚࠸ࡿࡇ࡜ࡀ
ࢃ࠿ࡿࠋጲ㔝࣋ࣥࢳ࣐࣮ࢡ࡛⏝࠸ࡽࢀ࡚࠸ࡿࢫࢸࣥࢩࣝィ⟬ࡣࠊHPC ࢔ࣉࣜࢣ࣮ࢩ࡛ࣙࣥᗈ

- 159 -

─ 159 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩ࡃ⏝࠸ࡽࢀ࡚࠸ࡿィ⟬ᡭἲ࡛࠶ࡾࠊࢫࢸࣥࢩࣝィ⟬࡟ CoE ࢆ㐺⏝ྍ⬟࡛࠶ࡿࡇ࡜ࢆ♧ࡋࡓࡇ
࡜ࡣࠊCoE ࡀከࡃࡢ࢔ࣉࣜࢣ࣮ࢩࣙࣥ࡟㐺⏝ྍ⬟࡛࠶ࡿࡇ࡜ࢆ♧ࡋ࡚࠸ࡿࠋ

ᅗ 4 InfiniBand ࡜ࡢᛶ⬟ẚ㍑㸦ᕥ㸧 ࠾ࡼࡧጲ㔝࣋ࣥࢳ࣐࣮ࢡࡢ ᐃ⤖ᯝ㸦ྑ㸧௒ᚋࡣィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮࡟ᮏᖺᗘᑟධࡉࢀࡓࢫ࣮ࣃ࣮ࢥࣥࣆ࣮ࣗࢱ Cygnus ࡬ࡢᑐᛂࢆ㐍ࡵࡿணᐃ࡛࠶ࡿࠋCygnus ࡢྛࣀ࣮ࢻࡣ Intel Stratix 10 FPGA ࢆ 2 ᯛᦚ㍕ࡋࠊࢩࢫࢸ࣒඲య
࡛ 64 ᯛࡢ FPGA ࢆ᭷ࡋ࡚࠾ࡾࠊࡑࢀࡽࡢ FPGA 㛫ࡣ 100Gbps ࡢ㧗㏿ࣜࣥࢡ࡟ࡼࡿ 2D ࢺ࣮ࣛࢫࢿࢵࢺ࣮࣡ࢡ࡛⤖ྜࡉࢀ࡚࠸ࡿࠋCoE ࡢ㏻ಙ㏿ᗘࢆ 40Gbps ࠿ࡽ 100Gbps ࡟ྥୖࡉࡏࡓ 2Dࢺ࣮ࣛࢫࢿࢵࢺ࣮࣡ࢡ࡛ࠊᚲせ࡞ࣃࢣࢵࢺ࣮ࣝࢸ࢕ࣥࢢᶵᵓࢆ⤌ࡳ㎸ࡴணᐃ࡛࠶ࡿࠋࡇࡢ㒊ศࡢᐇ⿦࡟ࡣ⌮໬Ꮫ◊✲ᡤ R-CCS ࡛㛤Ⓨ୰ࡢ FPGA 㛫㏻ಙ࣮ࣝࢱࢆඹྠ◊✲࡟ᇶ࡙ࡁᑟධࡍ
ࡿணᐃ࡛࠶ࡿࠋ ␲ఝ MPI ࢺ࣮ࣞࢫࣇ࢓࢖ࣝࢆ⏝࠸ࡓᛶ⬟ண ᡭἲࡢ◊✲㸦ᮔ㸧ᮏ◊✲࡛ࡣࠊ⌮໬Ꮫ◊✲ᡤ R-CCS ࡜ࡢඹྠ◊✲ࡢୗࠊከᵝ࡞ᑗ᮶ࢩࢫࢸ࣒࡟࠾ࡅࡿࡉࡲࡊ
ࡲ࡞࢔ࣉࣜࢣ࣮ࢩࣙࣥࡢ㏻ಙᛶ⬟ࢆᖹ᫆࡟ண

ࡍࡿࡓࡵ࡟ࠊᐇࢺ࣮ࣞࢫࢆ⏝࠸ࡿࢿࢵࢺ࣮࣡

ࢡࢩ࣑࣮ࣗࣞࢱࢆᣑᙇࡋࠊᑗ᮶ࢩࢫࢸ࣒ࡢࢧ࢖ࢬ࡟ྜࢃࡏࡓ␲ఝ MPI ࢺ࣮ࣞࢫࣇ࢓࢖ࣝࢆ⏕ᡂࡋ࡚㏻ಙᛶ⬟ணࢆ⾜࠺ᡭἲ࡛࠶ࡿ SCAMP ࢆᥦ᱌ࡋ࡚࠸ࡿࠋ

ᅗ 5 SCAMP ἲࡢᴫせ- 160 -

─ 160 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩኱つᶍ໬ࡋ」㞧໬ࡍࡿ HPC ࢩࢫࢸ࣒࡟࠾࠸࡚ࠊࢩࢫࢸ࣒ᑟධᙜึ࠿ࡽ࢔ࣉࣜࢣ࣮ࢩࣙࣥ࡟
ࡼࡿᡂᯝࢆ᪩ᮇ๰ฟࡍࡿࡓࡵ࡟ࡣࠊࢩࢫࢸ࣒タィẁ㝵࠿ࡽࡢ࢔ࣉࣜࢣ࣮ࢩࣙࣥ࡜ࢩࢫࢸ࣒ࡢ
ࢥࢹࢨ࢖ࣥࡀ㔜せ࡛࠶ࡿࠋ࢔ࣉࣜࢣ࣮ࢩࣙࣥ࡜ࢩࢫࢸ࣒ࡢࢥࢹࢨ࢖ࣥ࡟࠾࠸࡚ࡣࠊ࢔ࣉࣜࢣ
࣮ࢩࣙࣥࡢᛶ⬟ࡀⓎ᥹ࡉࢀࡿࡼ࠺ࢩࢫࢸ࣒ࡀࢹࢨ࢖ࣥࡉࢀࡿ୍᪉ࠊ࢔ࣉࣜࢣ࣮ࢩࣙࣥࡶࢩࢫ
ࢸ࣒࡟ేࡏ࡚᭱㐺໬ࡉࢀࡿࠊ཮᪉ྥⓗ࡞࢔ࣉ࣮ࣟࢳࡀ࡜ࡽࢀࡿࠋࡇࡢ㐣⛬࡛ࡣࠊ」ᩘࡢࡲࡔ
Ꮡᅾࡋ࡞࠸ᑗ᮶ࢩࢫࢸ࣒ೃ⿵ࡢࣃ࣓࣮ࣛࢱ࡟ᑐࡋ࡚ࠊࡉࡲࡊࡲ࡞࢔ࣉࣜࢣ࣮ࢩࣙࣥࡢᛶ⬟ࢆ᥎ᐃࡍࡿᚲせࡀ࠶ࡿࡓࡵࠊᖹ᫆࡟฼⏝࡛ࡁࡿᛶ⬟ணࢶ࣮ࣝࡀᚲせ࡜ࡉࢀࡿࠋ

ᮏ◊✲࡛ࡣ㏻ಙᛶ⬟᥎ᐃࢆᑐ㇟࡜ࡋ࡚ࠊ≉࡟ᐇࢩࢫࢸ࣒ୖ࡛ࡢᐇ⾜࠿ࡽᚓࡽࢀࡿ MPI ࢺ࣮ࣞࢫࢆ⏝࠸ࡿᛶ⬟ணᡭἲ࡟↔Ⅼࢆᙜ࡚ࡿࠋࢺ࣮ࣞࢫࢆධຊ࡜ࡋ࡚㏻ಙࢩ࣑࣮ࣗࣞࢱࢆᐇ⾜ࡍࡿᡭἲࡣࠊ(1) ࢔ࣉࣜࢣ࣮ࢩࣙࣥࢆᐇ⾜ࡋࠊྛࣛࣥࢡࡢ MPI ࢺ࣮ࣞࢫࢆ㞟ࡵࡿࠊ(2) ᚓࡽࢀࡓࢺ࣮ࣞࢫࣇ࢓࢖ࣝࢆධຊ࡜ࡋ࡚ࢿࢵࢺ࣮࣡ࢡࢩ࣑࣮ࣗࣞࢱࢆᐇ⾜ࡍࡿࠊ࡜࠸࠺ᶵᲔⓗ࡞సᴗ࡛ࠊᖜᗈ࠸࢔ࣉࣜࢣ࣮ࢩࣙࣥ࡟㐺⏝ྍ⬟࡞ࡓࡵࠊᗈࡃ⏝࠸ࡽࢀ࡚࠸ࡿࠋࡋ࠿ࡋࠊᑗ᮶ࢩࢫ
ࢸ࣒ࡀ⌧ᅾࡢࢩࢫࢸ࣒ࡼࡾࡶ኱つᶍ࡞ሙྜࠊࡑࢀࡽ࡟ᑐᛂࡍࡿ MPI ࣛࣥࢡࡢࢺ࣮ࣞࢫࣇ࢓࢖
ࣝࢆᚓࡿࡇ࡜ࡀ࡛ࡁࡎࠊ㏻ಙᛶ⬟ࡢ᥎ᐃࡀ⾜࠼࡞࠸࡜࠸࠺ၥ㢟ࡀ࠶ࡗࡓࠋᮏ◊✲࡛ࡣࠊᐇࢩ
ࢫࢸ࣒࡟࠾ࡅࡿᐇ⾜࡛ᚓࡽࢀࡓᑡᩘࡢ MPI ࢺ࣮ࣞࢫࣇ࢓࢖ࣝࢆ」〇࣭⦅㞟ࡋ࡚ࠊᑗ᮶ࢩࢫࢸ࣒ࡢつᶍ࡟ྜࢃࡏࡓᩘ࡟Ỉቑࡋࠊ኱㔞ࡢ␲ఝ MPI ࢺ࣮ࣞࢫࣇ࢓࢖ࣝࢆ⏕ᡂࡋࠊࡑࢀࢆࢿࢵࢺ
࣮࣡ࢡࢩ࣑࣮ࣗࣞࢱࡢධຊ࡜ࡋ࡚⏝࠸ࡿᡭἲ SCAlable Mpi Profiler (SCAMP) ἲࢆᥦ᱌ࡋ࡚࠸ࡿࠋ
ᅗ 5 ࡟♧ࡍࡼ࠺࡟ࠊSCAMP ἲ࡛ࡣࠊ1.

࢔ࣉࣜࢣ࣮ࢩࣙࣥࢆᐇࢩࢫࢸ࣒࡛ᐇ⾜ࡋࠊᐇ MPI ࢺ࣮ࣞࢫࣇ࢓࢖ࣝࢆᚓࡿࠋࣇ࢓࢖ࣝ
ࡣࣛࣥࢡࡈ࡜࡟⏕ᡂࡉࢀࡿࡶࡢ࡜ࡍࡿ

2.

ᐇ MPI ࢺ࣮ࣞࢫࣇ࢓࢖ࣝࢆ」〇ࡋࠊᑗ᮶ࢩࢫࢸ࣒ࡢつᶍࢆ⪃៖ࡋ࡚ MPI 㛵ᩘࡢᘬᩘ࡞
࡝ࡢグ㘓ࢆ⦅㞟ࡋࠊ␲ఝ MPI ࢺ࣮ࣞࢫࣇ࢓࢖ࣝࢆ⏕ᡂࡍࡿࠋ1 ࡘࡢᐇࣇ࢓࢖ࣝ࠿ࡽ 1ࡘ௨ୖࡢ␲ఝࣇ࢓࢖ࣝࡀ⏕ᡂࡉࢀࡿ3.

␲ఝ MPI ࢺ࣮ࣞࢫࣇ࢓࢖ࣝ࡜ᑗ᮶ࢩࢫࢸ࣒ࡢࣀ࣮ࢻᩘ࡞࡝ࡢࣃ࣓࣮ࣛࢱࢆධຊ࡜ࡋ࡚
⏝࠸࡚ࠊࢿࢵࢺ࣮࣡ࢡࢩ࣑࣮ࣗࣞࢱࢆᐇ⾜ࡍࡿࡇ࡜࡛ࠊ኱つᶍࢩࢫࢸ࣒ୖ࡛ࡢ㏻ಙᛶ⬟᥎ᐃࢆ⾜࠺ࠋ ᮏᖺᗘ࡟࠾࠸࡚ࡣࠊ␲ఝ MPI ࢺ࣮ࣞࢫࣇ࢓࢖ࣝࡢ⮬ື⏕ᡂᡭἲࡢᐇ⿦࠾ࡼࡧᛶ⬟ホ౯ࢆ⾜ࡗࡓࠋSCAMP ࡟࠾࠸࡚ࡣࠊᑗ᮶ࢩࢫࢸ࣒ࡢつᶍࢆ⪃៖ࡋ࡚ MPI 㛵ᩘࡢᘬᩘ࡞࡝ࡢグ㘓ࢆ⦅㞟ࡋࠊ1 ࡘࡢᐇࢺ࣮ࣞࢫࣇ࢓࢖ࣝ࠿ࡽࠊ」ᩘࡢ␲ఝ MPI ࢺ࣮ࣞࢫࣇ࢓࢖ࣝࢆ⏕ᡂࡍࡿࠋ␲
ఝࢺ࣮ࣞࢫࣇ࢓࢖ࣝࡢ⏕ᡂࡣࠊᖹ᫆࡞ DLS ࡞࡝࡛⾜࠺࠿ࠊࡶࡋࡃࡣ⮬ືⓗ࡟࡞ࡉࢀࡿ࡭ࡁ࡛
࠶ࡾࠊᮏᖺᗘࡣẚ㍑ⓗ༢⣧࡞ MPI ࢔ࣉࣜࢣ࣮ࢩࣙࣥ࡟ࡘ࠸࡚ࠊ␲ఝࢺ࣮ࣞࢫࣇ࢓࢖ࣝࢆ⮬ືⓗ࡟⏕ᡂࡍࡿᡭἲࢆ᳨ウࡋࡓࠋ- 161 -

─ 161 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩⾲ 1 MPI-event logs (4 nodes) and Pseudo MPI-event logs (8 nodes)
Original file

Psuedo fileentering wall time

3038480.192285198

3038480.192285198

sendcount

512

256

sendtype

MPI_DOUBLEMPI_DOUBLE

recvcount

512

256

recvtype

MPI_DOUBLEMPI_DOUBLEcomm

MPI_COMM_WORLD

MPI_COMM_WORLD

returning wall time

3038480.192420677

3038480.192420677

␲ఝࢺ࣮ࣞࢫࣇ࢓࢖ࣝࡢ౛࡜ࡋ࡚ࠊ⾲ 1 ࡟ 2048 せ⣲ࡢ double ᆺ㓄ิࢆ 4 ࣀ࣮ࢻ࡟ศ㓄ࡋࠊ࡞ࢇࡽ࠿ࡢィ⟬ࡢᚋ࡟ MPI_Alltoall ࢆ⾜ࡗࡓሙྜࡢࢺ࣮ࣞࢫࣇ࢓࢖ࣝ࡜ࠊࡇࢀࢆ 8 ࣀ࣮ࢻ࡟⨨ࡁ᥮࠼࡚⏕ᡂࡋࡓ␲ఝࢺ࣮ࣞࢫࣇ࢓࢖ࣝࢆ♧ࡍࠋࡇࡢ౛࡛ࡣࠊࣀ࣮ࢻᩘࡀಸ࡟࡞ࡗ࡚࠸ࡿ
ࡇ࡜࠿ࡽࣀ࣮ࢻࡈ࡜ࡢ㓄ิࡢせ⣲ᩘࡀ༙ศ࡟࡞ࡾࠊMPI_Alltoall ࡢࣂࢵࣇ࢓ࡢࢧ࢖ࢬࡶ༙ศ࡟
࡞ࡗ࡚࠸ࡿࠋᮏ◊✲࡛ࡣࠊࢱ࣮ࢤࢵࢺࣛࣥࢡࡢ␲ఝ MPI ࢺ࣮ࣞࢫࣇ࢓࢖ࣝࢆ⮬ື⏕ᡂࡍࡿࡓ
ࡵ࡟ࠊLLVM-IR ࡜࿧ࡤࢀࡿ୰㛫ゝㄒࢆゎᯒࡋࠊMPI 㛵ᩘࡢᘬᩘࢆᑗ᮶ࢩࢫࢸ࣒ࡢࣀ࣮ࢻᩘ࡜
ࣛࣥࢡᩘࢆ⏝࠸࡚෌ィ⟬ࡋࠊ≉ᐃࡢࣛࣥࢡࡢᐇ MPI ࢺ࣮ࣞࢫࣇ࢓࢖ࣝࢆ⦅㞟ࡍࡿᡭἲࢆᐇ⿦
ࡋࡓࠋ- 162 -

─ 162 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩ᅗ 6 ␲ఝ MPI ࢺ࣮ࣞࢫࣇ࢓࢖ࣝ⏕ᡂࡢὶࢀᅗ 6 ࡟␲ఝ MPI ࢺ࣮ࣞࢫࣇ࢓࢖ࣝ⏕ᡂࡢὶࢀࢆ♧ࡍࠋࡲࡎࠊࡶ࡜ࡢ࢔ࣉࣜࢣ࣮ࢩࣙࣥࢯ࣮
ࢫࢥ࣮ࢻࢆ୰㛫⾲⌧ LLVM-IR ࡟ኚ᥮ࡍࡿࠋኚ᥮ࡉࢀࡓ LLVM-IR ࢥ࣮ࢻࢆゎᯒࡋࠊMPI 㛵ᩘ࠾ࡼࡧࡑࡢᘬᩘࡢィ⟬࡟ᚲせ࡞㒊ศࡢࡳᢤ⢋ࡋࠊMPI ࢫࢣࣝࢺࣥࢥ࣮ࢻࢆ⏕ᡂࡍࡿࠋMPI ࢫ- 163 -

─ 163 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩ࢣࣝࢺࣥࢥ࣮ࢻࢆ෌ᗘࢥࣥࣃ࢖ࣝࡋࠊࢲ࣑࣮MPI ࣛ࢖ࣈࣛࣜ࡜ࣜࣥࢡࡋ࡚ᐇ⾜ྍ⬟࡞ࣂ࢖ࢼࣜࣇ࢓࢖ࣝࢆ⏕ᡂࡍࡿࠋࡇࡢࣂ࢖ࢼࣜࢆࢱ࣮ࢤࢵࢺࢩࢫࢸ࣒ࡢࢧ࢖ࢬࠊࣛࣥࢡࠊ࠾ࡼࡧᐇࢺ
࣮ࣞࢫࣇ࢓࢖ࣝࢆධຊ࡜ࡋ࡚୚࠼࡚ᐇ⾜ࡍࡿ࡜ࠊMPI ࢫࢣࣝࢺࣥ࠿ࡽ࿧ࡧฟࡉࢀࡓࢲ࣑࣮MPIࣛ࢖ࣈࣛࣜࡀࠊ㏻ಙࢆ⾜࠺௦ࢃࡾ࡟ࠊᐇࢺ࣮ࣞࢫࣇ࢓࢖ࣝࡢᘬᩘࢆࢱ࣮ࢤࢵࢺࢧ࢖ࢬࠊࣛࣥ
ࢡࢆ⏝࠸࡚ MPI ࢫࢣࣝࢺࣥࢥ࣮ࢻ࡟ࡼࡾ෌ィ⟬ࡉࢀࡓᘬᩘ࡜⨨ࡁ᥮࠼ࠊ␲ఝ MPI ࢺ࣮ࣞࢫࣇ
࢓࢖ࣝࢆ⏕ᡂࡍࡿࠋ

ᅗ7

MPI ࢫࢣࣝࢺࣥࢥ࣮ࢻࡢ⏕ᡂࡢὶࢀᅗ 7 ࡟ࠊ࢜ࣜࢪࢼࣝࡢ LLVM-IR ࢆゎᯒࡋࠊMPI ࢫࢣࣝࢺࣥࢥ࣮ࢻࢆ⏕ᡂࡍࡿ౛ࢆ♧ࡍࠋࡇࡢ⏕ᡂ࢔ࣝࢦࣜࢬ࣒ࡣࠊMPI 㛵ᩘࢆぢࡘࡅࡓሙྜࠊ㏻ಙᛶ⬟࡟㛵ಀࡍࡿᘬᩘ --- ࡓ࡜࠼ࡤࢯ
࣮ࢫࣛࣥࢡࡸࠊࣂࢵࣇ࢓ࡢせ⣲ᩘ --- ࡟ᚲせ࡞࿨௧ࢆࢱ࣮ࢤࢵࢺኚᩘࡢ㏫ఏᦙ࡟ࡼࡾᢤࡁฟ
ࡍࠋ- 164 -

─ 164 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩ᅗ8

2 ḟඖࢫࢸࣥࢩࣝィ⟬ࡢᛶ⬟᥎ᐃ⤖ᯝࠋReal ࡣᐇᐇ⾜᫬㛫ࠊSST ࡣᑐᛂࡍࡿࢧ࢖ࢬࡢᐇ

MPI ࢺ࣮ࣞࢫࣇ࢓࢖ࣝࢆ⏝࠸ࡓ᥎ᐃ᫬㛫ࠊSCAMP ࡣ$4¥times 4$ࣀ࣮ࢻࡢᐇࣇ࢓࢖ࣝ࠿ࡽ
$8¥times 8$ $¥sim$ $64 ¥times 64$ ࣀ࣮ࢻࡢ␲ఝࣇ࢓࢖ࣝࢆ⏕ᡂࡋࡓሙྜࡢ᥎ᐃ᫬㛫ࠋ
ᅗ 8 ࡟ࠊ2 ḟඖࢫࢸࣥࢩࣝィ⟬ࢆ⏝࠸ࡓ SCAMP ἲࡢᛶ⬟ホ౯ࡢ⤖ᯝࢆ♧ࡍࠋࢿࢵࢺ࣮࣡ࢡ
ࢩ࣑࣮ࣗࣞࢱ࡜ࡋ࡚ࡣ⡿ࢧࣥࢹ࢕࢔ᅜ❧◊✲ᡤ࡛㛤Ⓨࡉࢀ࡚࠸ࡿ SST/macro ࢆ⏝࠸ࡓࠋ16 ࣀ࣮ࢻ࠿ࡽ 4096 ࣀ࣮ࢻࡲ࡛࡟ࡘ࠸࡚ࠊிࢥࣥࣆ࣮ࣗࢱୖ࡛ࡢᐇᐇ⾜᫬㛫ࠊᐇ MPI ࢺ࣮ࣞࢫࣇ
࢓࢖ࣝࢆ⏝࠸ࡓ᥎ᐃ᫬㛫ࠊ16 ࣀ࣮ࢻ࠿ࡽᚓࡽࢀࡓ␲ఝࢺ࣮ࣞࢫࣇ࢓࢖ࣝ࠿ࡽ 64 ࣀ࣮ࢻ࠿ࡽ
4096 ࣀ࣮ࢻࡲ࡛ࡢ␲ఝࢺ࣮ࣞࢫࣇ࢓࢖ࣝࢆ⏕ᡂࡋࡓ᥎ᐃ᫬㛫࡟ࡘ࠸࡚ㄪᰝࡋࡓࠋᅗ࠿ࡽࠊSCAMP ࡟࠾ࡅࡿ᥎ᐃ⤖ᯝࡣࠊࣀ࣮ࢻᩘࡢቑຍ࡟ࡼࡿࣀ࣮ࢻẖࡢィ⟬᫬㛫ࡢࢲ࢖ࣂ࣮ࢩࢸ࢕ࡢ
ቑຍࢆ⪃៖ࡋ࡚࠸࡞࠸ࡓࡵࠊᐇࢺ࣮ࣞࢫࢆ⏝࠸ࡓ᥎ᐃࡼࡾࡣࡸࡸ▷࠸ࡀࠊᑐᛂࡍࡿᐇࢺ࣮ࣞ
ࢫ࡟ࡼࡿ SST/macro ࡢ᥎ᐃ᫬㛫࡟࡯ࡰ୍⮴ࡋ࡚࠸ࡿࠋ୍᪉ࠊᐇᐇ⾜᫬㛫࡜ᐇ࠾ࡼࡧ␲ఝࢺࣞ
࣮ࢫࣇ࢓࢖ࣝࢆ⏝࠸ࡓᛶ⬟᥎ᐃ࡟ࡣࠊࡸࡸ஋㞳ࡀࡳࡽࢀࡿࡀࠊࡇࢀࡣࢿࢵࢺ࣮࣡ࢡࢩ࣑ࣗࣞ
࣮ࢱ࡟ᐇ⿦ࡉࢀ࡚࠸ࡿ㏻ಙ࢔ࣝࢦࣜࢬ࣒࡜ிࢥࣥࣆ࣮ࣗࢱࡢ㏻ಙ࢔ࣝࢦࣜࢬ࣒ࡢ㐪࠸࡟ࡼࡿࡶࡢ࡜⪃࠼ࡽࢀࡿࠋ

- 165 -

─ 165 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩

ᅗ9␲ఝࢺ࣮ࣞࢫࣇ࢓࢖ࣝࡢ⏕ᡂ᫬㛫ḟ࡟ࠊ␲ఝࢺ࣮ࣞࢫࣇ࢓࢖ࣝࡢ⏕ᡂࡢࢥࢫࢺࢆホ౯ࡋࡓࠋᅗ 9 ࡟ࠊࢫࢸࣥࢩࣝࠊFFT ࡟ࡘ
࠸࡚ࠊ16ࠥ4096 ಶࡢ␲ఝࢺ࣮ࣞࢫࣇ࢓࢖ࣝࢆ⏕ᡂࡋࡓሙྜ࡟࠿࠿ࡗࡓ᫬㛫ࢆ♧ࡍࠋᅗ 8 ࡜ẚ㍑ࡍࡿ࡜ࠊ1 ࡘࡢࢺ࣮ࣞࢫࡢ⏕ᡂ࡟࠿࠿ࡿ᫬㛫ࡣᐇ㝿ࡢᐇ⾜᫬㛫ࡼࡾࡶࡌࡹ࠺ࡪࢇ࡟▷ࡃࠊ
LLVM-IR ࡢゎᯒ࡟ࡼࡿࢫࢣࣝࢺࣥࢥ࣮ࢻ⏕ᡂࡣࠊMPI 㛵ᩘࡢᘬᩘ࡟୙せ࡞㒊ศࢆຠ⋡ⓗ࡟㝖ཤࡋ࡚࠸ࡿ࡜⪃࠼ࡽࢀࡿࠋࡲࡓࠊྛࣛࣥࢡ࡟ᑐࡍࡿ⏕ᡂࡣ⊂❧࡟⾜࠼ࡿࡇ࡜࠿ࡽࠊᚲせ࡞ಶᩘࡢ␲ఝࢺ࣮ࣞࢫࣇ࢓࢖ࣝࡢ⏕ᡂ᫬㛫ࡣࣀ࣮ࢻᩘ࡟ᑐࡋ࡚ࠊ⥺ᙧ࡟ቑຍࡋ࡚࠸ࡿࠋࡇࢀࡽࡣࠊ
ࢫࢡࣜࣉࢺ࡞࡝࡛ᖹ᫆࡟୪ิ໬ྍ⬟࡛࠶ࡿࠋ
OpenMP ࢱࢫࢡ୪ิᐇ⾜࡟࠾ࡅࡿ FPGA ࢜ࣇ࣮ࣟࢹ࢕ࣥࢢࡢᛶ⬟᭱㐺໬㸦ᮔ㸧⌮໬Ꮫ◊✲ᡤ R-CCS ࡜ࡢඹྠ◊✲࡟࠾࠸࡚ࠊOpenMP ࡟࠾ࡅࡿ୪ิฎ⌮࡟࠾ࡅࡿ₇⟬ຍ㏿⿦⨨࡜ࡋ࡚ࠊFPGA (Field Programmable Gate Array)ࢆ᝿ᐃࡍࡿሙྜࡢ₇⟬࣮࢝ࢿࣝసᡂ࡟㛵ࡍࡿ᭱㐺໬ࡢ◊✲ࢆ⾜࡞ࡗࡓࠋᚑ᮶ࡢ඾ᆺⓗ࡞㧗㏿໬ࡢᡭἲࡣ኱ࡁ࡞ィ⟬㒊ศࢆ 1 ࡘࡢ FPGA࣮࢝ࢿࣝ࡜ࡋ࡚ FPGA ୖࡢㄽ⌮ࢤ࣮ࢺࢆ࡛ࡁࡿࡔࡅከࡃ฼⏝ࡋࠊᛶ⬟ࢆୖࡆࡿࡢࡀ୍⯡ⓗ࡛࠶ࡗࡓࠋࡘࡲࡾࠊ኱⢏ᗘࡢ₇⟬ຍ㏿ฎ⌮ࢆ⾜ࡗ࡚࠸ࡓࠋࡇࢀ࡟ᑐࡋࠊOpenMP 4.0 ࠿ࡽࡣࢱࢫ
ࢡ࡛ࣞ࣋ࣝࡢ୪ิฎ⌮ࡀྍ⬟࡜࡞ࡾࠊ࠿ࡘ㏆ᖺࡢ FPGA ࡣ」ᩘࡢ࣮࢝ࢿࣝࢆ⊂❧࡟ㄽ⌮ᅇ㊰ୖ࡟㓄⨨ࡋࠊࡇࢀࡽࢆ㠀ྠᮇ࡟ᐇ⾜ࡍࡿࡇ࡜ࡀྍ⬟࡜࡞ࡗ࡚࠸ࡿࡇ࡜࡟╔┠ࡋࠊ୰つᶍ࣮࢝ࢿࣝࢆ」ᩘࠊ㠀ྠᮇᐇ⾜ࡍࡿࡇ࡜࡛඲యࡢᛶ⬟ࢆྥୖࡉࡏࡿヨࡳࢆ⾜ࡗࡓࠋ⌧ᅾࠊOpenMP ෆࡢฎ⌮ࢆ┤᥋ࢥࣥࣃ࢖࡛ࣝࡁࡿ FPGA ⎔ቃࡣᏑᅾࡋ࡞࠸ࡓࡵࠊᮏᖺᗘࡢ◊✲࡛ࡣࢱࢫࢡ⟶⌮ࡢࡳࢆ࣍ࢫࢺ CPU ୖࡢ OpenMP ࡛⾜࠸ࠊFPGA ࡟࢜ࣇ࣮ࣟࢹ࢕ࣥࢢࡍࡿ࣮࢝ࢿࣝࡣ OpenCL࡛グ㏙ࡍࡿ࡜࠸࠺࢔ࣉ࣮ࣟࢳࢆྲྀࡗࡓࠋ

- 166 -

─ 166 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩᫖ᖺᗘࡲ࡛ࡢඹྠ◊✲࡛ࡣ OpenMP ࡢࢱࢫࢡฎ⌮⮬యࢆ඲࡚ CPU ୖࡢࢥ࢔㸦࣐ࣝࢳࢥ࢔ࡲ
ࡓࡣ࣓ࢽ࣮ࢥ࢔㸧࡛㠀ྠᮇฎ⌮ࡋࠊ඲యᛶ⬟ࢆྥୖࡉࡏࡿ◊✲ࢆ⾜ࡗࡓࡀࠊ௒ᖺᗘࡣࡇࢀࢆ
ࡉࡽ࡟ⓎᒎࡉࡏࠊFPGA ࡟࠾ࡅࡿ࢜ࣇ࣮ࣟࢹ࢕ࣥࢢ࡟㐺⏝ࡋࡓࠋᑐ㇟࡜ࡍࡿ࣋ࣥࢳ࣐࣮ࢡࡣ
ࣈࣟࢵࢡ໬ࡋࡓࢥࣞࢫ࣮࢟ศゎ࢔ࣝࢦࣜࢬ࣒࡛ࠊ᫖ᖺᗘࡲ࡛ࡢ◊✲࡟ࡼࡾࠊẚ㍑ⓗᑠࡉ࡞ࢹ࣮ࢱࢆᑐ㇟࡟ࡋࡓ DGEMM ࣮ࣝࢳࣥࢆ㠀ྠᮇ࡟୪ิᐇ⾜ࡍࡿࡇ࡜࡛ࢱࢫࢡ୪ิฎ⌮࡟ࡼࡿᛶ⬟ྥୖࡀぢ㎸ࡲࢀࡿࡇ࡜ࡀࢃ࠿ࡗ࡚࠸ࡿࠋDGEMM ⮬యࢆ FPGA ࡟࢜ࣇ࣮ࣟࢹ࢕ࣥࢢࡍࡿࡇ
࡜ࡣ OpenCL ࡛ẚ㍑ⓗᐜ᫆࡟グ㏙ྍ⬟࡛࠶ࡿࡓࡵࠊࡇࡢࣈࣟࢵࢡ໬ࡋࡓࢥࣞࢫ࣮࢟ศゎ࢔ࣝࢦࣜࢬ࣒ࢆ㐺⏝ࡍࡿࡇ࡜࡟ࡋࡓࠋࡓࡔࡋࠊ⌧ᅾࡢ FPGA ࡣ༢⢭ᗘᾋືᑠᩘⅬ₇⟬ࡣࣁ࣮ࢻ IP࡛㧗㏿໬࡛ࡁࡿࡀࠊಸ⢭ᗘᾋືᑠᩘⅬ₇⟬ࡣࡲࡔㄽ⌮ྜᡂ࡟ࡼࡗ࡚⏕ᡂࡋ࡞࠸࡜࠸ࡅ࡞࠸ࡓ
ࡵᛶ⬟ࡀప࠸ࠋࡑࡇ࡛ࠊ௒ᅇࡢホ౯࡛ࡣ༢⢭ᗘ GEMM ࢆ⏝࠸ࡓࠋ

ᅗ 10 ࣈࣟࢵࢡ໬ࡉࢀࡓࢥࣞࢫ࣮࢟ศゎࡢࢱࢫࢡࣇ࣮ࣟࢢࣛࣇ
ᅗ 10 ࡟ࣈࣟࢵࢡ໬ࡋࡓࢥࣞࢫ࣮࢟ศゎ࢔ࣝࢦࣜࢬ࣒ࡢࢱࢫࢡࣇ࣮ࣟࢆ♧ࡍࠋ࣍ࢫࢺ CPU
࡜ FPGA ࡣ PCIe ࣂࢫ࡟ࡼࡗ࡚᥋⥆ࡉࢀ࡚࠾ࡾࠊ࠸ࡃࡘ࠿ࡢ FPGA ࢻࣛ࢖ࣈ㛵ᩘࢆ౑ࡗ࡚ࢹ࣮
ࢱࡢ㌿㏦ࡸ࣮࢝ࢿࣝࡢ㉳ືࡀྍ⬟࡛࠶ࡿࠋwrite_data_to_fpga 㛵ᩘࡣ࣍ࢫࢺ࠿ࡽ FPGA ࡬ࡢࢹ࣮ࢱ㌿㏦ࢆ⾜࠺㛵ᩘࠊread_data_from_fpga 㛵ᩘࡣ FPGA ࠿ࡽ࣍ࢫࢺ࡟ࢹ࣮ࢱ㌿㏦ࢆ⾜࠺ࣉࣟࢢ࣒࡛ࣛ࠶ࡿࠋ ࡲࡓࠊ enquque_request_to_fpga 㛵ᩘࡣ࣍ࢫࢺ࠿ࡽ FPGA ࡟࢜ࣇ࣮ࣟࢻࡢ౫㢗ࢆ⾜࠺㛵ᩘ࡛࠶ࡿࠋ ࡇࡢࣉࣟࢢ࣒࡛ࣛࡣࠊ ⾜ิࢹ࣮ࢱࡀ᪤࡟ FPGA DDR ࣓ࣔࣜ࡟㌿㏦ࡉࢀ
- 167 -

─ 167 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩࡚࠸ࡿࡇ࡜ࢆ᝿ᐃࡋ࡚࠸ࡿࠋ ᅗ 10 ࡟♧ࡉࢀ࡚࠸ࡿ㏻ࡾࠊ GEMM ࡀᚲせ࡜ࡍࡿࢹ࣮ࢱࡣTRSM ࢱࢫࢡ࡟ࡼࡗ࡚ࡢࡳ᭦᪂ࡉࢀࡿࡇ࡜࠿ࡽࠊ GEMM ࡢ࢜ࣇ࣮ࣟࢻࢆ⾜࠺┤๓࡛ࡣ࡞ࡃTRSM ࢱࢫࢡ⤊஢᫬࡟ FPGA ࡬ࡢࢹ࣮ࢱ㌿㏦ࢆ⾜࠺ࡇ࡜࡟ࡼࡾࠊ FPGA ࣍ࢫࢺ㛫ࡢࢹ࣮ࢱ㌿㏦ࢆ๐ῶ࡛ࡁࡿࠋ

ᅗ 11 FPGA ࣮࢝ࢿࣝࡢ㠀ྠᮇᐇ⾜࡜࣍ࢫࢺୖࡢ࣮࢟ࣗࡢᵝᏊᅗ 11 ࡟ࠊ࣍ࢫࢺ CPU ࠿ࡽ」ᩘࡢ FPGA ࣮࢝ࢿࣝࢆ㠀ྠᮇ࡟ᐇ⾜ࡍࡿࡓࡵࡢࢥ࣐ࣥࢻ࢟ࣗ
࣮ࡢ≧ἣࢆ♧ࡍࠋࡲࡓࠊListing 1 ࡟ࡇࡢฎ⌮ࢆ⾜࠺ࡓࡵࡢ࣍ࢫࢺୖࡢ OpenMP ࢥ࣮ࢻࢆ♧ࡍࠋྛ࣮࢝ࢿࣝ࡬ࡣࢱࢫࢡࡣ 1 ࡘࡎࡘࡋ࠿ᢞධᐇ⾜࡛ࡁ࡞࠸ࡀࠊྛ࣮࢝ࢿࣝẖ࡟࣮࢟ࣗࢆ⏝ពࡋࠊࡑࢀࡽࡢษࡾ᭰࠼ࢆ࣍ࢫࢺୖ࡛ࣉࣟࢢ࣒ࣛࡍࢀࡤẚ㍑ⓗᆒ➼࡟ࢱࢫࢡࢆ᣺ࡾศࡅࡿࡇ࡜ࡀྍ
⬟࡜࡞ࡿࠋࡇࡢᐇ⿦࡛ࡣ FPGA ࣮࢝ࢿࣝࡣ࡝ࢀࡶྠࡌ GEMM ࣮ࣝࢳࣥࢆᐇ⾜ࡍࡿࡢ࡛ࠊࢱࢫࢡ ࡢ ࢟ ࣗ ࣮ ࡬ ࡢ ᣺ ࡾ ศ ࡅ ࡣ ᐜ ᫆ ࡟ Ỵ ᐃ ࡛ ࡁ ࡿ ࠋ GEMM ࢱ ࢫ ࢡ ࡟ ࡘ ࠸ ࡚ ࡣ ࠊenqueue_request_to_fpga 㛵ᩘࡸ read_data_from_fpga 㛵ᩘࡢᐇ⾜ᚋࠊtaskyield ࡛ࡇࢀࢆ㐺ᐅ୰᩿ࡍࡿࠋ ࣍ࢫࢺ࡛ࡢࢱࢫࢡࡀ୰᩿ࡉࢀ࡚࠸ࡿ㛫ࡶࠊFPGA ࡛ࡣࣂࢵࢡࢢࣛ࢘ࣥࢻ࡛࢜ࣇ࣮ࣟࢻ
ࡉࢀࡓィ⟬ࡢᐇ⾜ࡸࢹ࣮ࢱ㌿㏦ࡀ⾜ࢃࢀࡿࠋ ࡇࡢᡭἲ࡟ࡼࡾ FPGA ࡬ࡢ࢜ࣇ࣮ࣟࢻฎ⌮ࡢ㠀ྠᮇ໬࠾ࡼࡧ CPU/FPGA ࡛ࡢィ⟬ࡢ࣮࢜ࣂ࣮ࣛࢵࣉࢆᐇ⌧ࡍࡿࠋ ୰᩿ࡉࢀࡓࢱࢫࢡࡀ෌㛤ࡉࢀࡓ㝿ࠊ ࢜ࣇ࣮ࣟࢻࡋࡓィ⟬ࡀ⤊஢ࡋ࡚࠸ࡿ࠿ࠊ ࡶࡋࡃࡣࢹ࣮ࢱ㌿㏦ࡀ⤊஢ࡋࡓ࠿☜ㄆࢆ⾜࠺ࠋ ࡑࢀࡽࡀ⤊஢ࡋ࡚࠸࡞࠸ሙྜࠊ ෌ᗘ୰᩿ࡋ௚ࡢࢱࢫࢡࢆᐇ⾜ࡍࡿࠋ- 168 -

─ 168 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩
Listing 1

ࣉࣟࢢ࣒ࣛࡢᴫせvoid cholesky(const int tsࠊ const int ntࠊ float* A[nt][nt]){#pragma omp parallel#pragma omp single
for (int k = 0; k < nt; k++) {//create POTRF task
#pragma omp task depend(out:A[k][k]){omp_potrf(A[k][k]ࠊ tsࠊ ts);}for (int i = k + 1; i < nt; i++) {//create TRSM task
#pragma omp task depend(in:A[k][k]) depend(out:A[k][i]){omp_trsm(A[k][k]ࠊ A[k][i]ࠊ tsࠊ ts);
write_data_to_fpga(A[k][k]ࠊ event0);
waitForFinish(event0);}}
for (int i = k + 1; i < nt; i++) {for (int j = k + 1; j < i; j++) {//create GEMM task
#pragma omp task depend(in:A[k][i]ࠊ A[k][j]) depend(out:A[j][i]){enqueue_request_to_fpga(gemmKernelࠊ ࠋࠋࠋࠊ event1);
do {#pragma omp taskyieldcheckStatus(event1ࠊ &ret);} while (ret != done);
read_data_from_fpga(A[j][i]ࠊ event2);
do {#pragma omp taskyieldcheckStatus(event2ࠊ &ret);- 169 -

─ 169 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩} while (ret != done);}}//create SYRK task
#pragma omp task depend(in:A[k][i]) depend(out:A[i][i]){omp_syrk(A[k][i]ࠊ A[i][i]ࠊ tsࠊ ts);}}}
#pragma omp taskwait}࢜ࣇ࣮ࣟࢻࡉࢀࡿ GEMM ࡢィ⟬ࢆ⾜࠺࣮࢝ࢿࣝࡣࠊ NDRange ࣔࢹࣝࢆ⏝࠸࡚ᐇ⿦ࡋࡓࠋ
ࡑࡢ㝿ࠊ ࣈࣟࢵ࢟ࣥࢢ࢔ࣝࢦࣜࢬ࣒ࢆ౑⏝ࡋࠊ ࣈࣟࢵࢡᙜࡓࡾࡢ኱ࡁࡉࢆ 64 x 64 ࡜ࡋࡓࠋDDR ࣓ࣔࣜ࡬ࡢ࢔ࢡࢭࢫࢆ๐ῶࡍࡿࡓࡵࠊ ྛࣈࣟࢵࢡࢆィ⟬᫬࡟ M20K Block RAM ࡟࣮ࣟࢻࡋ෌฼⏝ࡋࡓࠋ ࡲࡓࠊ"num_simd_work_items''ᒓᛶࢆࣃ࣓࣮ࣛࢱ࡜ࡋࠊ ࣮࢝ࢿࣝ࢖ࣥࢫࢱ
ࣥࢫ࠶ࡓࡾࡢࣜࢯ࣮ࢫ౑⏝㔞ࡢㄪᩚࢆ⾜ࡗࡓࠋ ࡲࡓࠊ ࣮࢝ࢿࣝ࢖ࣥࢫࢱࣥࢫ࠶ࡓࡾࡢࣜࢯ
࣮ࢫ౑⏝㔞࡟ᛂࡌ࡚」〇ࢆ⾜ࡗࡓࠋ ௚ࡢ᭱㐺໬࡜ࡋ࡚ࠊ ࢶ࣮ࣝࢳ࢙࢖ࣥࡀᥦ౪ࡍࡿ 1KB ࣓
ࣔ࢖ࣥࢱ࣮ࣜࣈࢆ౑⏝ࡏࡎࠊ ྛࢹ࣮ࢱࡀ☜ಖࡉࢀࡿ࣓ࣔࣜࣂࣥࢡࡢ᫂♧ࢆ⾜ࡗࡓࠋ௨ୖࡢࡼ࠺࡞ࣉࣟࢢ࣑ࣛࣥࢢࢆ⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ࡢ FPGA ࢡࣛࢫࢱᐇ㦂ࢩࢫࢸ࣒࡛࠶ࡿ PPX (Pre-PACS-X)ࡢ 1 ࣀ࣮ࢻ࡟ᐇ⿦ࡋ࡚ᛶ⬟ホ౯ࢆ⾜ࡗࡓࠋ⾲ 2 ࡟ PPX ࢩࢫࢸ࣒ࡢ௙ᵝࢆ♧ࡍࠋ⾲2ホ౯⎔ቃ PPX ࡢ௙ᵝCPU

Xeon E5-2660 v4 @2.00GHz x 2

Host DRAM

DDR4-2400 16GB x4

GPU

NVIDIA Tesla P100 PCIe x2

FPGA Board

BittWare A10PL4FPGAIntel Arria10 (10AX115N3F40E2SG)FPGA DRAM

DDR4-2133 4GB x2

InfiniBand

Mellanox ConnectX-4 EDR

OS

CentOS 7.3 64bit- 170 -

─ 170 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩FPGA Compiler

Intel FPGA SDK for OpenCL 17.1.2

CPU Compiler

Intel C Compiler 18.0.1

CPU BLAS LibraryIntel Math Kernel LibraryThread Library

Argobots 1.0b1

FPGA ୖࡢ GEMM ࣮࢝ࢿࣝࡢᶵ⬟࡜ᅇ㊰つᶍࢆไᚚࡍࡿࣃ࣓࣮ࣛࢱ࡜ࡋ࡚ࠊ1 ࡘࡢ࣮࢝ࢿ
ࣝෆࡢ GEMM ฎ⌮ࢆ⾜࠺ከ㔜࣮ࣝࣉࡢ᭱ෆഃ࣮ࣝࣉ࡛ࡢ SIMD ୪ิᛶࡢไᚚࢆ⾜ࡗࡓࠋSIMDࡢᖜࢆ 16ࠊ 8ࠊ 4 ࡢ 3 ẁ㝵࡟ศࡅࠊࡑࢀࡒࢀࢆ Type1ࠊ Type2ࠊ Type3 ࡜ྡ௜ࡅࡿࠋSIMD
ᖜࡀᗈ࠸࣮࢝ࢿࣝࡣㄽ⌮ᅇ㊰ࡢࢤ࣮ࢺᩘࢆᾘ㈝ࡍࡿࠋ௒ᅇ⏝࠸ࡓ Intel Arria10 FPGA ࡛ࡣࠊ⣙70%ࡢ DSP ࣜࢯ࣮ࢫࢆ⏝࠸ࡿࡼ࠺࡟ࡋࡓ࡜ࡇࢁࠊType1ࠊ Type2ࠊ Type3 ࡢ࣮࢝ࢿࣝࢆᐇ⿦
࡛ࡁࡿ࢖ࣥࢫࢱࣥࢫᩘࡣ 1ࠊ 2ࠊ 4 ಶ࡜࡞ࡗࡓࠋ౛࠼ࡤ Type1 GEMM ࣮࢝ࢿࣝࢆ 1 ࡘᐇ⾜ࡍࡿሙྜ࡜ࠊType3 GEMM ࣮࢝ࢿࣝࢆ 4 ࡘྠ᫬࡟ᐇ⾜ࡋࡓሙྜ࡛ࡣࠊᇶᮏⓗ࡞⌮ㄽࣆ࣮ࢡᛶ⬟ࡣ➼ࡋࡃ࡞ࡿࠋࡋ࠿ࡋࠊᐇ㝿࡟ࡣㄽ⌮ྜᡂࡢไ⣙࠿ࡽྛ Type ࡢ࣮࢝ࢿࣝ⏕ᡂ࡛ࡣືస࿘Ἴᩘ࡟ᕪࡀぢࡽࢀࡓࠋࡇࢀࡣᐇ⾜ᛶ⬟ࢆỴࡵࡿ㔜せ࡞ࣇ࢓ࢡࢱ࡛࠶ࡿࠋ

ᅗ 12 SIMD ᖜࢆኚ࠼ࡓ 3 ✀㢮ࡢ DGEMM ࣮࢝ࢿࣝࡢᐇ⾜᫬㛫ẚ㍑
ᅗ 12 ࡟ 3 ✀㢮ࡢ࣮࢝ࢿࣝࡢ 1 ࡘࡎࡘࢆᐇ⾜ࡋࡓሙྜࡢᐇ⾜᫬㛫ࢆ♧ࡍࠋၥ㢟ࢧ࢖ࢬࢆ 512x
512 ࠿ࡽ 4096 x 4096 ࡲ࡛ኚ࠼ࡓ⤖ᯝࠊ඲࡚ࡢሙྜ࡛ Type1 ࠿ࡽ Type3 ࡲ࡛ᴫࡡᅇ㊰つᶍ࡟ẚ౛ࡋࡓᐇ⾜᫬㛫▷⦰ࡀぢࡽࢀࡓࠋࡲࡎࠊ᭱ࡶᑠつᶍ࡛࠶ࡿ Type3 ࣮࢝ࢿ࡛ࣝࡣ₇⟬ᛶ⬟ࡣᏳᐃࡋ࡚࠾ࡾࠊၥ㢟ࢧ࢖ࢬࢆ X x X ࡜ࡋࡓ᫬ࠊX ࢆ 2 ಸ࡟ࡍࡿ࡜₇⟬᫬㛫ࡣ࡯ࡰ 8 ಸ࡟࡞ࡗ࡚

- 171 -

─ 171 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩
࠸ࡿࡀࠊGEMM ࡢ₇⟬㔞ࡣ X ࡢ 3 ஌࡟ẚ౛ࡍࡿࡓࡵࡇࢀࡣ࣮ࣜࢬࢼࣈ࡛ࣝ࠶ࡿࠋType1 ࡟࡞ࡿ࡜ၥ㢟ࢧ࢖ࢬࡀᑠࡉ࠸ሙྜࡣࡇࡢ㛵ಀࡀᔂࢀࠊᑠࡉ࠸ၥ㢟࡛ࡣຠ⋡ࡀᝏࡃ࡞ࡗ࡚࠸ࡿࠋ
ḟ࡟ࠊࡇࢀࡽࡢ࣮࢝ࢿࣝࢆ㠀ྠᮇ୪ิᐇ⾜ྍ⬟࡜ࡋࡓࣉࣟࢢ࣒࡛ࣛ඲యࡢࢫ࣮ࣝࣉࢵࢺࢆホ౯ࡋࡓࠋType1 ࣮࢝ࢿࣝࡣ 1 ࡘࡋ࠿࢖ࣥࢫࢱࣥࢫࡀ࡞࠸ࡓࡵࠊ඲࡚ࡢ GEMM ࢜ࣇ࣮ࣟࢹ࢕
ࣥࢢࡣ㏲ḟⓗ࡟ FPGA ࡟ᢞࡆࡽࢀࡿࡀࠊType2 ࡛ࡣ 2 ࡘࡢ࢖ࣥࢫࢱࣥࢫࠊType3 ࡛ࡣ 4 ࡘࡢ࢖ࣥࢫࢱࣥࢫࡀ㠀ྠᮇ୪ิᐇ⾜ྍ⬟࡛࠶ࡿⅬࡀ㔜せ࡛࠶ࡿࠋ⤖ᯝࢆᅗ 13 ࡟♧ࡍࠋ

ᅗ 13

ྛ Type ࡢ DGEMM ࣮࢝ࢿࣝ࡟ࡘ࠸࡚㠀ྠᮇྠ᫬ᐇ⾜ࢆ⾜ࢃࡏࡓሙྜࡢᛶ⬟ࡲࡎࠊ࡝ࡢ Type ࡢ࣮࢝ࢿࣝ࡟࠾࠸࡚ࡶၥ㢟ࢧ࢖ࢬࡀ኱ࡁ࠸࡯࡝ᛶ⬟ࡀྥୖࡋ࡚࠾ࡾࠊࡇࢀ
ࡣ࣮࢝ࢿࣝ㉳ືࡢ࣮࢜ࣂ࣮࣊ࢵࢻ➼ࡀ┦ᑐⓗ࡟ᑠࡉࡃ࡞ࡿࡓࡵ࡜ᛮࢃࢀࡿࠋḟ࡟ࠊType ู࡛ぢࡿ࡜ၥ㢟ࢧ࢖ࢬࡀ኱ࡁ࠸ሙྜࠊType3 ࡢ⥲ྜᛶ⬟㸦SIMD ᖜࡢᑠࡉ࠸࣮࢝ࢿࣝࢆ」ᩘྠ᫬ᐇ
⾜ࡍࡿ㸧ࡀ Type1 ࢆ᭱኱࡛⣙ 10%ୖᅇࡗ࡚࠸ࡿࠋࡇࢀ࡟ࡣᑠࡉ࠸࣮࢝ࢿࣝࢆ⏕ᡂࡍࡿࡇ࡜࡛
ືస࿘Ἴᩘࡀⱝᖸ㧗࠸࣮࢝ࢿࣝࢆㄽ⌮ྜᡂ࡛ࡁࡿྍ⬟ᛶࡀ࠶ࡿࡇ࡜࡜ࠊ⢏ᗘࡢᑠࡉ࠸࣮࢝ࢿ
ࣝࡢ㠀ྠᮇᐇ⾜࡜࠸࠺ࢫࢺࣛࢸࢪࡀᛶ⬟ࢆྥୖࡉࡏࡿྍ⬟ᛶࡀ࠶ࡿࡇ࡜ࡀ♧ࡉࢀࡓࠋ᭱ᚋ࡟ࠊࣈࣟࢵࢡ໬ࢥࣞࢫ࣮࢟ၥ㢟ࢆ OpenMP ࢱࢫࢡࢆ౑ࡗ࡚㠀ྠᮇ୪ิᐇ⾜ྍ⬟࡜ࡋࡓࣉࣟࢢ࣒࡛ࣛ඲యࡢᛶ⬟ࢆホ౯ࡋࡓࠋ⤖ᯝࢆᅗ 14 ࡟♧ࡍࠋ

- 172 -

─ 172 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩ᅗ 14ࣈࣟࢵࢡ໬ࢥࣞࢫ࣮࢟ศゎࡢ㠀ྠᮇ࣮࢝ࢿࣝᐇ⿦࡟ࡼࡿᛶ⬟ホ౯ࡇࡢ⤖ᯝ࠿ࡽࠊࡇࡢࢫࢺࣛࢸࢪࢆᐇ㝿ࡢၥ㢟࡟㐺⏝ࡋࡓሙྜࠊྠࡌಶᩘࡢ DSP㸦ࡇࡢሙྜࠊ
1000 ಶ⛬ᗘ㸧ࢆᾘ㈝ࡋࡓሙྜࡢᛶ⬟ࡣࠊType1 ࡀ᭱ࡶపࡃࠊType3 ࡀ᭱ࡶ㧗࠸ࡇ࡜ࡀࢃ࠿ࡿࠋ
ࡇࢀࡽࡢ⤖ᯝࡼࡾࠊྠつᶍࡢẚ㍑ⓗᑠࡉ࠸࣮࢝ࢿࣝࢆ」ᩘ࢖ࣥࢫࢱࣥࢫ⏕ᡂ࡛ࡁࠊ࠿ࡘࡑࢀ
ࡽࢆྠ᫬ᐇ⾜ྍ⬟࡞ሙྜࠊ඲యⓗ࡞ᛶ⬟ࢆྥୖࡉࡏࡿྍ⬟ᛶࡀ࠶ࡿࡇ࡜ࡀ♧ࡉࢀࡓࠋ≉➹ࡍ࡭ࡁࡣࠊᅗ 14 ࡛♧ࡉࢀࡓ௨ୖࡢᛶ⬟ࡀࠊᐇ㝿ࡢࢥࣞࢫ࣮࢟ศゎࣉࣟࢢ࣒࡛ࣛ♧ࡉࢀࡓࡇ࡜࡛
࠶ࡿࠋࡉࡽ࡞ࡿヲ⣽ゎᯒࡀᚲせ࡛࠶ࡿࡀࠊᡃࠎࡢࢱࢫࢡ୪ิ OpenMP ࣉࣟࢢ࣒ࣛ࡟」ᩘ࣮࢝
ࢿࣝࡢ㠀ྠᮇྠ᫬ᐇ⾜ࢆ⤌ࡳྜࢃࡏࡿ࢔ࣉ࣮ࣟࢳࡀ᭷ຠ࡛࠶ࡿࡇ࡜ࡀ♧ࡉࢀࡓ࡜ゝ࠼ࡿࠋ ᆅᇦẼ㇟஘ὶࢥ࣮ࢻ Large Eddy Simulation ࡢ୪ิ GPU ໬㸦ᮔ㸧ᆅ⌫⎔ቃ◊✲㒊㛛ࡢ᪥ୗ༤ᖾᩍᤵࡢ◊✲ࢢ࣮ࣝࣉ࡜ඹྠ࡛ࠊྠࢢ࣮ࣝࣉ࡟ࡼࡗ࡚㛤ⓎࡉࢀࡓᆅᇦẼ㇟஘ὶࢥ࣮ࢻ Large Eddy Simulation (LES)ࡢ GPU ໬ࢆ⾜࡞ࡗ࡚࠸ࡿࠋᮏᖺᗘࡢ◊✲࡛ࡣࠊCPU ∧࡛ࡢᐇ⾜࡛඲ᐇ⾜᫬㛫ࡢ 70%⛬ᗘࢆ༨ࡵࡿ୺せ㛵ᩘ⩌࡟ࡘ࠸࡚ࠊ࣮࢝ࢿࣝ༢఩
࡛ࡢ CUDA ໬ࢆ⾜࡞ࡗࡓࠋࡑࡢୖ࡛ࠊGPU ࡬ࡢ࣮࢝ࢿࣝ࢜ࣇ࣮ࣟࢹ࢕ࣥࢢࡢ㝿࡟ẖᅇࠊᚲせ࡞ࢹ࣮ࢱࢆ GPU ࡢࢢ࣮ࣟࣂ࣓ࣝࣔࣜ࡟ࢥࣆ࣮ࡋࠊ࣮࢝ࢿࣝᐇ⾜⤊஢ᚋ࡟ CPU ࡢ࣓࢖࣓ࣥࣔ
ࣜ࡟ᘬࡁୖࡆࡿ࡜࠸࠺సᴗࠊࡍ࡞ࢃࡕ CPU-GPU ࢥࣆ࣮࡜ GPU-CPU ࢥࣆ࣮ࡢ᫬㛫ࡀ࣮࢜ࣂ࣮
࣊ࢵࢻ࡜࡞ࡿࡇ࡜࠿ࡽࠊ(1) GPU ࣮࢝ࢿࣝ࠿ࡽḟࡢ GPU ࣮࢝ࢿࣝ࡟ᘬࡁ⥅ࡀࢀࡿࢹ࣮ࢱࠊ࠿
ࡘ CPU ഃ࡛ࡣᚲせ࡜ࡋ࡞࠸ࢹ࣮ࢱ࡟ࡘ࠸࡚ࡣ GPU ࡢࢢ࣮ࣟࣂ࣓ࣝࣔࣜ࡟ṧࡋ࡚ࢹ࣮ࢱࢥࣆ
࣮᫬㛫ࢆ⠇⣙ࡍࡿࠊ(2) ኱㒊ศࡢฎ⌮ࢆ GPU ࣮࢝ࢿࣝ໬ࡍࡿࡇ࡜࡛ࠊࢹ࣮ࢱࡢ࣓࢖ࣥࡣ GPUࡢࢢ࣮ࣟࣂ࣓ࣝࣔࣜୖ࡟ᖖ㥔ࡉࡏࠊᚲせ࡟ᛂࡌ࡚ CPU ࡟ᡠࡿ㝿࡟ CPU-GPU ࣓ࣔࣜࢥࣆ࣮ࢆ
⾜࠺ࠊ࡜࠸࠺ 2 ✀㢮ࡢ᭱㐺໬ࢆ⾜࡞ࡗࡓࠋ- 173 -

─ 173 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩ᑐ㇟࡜ࡍࡿ LES ࢥ࣮ࢻࡣ MPI ໬ࡉࢀ࡚࠾ࡾࠊࡉࡽ࡟ CPU ࡢ࣐ࣝࢳࢥ࢔ࢆ᭷ຠ฼⏝ࡍࡿࡼ࠺࡟ྛ MPI ࣉࣟࢭࢫࡣ OpenMP ࡟ࡼࡿࢫࣞࢵࢻ୪ิ໬ࡉࢀ࡚࠸ࡿࠋࡘࡲࡾࠊOpenMP+MPI ࡢࣁ࢖ࣈࣜࢵࢻࢥ࣮ࢻ࡜࡞ࡗ࡚࠸ࡿࠋ࣐ࣝࢳࢫࣞࢵࢻ໬ࡉࢀࡓࢥ࣮ࢻ࡛࠶ࡿࡇ࡜ࡀ GPU ᐇ⿦ࡢ
CUDA ໬࡟࠾ࡅࡿࣄࣥࢺ࡜࡞ࡗ࡚࠸ࡿࠋMPI ୪ิ࡟ࡘ࠸࡚ࡣ኱ࡁ࡞ኚ᭦ࢆຍ࠼࡞ࡃ࡚ࡍࡴࡼ
࠺࡟ࠊ1 ࡘࡢ MPI ࣉࣟࢭࢫࡀ 1 ࡘࡢ GPU ࢆᢸᙜࡍࡿࡼ࠺࡟ᐇ⿦ࡋࡓࠋ౛࠼ࡤࠊᐇ㦂⎔ቃ PPX
㸦Pre-PACS-Xࠊ⾲ 3 ཧ↷㸧࡛ࡣ 2 ࢯࢣࢵࢺࡢ CPU ࡟ 14 ࢥ࢔ࡀࡑࢀࡒࢀᐇ⿦ࡉࢀ࡚࠾ࡾࠊCPU∧ࡢ LES ࢥ࣮ࢻ࡛ࡣ 1 ࣀ࣮ࢻᙜࡓࡾ 2 MPI ࣉࣟࢭࢫࢆ㉮ࡽࡏࠊྛࣉࣟࢭࢫࡀ 14 ࢫࣞࢵࢻࡢ
OpenMP ᐇ⾜ࢆ⾜࠺ࠋPPX ࡟ࡣ 2 ྎࡢ GPU㸦NVIDIA Tesla P100 x2 ࡲࡓࡣྠ V100 x2㸧ࡀᦚ㍕ࡉࢀ࡚࠸ࡿࡢ࡛ࠊCPU ࡢ 1 ࢯࢣࢵࢺศࡢฎ⌮ࢆ GPU ࡢ 1 ྎ࡟ᑐᛂࡉࡏࠊ1 ࡘࡢ MPI ࣉࣟࢭࢫࡀ 1 ࡘࡢ GPU ࢆ⟶⌮ࡍࡿࡼ࠺࡟ᐇ⿦ࡋࡓࠋ
ᮏᖺᗘࡢ◊✲࡛ࡣ 70%ࢥ࣮ࢻᐇ⾜㒊ศࡢ GPU ࣮࢝ࢿࣝ໬࡜ MPI ໬ࢆ⤌ࡳྜࢃࡏࡓᐇ⿦ࡲ
࡛ࢆ⾜࡞ࡗࡓࠋ୺せࢹ࣮ࢱࢆ GPU ഃ࡟⨨࠸࡚ CPU-GPU ཬࡧ GPU-CPU ࢹ࣮ࢱࢥࣆ࣮᫬㛫ࢆ▷⦰ࡍࡿ࡜ࡇࢁࡲ࡛ࡣᐇ⿦ࡀ᏶஢ࡏࡎࠊ⌧≧࡛ࡣ඲࡚ࡢࢹ࣮ࢱࡣ CPU ഃ࡟࠶ࡾࠊGPU ࣮࢝ࢿ
ࣝᐇ⾜ࡢࡓࡧ࡟ GPU ࡢࢢ࣮ࣟࣂ࣓ࣝࣔࣜ࡬ࡢࢥࣆ࣮࡜ࡑࡢ CPU ࣓ࣔࣜ࡬ࡢᘬࡁୖࡆࡀᚲせ࡛࠶ࡿࠋ௨ୖࡢࡼ࠺࡟ࡋ࡚ PPX ࡢ 1 ࣀ࣮ࢻࠊ2 GPU ࡛ࡢᐇ⾜ࢆ⾜࡞ࡗࡓ⤖ᯝࠊ₇⟬⤖ᯝࡀṇࡋ࠸ࡇ࡜ࢆ☜ㄆࡋࡓࠋࡑࡇ࡛ࠊ1 ࣀ࣮ࢻ࡛ࡢ 2 MPI ࣉࣟࢭࢫ㸦2 GPU㸧࡟ࡼࡿᛶ⬟ホ౯ࢆ⾜࡞ࡗࡓࠋ⤖ᯝࢆᅗ 15 ࡟♧ࡍࠋCPU ࡢࡳ㸦14 ࢫࣞࢵࢻ x ࣉࣟࢭࢫ㸧ࠊGPU ࡜ CPU㸦Tesla P100 x2 ࡲࡓࡣ Tesla V100 x2㸧ࡢే⏝࡟ࡘ࠸࡚ྜィ 3 ✀㢮ࡢᐇ⾜᫬㛫ࢆ ᐃࡋࡓࠋィ⟬ࡣ 100 ࢱ࢖࣒ࢫࢸࢵࣉࡢ⥲ᐇ⾜᫬㛫࡛ࠊMPI ㏻ಙࢆྵࡴࠋࡓࡔࡋࠊ⌧᫬Ⅼࡢࢥ࣮ࢻ࡛ࡣ MPI ㏻ಙ᫬㛫ࡣ㍍ᚤ
࡛࠶ࡿࠋᅗ 15 ࡢࢢࣛࣇࡣ✚ࡳୖࡆᲬࢢࣛࣇ࡛ࠊCPU ࡛ࡢᐇ⾜㸦GPU ໬ࡉࢀࡓࢥ࣮ࢻ࡛ࡣ CPU࡟ṧࡉࢀࡓฎ⌮㸧ࠊGPU ࡛ࡢᐇ⾜ࠊGPU ࠿ࡽ GPU ࡬ࡢࢹ࣮ࢱࢥࣆ࣮᫬㛫ࠊCPU ࠿ࡽ GPU ࡬ࡢࢹ࣮ࢱࢥࣆ࣮᫬㛫ࠊMPI ㏻ಙ᫬㛫࡟ศࡅ࡚♧ࡋ࡚࠸ࡿࠋᐇ㝿࡟ࡣከᩘࡢ࣮࢝ࢿࣝࡸ㛵ᩘࠊࡉࡽ࡟ MPI ㏻ಙࡀᐇ⾜ࡉࢀ࡚࠸ࡿࡀࠊྛ㒊ศࡣࡑࢀࡒࢀᑐᛂࡍࡿฎ⌮᫬㛫ࡢ⥲࿴࡜࡞ࡗ࡚࠸
ࡿࠋ

- 174 -

─ 174 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩㻌
ᅗ 15 LES ࢥ࣮ࢻࡢ CPU ཬࡧ GPU㸦Tesla P100 ཬࡧ Tesla V100㸧࡛ࡢᐇ⾜᫬㛫ࡢẚ㍑⤖ᯝࡼࡾࠊ⌧᫬Ⅼ࡛ࡣ GPU ໬ࡉࢀࡓࢥ࣮ࢻࡢ⥲ᐇ⾜᫬㛫ࡣ CPU ࡢࡳࡢᐇ⾜ࡼࡾ 10%⛬ᗘከࡃ࠿࠿ࡗ࡚࠸ࡿࡇ࡜ࡀࢃ࠿ࡿࠋࡍ࡞ࢃࡕࠊGPU ໬࡟ࡼࡿィ⟬᫬㛫ࡣ▷⦰ࡉࢀ࡞࠿ࡗࡓࠋࡋ
࠿ࡋࠊෆヂࢆぢࡿ࡜ CPU ࡢࡳࡢ⥲₇⟬᫬㛫 611[sec]࡟ᑐࡋࠊGPU ໬࡛ࡣࡇࡢ࠺ࡕ 193[sec]ࡲ
ࡓࡣ 190[sec]ࡀṧࡾࠊ⣙ 420[sec]ࡢ CPU ᐇ⾜᫬㛫ࡣ 51[sec]ࡲࡓࡣ 35[sec]ࡢ GPU ᐇ⾜ࡲ࡛࡟▷⦰ࡉࢀࡓࠋ⥲₇⟬᫬㛫࡛ぢࢀࡤ CPU ࡢࡳࡢ 611[sec]ࡀ GPU ໬࡟ࡼࡾ 244[sec]㸦P100㸧ࡲࡓࡣ 225[sec]㸦V100㸧ࡲ࡛▷⦰ࡉࢀࠊ₇⟬᫬㛫ࡣ 37~40%࡟ࡲ࡛▷⦰ࠊ₇⟬ᛶ⬟࡜ࡋ࡚ࡣ 2.5ࠥ
2.7 ಸ࡟ຍ㏿ࡉࢀ࡚࠸ࡿࠋ࡞࠾ࠊGPU ໬ࡋࡓሙྜࡢ CPU ᫬㛫࡟ⱝᖸࡢᕪࡀ࠶ࡿࡢࡣ P100 ࢆᐇ⿦ࡋࡓࣀ࣮ࢻ࡜ V100 ࢆᐇ⿦ࡋࡓࣀ࣮ࢻࡢ CPU ࡟ࣂ࣮ࢪࣙࣥࡢᕪࡀ࠶ࡾࠊᛶ⬟ࡀࢃࡎ࠿࡟
㐪࠺ࡓࡵ࡛࠶ࡿࡀࠊ
⥲ᐇ⾜᫬㛫࡟ᑐࡋ 3.7%⛬ᗘࡢᕪ࡛࠶ࡿࡢ࡛ࡇࡇ࡛ࡣ↓どࡍࡿࡇ࡜࡜ࡍࡿࠋ
ࡼࡗ࡚ࠊࡇࡢ GPU ᛶ⬟ࡢపࡉࡣᲬࢢࣛࣇࡢୖ㒊 2 ࡘࡢࢭࢡࢩࣙࣥࠊCPU->GPU ࢹ࣮ࢱࢥࣆ
࣮࡜ GPU->CPU ࢹ࣮ࢱࢥࣆ࣮࡟ࡼࡗ࡚ᘬࡁ㉳ࡇࡉࢀ࡚࠸ࡿࠋ
ࡇࡢ㒊ศࡢ⥲᫬㛫ࡣ 498~501[sec]࡛ᴟࡵ࡚኱ࡁ࠸ࠋୖ㏙ࡢࡼ࠺࡟ࠊࢹ࣮ࢱࡢ኱㒊ศࢆ GPU ഃ࣓ࣔࣜ࡟⨨ࡃࡇ࡜࡛ࠊࡇࡢ᫬㛫ࡣ኱ᖜ࡟▷⦰ࡉࢀࡿࡇ࡜ࡀぢ㎸ࡲࢀࡿࠋ௬࡟ࡇࡢ㒊ศࡀ 1/3 ⛬ᗘ࡟▷⦰ࡉࢀࢀࡤࠊGPU ໬࡛ 2ಸ௨ୖࡢ㧗㏿໬ࡀᮇᚅ࡛ࡁࡿࠋḟᖺᗘࡣࡇࡢ᪉㔪࡛ᐇ⿦ࢆᨵⰋࡋࠊࡉࡽ࡟㧗㏿໬ࢆ┠ᣦࡍ᪉㔪࡛࠶ࡿࠋ

- 175 -

─ 175 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩࣓ࢽ࣮ࢥ࢔ࣉࣟࢭࢵࢧྥࡅ࢔ࣉࣜࢣ࣮ࢩࣙࣥᛶ⬟ྥୖ 㸦ᮔ㸧᫖ᖺᗘ࡟⥅⥆ࡋࠊ㔞Ꮚ≀ᛶ◊✲㒊㛛ࡢ▮ⰼ୍ᾈᩍᤵࡢ◊✲ࢢ࣮ࣝࣉ࡜ࡢඹྠ◊✲ࡢୗࠊྠࢢ࣮ࣝࣉ࡛㛤Ⓨ୰ࡢ≀ᛶ➨୍ཎ⌮ィ⟬ࢥ࣮ࢻ ARTED㸦Ab initio Real Time Electron Dynamics
simulator㸧ࡢ࣓ࢽ࣮ࢥ࢔ࣉࣟࢭࢵࢧྥࡅᛶ⬟᭱㐺໬ࢆ⾜ࡗࡓࠋH29 ᖺᗘ࡟ᮏ᱁✌ാࢆ㛤ጞࡋ
ࡓࠊJCAHPC ࡟࠾ࡅࡿୡ⏺᭱኱ࡢ Intel Xeon Phi㸦ࢥ࣮ࢻྡ KNL: Knights Landing㸧ࢡࣛࢫࢱ࡛
࠶ࡿ OFP㸦Oakforest-PACS㸧ࡢ඲ࣀ࣮ࢻࢆ฼⏝ࡋࡓྠࢥ࣮ࢻࡢᛶ⬟ホ౯ࢆᐇ᪋ࡋࠊᴟࡵ࡚Ⰻዲ
࡞ weak scaling ཬࡧ strong scaling ᛶ⬟ࢆ㐩ᡂࡋ࡚࠸ࡿࠋ
OFP ୖࡢィ⟬ࣀ࣮ࢻ࡟ᐇ⿦ࡉࢀࡓ Xeon Phi㸦KNL㸧ࡣࠊᚑ᮶ࡢ࢔ࢡࢭ࣮ࣛࣞࢱ࡜ࡋ࡚ࡢࢥ
ࣉࣟࢭࢵࢧ࡛࠶ࡿ Xeon Phi㸦ࢥ࣮ࢻྡ KNC: Knights Corner㸧࡛ࡣ࡞ࡃࠊself-bootable ࡞ CPU࡜ࡋ࡚ືసࡍࡿࠋࡇࡢࡓࡵࠊࣀ࣮ࢻ㛫㏻ಙࡸ࣓ࣔࣜ࢔ࢡࢭࢫ࡟࠾࠸࡚ࠊKNC ࢆ⏝࠸࡚࠸ࡓ
COMA ࡼࡾࢩࣥࣉ࡛ࣝຠ⋡ⓗ࡞ฎ⌮ࡀ⾜࠼ࡿࡔࡅ࡛࡞ࡃࠊKNC ࡢ⣙ 3 ಸࡢ⌮ㄽࣆ࣮ࢡᛶ⬟ࡀᐇ⌧ࡉࢀࠊ኱ᖜ࡞ᛶ⬟ྥୖࡀᐇ⌧࡛ࡁࡿࠋࡋ࠿ࡋࠊᇶᮏⓗ࡞ᛶ⬟ࢳ࣮ࣗࢽࣥࢢࡣ KNC ࡜࡯࡜ࢇ࡝ኚࢃࡽ࡞࠸ࡓࡵࠊCOMA ୖ࡛㛤Ⓨࡉࢀࡓ KNC ྥࡅࡢ ARTED ࢆ࡯ࡰࡑࡢࡲࡲࠊOpenMP
࡜ MPI ࡢ࿧ࡧฟࡋ᪉ࢆኚ᭦ࡍࡿࡔࡅ࡛⛣᳜࡛ࡁࡿࠋᅗ 16 ࡟ ARTED ࡢ᭱㔜せ࣮࢝ࢿࣝ㒊ศ࡛
࠶ࡿࠊ3 ḟඖ 25 Ⅼᐇ✵㛫ࢫࢸࣥࢩࣝィ⟬ࡢ୺せ㒊ศࢥ࣮ࢻࢆ♧ࡍࠋࡇࡇ࡛ࡣ non-temporal storeࡢά⏝ࠊ512bit SIMD ࿨௧ࡢ₇⟬ᩘ࡜㓄⨨࡟ࣇ࢕ࢵࢺࡉࡏࡓࢹ࣮ࢱ㓄ิᐉゝࠊᩚᩘ๫వ₇⟬ࢆ┬ࡃࡓࡵࡢࢸ࣮ࣈࣝ⨨ࡁ᥮࠼➼ࡢ᭱㐺໬ࢆ⾜ࡗ࡚࠸ࡿࠋ᭱⤊ⓗ࡟ࡣࠊKNL ࡀ᥇⏝ࡍࡿ 512bit
SIMD ࿨௧ࡢ intrinsic ࢆ⏝࠸࡚࣋ࢡࢺࣝ໬ࢆᡭືᐇ⿦ࡋࠊࢫࢸࣥࢩࣝィ⟬࣮࢝ࢿ࡛ࣝࡣ KNL
ࡢ⌮ㄽࣆ࣮ࢡᛶ⬟ࡢ 25%ࡢᐇຠᛶ⬟ࡀ㐩ᡂࡉࢀࡓࠋ
㻌

ᅗ 16 Xeon Phi ྥࡅ࡟᭱㐺໬ࡉࢀࡓ 3 ḟඖ 25 Ⅼࢫࢸࣥࢩࣝࢥ࣮ࢻࡢ࣮࢝ࢿࣝ㒊ศ㻌
ࡲࡓࠊKNL ࡟࠾࠸࡚ࡣ㧗ࣂࣥࢻᖜ࣓࡛ࣔࣜ࠶ࡿ MCDRAM㸦16 GiB/node㸧࡜పࣂࣥࢻᖜ࣓
࡛ࣔࣜ࠶ࡿ DDR4㸦96 GiB/node㸧ࢆ࠺ࡲࡃ฼⏝ࡍࡿࡇ࡜ࡀᚲせ࡛࠶ࡿࡀࠊARTED ࢥ࣮ࢻࡣඖ
- 176 -

─ 176 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩᮶ࠊࣀ࣮ࢻୖࡢ඲ࢹ࣮ࢱࢆ୍ᣓࡋ࡚ࢫ࢟ࣕࣥࡍࡿࡢ࡛ࡣ࡞ࡃࠊ3 ḟඖࢫࢸࣥࢩࣝィ⟬࡟ᚲせ࡞㒊ศࢥࣆ࣮ࢆィ⟬ࣂࢵࣇ࢓࡟ࢥࣆ࣮ࡋ࡚࠿ࡽฎ⌮ࡍࡿࡼ࠺࡟࡞ࡗ࡚࠸ࡿࠋࡇࡢࡓࡵࠊࡇࡢィ⟬ࣂࢵࣇ࢓ࢆ MCDRAM ୖ࡟☜ಖࡍࡿࡇ࡜࡟ࡼࡾࠊ࡯࡜ࢇ࡝ⱞປࡏࡎ flat mode ࡟࠾ࡅࡿMCDRAM ࡢ᭷ຠ฼⏝ࡀྍ⬟࡛࠶ࡿࠋ௚ࡢከࡃࡢࢥ࣮ࢻࡀ flat mode ࡬ࡢ⛣᳜ᅔ㞴ࡢࡓࡵࠊຠ
⋡ࡢⴠࡕࡿ cache mode ࢆ⏝࠸࡚࠸ࡿࡢ࡟ᑐࡋࠊᛶ⬟ࢆ᭱኱໬ࡍࡿࡇ࡜ࡀྍ⬟࡜࡞ࡗࡓࠋィ⟬ࡢ࣮࣡࢟ࣥࢢࢭࢵࢺࡀ MCDRAM ࡢᐜ㔞࡟཰ࡲࡿሙྜ࡜ࠊࡇࢀࢆ㉸࠼ࡿሙྜ࡟ࡘ࠸࡚ࠊ₇⟬᫬㛫ࡣ࣮ࣜࢬࢼࣈ࡛ࣝ࠶ࡾ FLOPS ್ࡀⴠࡕ࡚࠸࡞࠸ᵝᏊࢆᅗ 17 ࡟♧ࡍࠋ
OFP ୖ࡛ࡣࡑࡢ኱つᶍ୪ิᛶࢆά࠿ࡋࠊἼᩘ✵㛫࡛ࡢ୪ิᛶࢆ඲ィ⟬ࣀ࣮ࢻ࡟ᒎ㛤ࡋࡓࠋࡇࡇ࡛ࠊྛἼᩘ✵㛫࡟࠾ࡅࡿ 3 ḟඖ✵㛫ࡣẚ㍑ⓗᑠࡉ࠸ࡓࡵࠊࡇࢀࢆ」ᩘࣀ࣮ࢻ࡛୪ิࡍࡿ
domain decomposition ἲࡣ⏝࠸࡞࠸ࠋࡇࢀ࡟ࡼࡾࠊࣀ࣮ࢻ㛫㏻ಙࢥࢫࢺࢆ᭱ᑠ㝈࡟ࡋࠊ㧗࠸୪ิฎ⌮ຠ⋡ࡀᮃࡵࡿࠋᅗ 18 ࡟ࠊ128 ࣀ࣮ࢻࡲ࡛ࡢ COMA ཬࡧ OFP ࡟࠾ࡅࡿ strong scaling ᛶ⬟ࢆ♧ࡍࠋࡶ࠺୍Ⅼࠊ≉➹ࡍ࡭ࡁ஦㡯࡜ࡋ࡚ࠊOFP ࡢ඲ࣀ࣮ࢻ฼⏝ᐇ㦂ࢆ㏻ࡌ࡚Ⓨぢࡉࢀࡓ㔜せ࡞⌧㇟ࡀ࠶ࡿࠋKNL ࡛ࡣ୍⯡ⓗ࡞ Xeon CPU ࡜ྠᵝࠊturbo boost mode ࡀഛࢃࡗ࡚࠾ࡾࠊࣉࣟࢭࢵ
ࢧࡢ㟁ຊᾘ㈝┠ᶆࢆ㉸࠼࡞࠸⠊ᅖ࡛▐㛫ⓗ࡟ືస࿘Ἴᩘࢆྥୖࡉࡏࡿࡇ࡜ࡀ࡛ࡁࡿࠋࡋ࠿ࡋࠊ
ࡇࡢ boost ຠᯝࡣ₇⟬ࢥ࢔༢఩࡛⾜ࢃࢀࠊᇶᮏⓗ࡟㠀ྠᮇ࡛࠶ࡿࠋࡲࡓࠊከᩘࡢ KNL ࣉࣟࢭࢵࢧࢆ⏝࠸ࡿ OFP ࡢࡼ࠺࡞ࢩࢫࢸ࣒࡛ࡣྛࣀ࣮ࢻࡢ turbo boost ࡶ㠀ྠᮇ࡟Ⓨ⏕ࡍࡿࠋ⤖ᯝ࡜ࡋ࡚ࠊྠ୍ࢥ࣮ࢻࢆྠ୍ࢹ࣮ࢱ㔞࡛ฎ⌮ࡋ࡚࠸ࡿ࡟ࡶ࠿࠿ࢃࡽࡎࠊࡑࡢᛶ⬟ࡣࣀ࣮ࢻẖ࡟ࣂࣛࡘࡃ࡜࠸࠺⌧㇟ࡀⓎ⏕ࡍࡿࠋࡇࡢ⌧㇟ࡣࠊOFP ࢆ㒊ศⓗ࡟฼⏝ࡋ࡚࠸ࡿ≧ែ࡛ࡣ࠶ࡲࡾ┠❧ࡓ࡞࠸ࡀࠊᮏ◊✲ࡢࡼ࠺࡞඲⣔฼⏝࡛ࡣࡑࡢᙳ㡪ࡀዴᐇ࡟⌧ࢀ࡚࠾ࡾࠊᛶ⬟పୗࢆᘬࡁ㉳ࡇࡋ࡚࠸ࡿࡇ࡜ࡀࢃ࠿ࡗࡓࠋᅗ 19 ࡟ࠊ඲⣔฼⏝࡛ࡢ ARTED ィ⟬࡟࠾࠸࡚ࠊᛶ⬟ࡀ᭱㧗ࡢࣀ࣮ࢻ࡜᭱పࡢࣀ࣮ࢻ࡛ࡢྛ㒊ศฎ⌮ࡢෆヂࢆ♧ࡍࠋARTED ࡛ࡣ 1 ࡘࡢࣁ࣑ࣝࢺࢽ࢔ࣥィ⟬ࡢ୰࡛ᩘᅇࡢ඲⣔࡟ࡼࡿ MPI_Allreduce ฎ⌮ࡀⓎ⏕ࡋࠊࡇࡇ࡛඲ࣀ࣮ࢻࡢྠᮇࡀྲྀࡽࢀࡿࡓࡵࠊ
⤖ᯝ࡜ࡋ࡚᭱ప㏿ᗘࡢࣀ࣮ࢻ࡟ᛶ⬟ࡀᚊ㏿ࡉࢀࠊࢩࢫࢸ࣒ᛶ⬟ࡀ┦ᑐⓗ࡟పୗࡍࡿࡇ࡜࡟࡞
ࡿࠋ⌧᫬Ⅼ࡛ࡇࡢ⌧㇟࡟ᑐࡍࡿ᭷ຠ࡞ᡭἲࡣぢࡘ࠿ࡗ࡚࠾ࡽࡎࠊࣉࣟࢭࢵࢧࢆᥦ౪ࡍࡿ Intel♫࡜ࡢ༠㆟࡟࠾࠸࡚ࡶ㔜せ࡞ᠱ᱌࡜࡞ࡗ࡚࠸ࡿࠋ
௨ୖࡢᡂᯝࡣࠊ⌧ᅾ▮ⰼࢢ࣮ࣝࣉࡀ୰ᚰ࡟㛤Ⓨࢆ⾜ࡗ࡚࠸ࡿ࢔ࣉࣜࢣ࣮ࢩࣙࣥ SALMON㸦Scalable Ab initio Light-Matter simulator for Optics and Nanosciences㸧࡟ྲྀࡾ㎸ࡲࢀࡿࠋSALMONࡣ ARTED ࡢⓎᒎⓗ࢔ࣉࣜࢣ࣮ࢩ࡛ࣙࣥࠊᮏඹྠ◊✲ࡀᐇ᪋ࡋࡓෆᐜࢆ࡯ࡰࡍ࡭࡚ࢆά⏝࡛ࡁࡿࡇ࡜ࡀᮇᚅࡉࢀࡿࠋ࡞࠾ࠊ2018 ᖺ 10 ᭶䛻ᮏ◊✲䛾୰ᚰⓗᐇ᪋⪅䛷䛒䜛ᘅᕝ♸ኴẶ䛜Ꮫ఩ྲྀᚓᚋ䚸㔞Ꮚ≀ᛶ◊✲㒊㛛䛾◊✲ဨ䛻㓄ᒓ䛥䜜䛯䛯䜑䚸2018 ᖺᗘᚋᮇ䛾ᡂᯝ䛿㔞Ꮚ≀ᛶ◊✲㒊㛛䛻䛶ู㏵ሗ࿌䛩䜛䛾䛷ཧ↷䛥䜜䛯䛔䚹- 177 -

─ 177 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩ᅗ 17 OFP ࡢ 1 ࣀ࣮ࢻୖ࡛ MCDRAM ᐜ㔞ࢆ㉸࠼ࡿࢹ࣮ࢱࢆᢅ࠺ሙྜࡢฎ⌮᫬㛫㸦MCDRAMᐜ㔞ෆࡢࢹ࣮ࢱฎ⌮࡟ẚ࡭⥺ᙧ࡟ቑຍࡍࡿࡢࡳ࡛ FLOPS ್ࡣపୗࡋ࡚࠸࡞࠸㸧ᅗ 18 128 ࣀ࣮ࢻཬࡧ 16 ࣀ࣮ࢻ㸦≀㉁ࡣࡑࢀࡒࢀ Si ཬࡧ SiO2㸧౑⏝᫬ࡢ COMA㸦KNC㸧
࡜ OFP㸦KNL㸧ࡢ strong scaling ᛶ⬟ᅗ 19 ඲⣔ィ⟬࡟࠾ࡅࡿ turbo boost ≧ἣ࡟ᕪ࡟ࡼࡾⓎ⏕ࡍࡿࣀ࣮ࢻ㛫ᛶ⬟ࡢࣂࣛࡘࡁ

- 178 -

─ 178 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩Intel Xeon Phi ࢡࣛࢫࢱ࡟࠾ࡅࡿ 2 ḟඖศ๭ࢆ⏝࠸ࡓ୪ิᐇᩘ 3 ḟඖ FFT ࡢᐇ⌧࡜ホ౯㸦㧗ᶫ㸧㧗㏿ࣇ࣮࢚ࣜኚ᥮㸦fast Fourier transformࠊ௨ୗ FFT㸧ࡣ⛉Ꮫᢏ⾡ィ⟬࡟࠾࠸࡚௒᪥ᗈࡃ⏝࠸ࡽࢀ࡚࠸ࡿ࢔ࣝࢦࣜࢬ࣒࡛࠶ࡿࠋࡇࢀࡲ࡛࡟ᥦ᱌ࡉࢀ࡚ࡁࡓ୪ิ 3 ḟඖ FFT ࡟࠾ࡅࡿ඾ᆺⓗ࡞ࢹ࣮ࢱศᩓ᪉ἲ࡜ࡋ࡚ࡣࠊ3 ࡘࡢḟඖ㸦xࠊy ࠾ࡼࡧ z ㍈㸧ࡢ࠺ࡕ 1 ࡘࡢḟඖ㸦౛࠼ࡤ z ㍈㸧ࡢࡳࡀศ๭ࡉࢀࡿࠋࡇࡢሙྜࠊz ㍈࡟࠾ࡅࡿࢹ࣮ࢱⅬᩘࡣ MPI ࣉࣟࢭࢫᩘ௨ୖ࡜࡞ࡿᚲせࡀ
࠶ࡿࠋFFTW ࠾ࡼࡧ Intel MKL㸦Math Kernel Library㸧ࡣࠊࡇࡢ 1 ḟඖศ๭ࢆ⏝࠸࡚࠸ࡿࠋ
᭱㏆ࡢࢫ࣮ࣃ࣮ࢥࣥࣆ࣮ࣗࢱ࡛ࡣࠊᛶ⬟ࢆྥୖࡉࡏࡿࡓࡵ࡟ࢥ࢔ᩘࡸࣉࣟࢭࢵࢧᩘࡀቑຍ
ࡍࡿഴྥ࡟࠶ࡿࠋ౛࠼ࡤࠊSunway TaihuLight ࡣ 2018 ᖺ 11 ᭶࡟ TOP500 ࣜࢫࢺࡢ 3 ఩࡟ࣛࣥࢡࡉࢀࠊࡑࡢࢥ࢔ᩘࡣ 1000 ୓ಶࢆ㉸࠼࡚࠸ࡿࠋࡇࡢࡼ࠺࡞ࢩࢫࢸ࣒࡟࠾࠸࡚ࡣࠊMPI ࡜
OpenMP ࢆ⏝࠸ࡓࣁ࢖ࣈࣜࢵࢻ୪ิࣉࣟࢢ࣑ࣛࣥࢢ࡟ࡼࡾ MPI ࣉࣟࢭࢫᩘࢆῶࡽࡋࡓ࡜ࡋ࡚ࡶࠊMPI ࣉࣟࢭࢫᩘࡣ᭱኱࡛ 1 ୓ಶ௨ୖ࡟࡞ࡿࠋࡋࡓࡀࡗ࡚ࠊz ㍈࡛ 1 ḟඖศ๭ࢆ⾜ࡗࡓሙྜࠊz ㍈࡟࠾ࡅࡿࢹ࣮ࢱⅬᩘࡀ 1 ୓Ⅼ௨ୖ࡛࡞ࡅࢀࡤ࡞ࡽ࡞࠸ࡇ࡜࡟࡞ࡾࠊ3 ḟඖ FFT ࡢၥ㢟ࢧ࢖ࢬ࡟ไ⣙ࡀ⏕ࡌࡿࡇ࡜࡟࡞ࡿࠋࡇࡢၥ㢟࡟ᑐฎࡍࡿ᪉ἲ࡜ࡋ࡚ࠊ2 ḟඖศ๭ࢆ⏝࠸ࡓ୪ิ
3 ḟඖ FFT ࡀᥦ᱌ࡉࢀ࡚࠸ࡿࠋࡋ࠿ࡋࠊIntel Xeon Phi ࢡࣛࢫࢱ࡟࠾ࡅࡿ 2 ḟඖศ๭ࢆ⏝࠸ࡓ
୪ิ 3 ḟඖᐇᩘ FFT ࡢᐇ⿦ࡣࡲࡔሗ࿌ࡉࢀ࡚࠸࡞࠸ࠋࡑࡇ࡛ Intel Xeon Phi ࢡࣛࢫࢱ࡟࠾࠸࡚
2 ḟඖศ๭ࢆ⏝࠸ࡓ୪ิ 3 ḟඖᐇᩘ FFT ࢆᐇ⿦ࡋ࡚ホ౯ࢆ⾜ࡗࡓࠋ
FFT ࡣ㞳ᩓࣇ࣮࢚ࣜኚ᥮㸦discrete Fourier transformࠊ௨ୗ DFT㸧ࢆ㧗㏿࡟ィ⟬ࡍࡿ࢔ࣝࢦࣜ
ࢬ࣒࡜ࡋ࡚▱ࡽࢀ࡚࠸ࡿࠋDFT ࡣḟᘧ࡛ᐃ⩏ࡉࢀࡿࠋ௡ିଵࡇࡇ࡛ࠊ߱௡ = ݁ିଶగ௜/௡௝௞‫ = )݇(ݕ‬෍ ‫߱)݆(ݔ‬௡ ,௝ୀ଴

0 ൑ ݇ ൑ ݊ െ 1 (1)ࠊ݅ = ξെ1࡛࠶ࡿࠋDFT ࡢධຊࢹ࣮ࢱ‫ࡀ)݆(ݔ‬ᐇᩘࡢሙྜࠊ2 ࡘࡢ݊Ⅼᐇᩘ DFT ࡣ 1 ࡘࡢ݊Ⅼ DFT ࢆ౑ࡗ࡚ຠ⋡ⓗ࡟ィ⟬ࡍࡿࡇ࡜ࡀ࡛ࡁࡿࠋ」⣲ᩘධຊࢹ࣮ࢱࡢᐇᩘ㒊࡜⹫ᩘ㒊࡟ 2 ࡘࡢᐇᩘࢹ࣮ࢱࢆධࢀ
࡚ࠊ」⣲ DFT ࢆᐇ⾜ࡍࡿࠋ‫ݔ = )݆(ݔ‬ଵ (݆) + ݅‫ݔ‬ଶ (݆),

0 ൑ ݆ ൑ ݊ െ 1 (2)ࡇࡇ࡛ࠊ‫ݔ‬ଵ (݆)࠾ࡼࡧ‫ݔ‬ଶ (݆)ࡣ 2 ࡘࡢ݊Ⅼᐇᩘධຊࢹ࣮ࢱ࡛࠶ࡿࠋ

 」⣲ DFT ࡢฟຊࢹ࣮ࢱ‫࡟)݇(ݕ‬㛵ࡋ࡚ࠊDFT ࡢ」⣲ඹᙺᛶ࠿ࡽ௨ୗࡢᘧࡀᡂࡾ❧ࡘࠋ‫ݕ = )݇(ݕ‬ଵ (݇) + ݅‫ݕ‬ଶ (݇),‫ݕ‬ത(݊ െ ݇) = ‫ݕ‬ଵ (݇) െ ݅‫ݕ‬ଶ (݇),

0൑݇ ൑݊െ10൑݇ ൑݊െ1(3)(4)

ࡇࡇ࡛ࠊ‫ݕ‬ଵ (݇)࠾ࡼࡧ‫ݕ‬ଶ (݇)ࡣࡑࢀࡒࢀ‫ݔ‬ଵ (݆)࠾ࡼࡧ‫ݔ‬ଶ (݆)ࡢ݊Ⅼᐇᩘ DFT ࡛࠶ࡿࠋ2 ࡘࡢ݊Ⅼᐇᩘ DFT ࡢฟຊࢹ࣮ࢱ‫ݕ‬ଵ (݇)࠾ࡼࡧ‫ݕ‬ଶ (݇)ࡣᘧ(3)࠾ࡼࡧ(4)ࡼࡾࠊ
1‫ݕ‬ଵ (݇) = {‫ )݇(ݕ‬+ ‫ݕ‬ത(݊ െ ݇)},2

- 179 -

─ 179 ─0 ൑ ݇ ൑ ݊ െ 1 (5)⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩݅‫ݕ‬ଶ (݇) = െ {‫ )݇(ݕ‬െ ‫ݕ‬ത(݊ െ ݇)},2࡜ィ⟬ࡍࡿࡇ࡜ࡀ࡛ࡁࡿࠋ

0 ൑ ݇ ൑ ݊ െ 1 (6) 3 ḟඖ DFT ࡣ௨ୗࡢᘧ࡛୚࠼ࡽࢀࡿࠋ௡భ ିଵ ௡మ ିଵ ௡య ିଵ

௝ ௞

௝ ௞

௝ ௞

‫݇(ݕ‬ଵ , ݇ଶ , ݇ଷ ) = ෍ ෍ ෍ ‫݆(ݔ‬ଵ , ݆ଶ , ݆ଷ )߱௡భభ భ ߱௡మమ మ ߱௡యయ య ,௝భ ୀ଴ ௝మ ୀ଴ ௝య ୀ଴

0 ൑ ݇ଵ ൑ ݊ଵ െ 1,

0 ൑ ݇ଶ ൑ ݊ଶ െ 1,ࡇࡇ࡛ࠊ߱௡ೝ = ݁ ିଶగ௜/௡ೝ (1 ൑ ‫ ݎ‬൑ 3)ࠊ݅ = ξെ1࡛࠶ࡿࠋ0 ൑ ݇ଷ ൑ ݊ଷ െ 1

 DFT ࡢඹᙺᑐ⛠ᛶ࡜ row-column ࢔ࣝࢦࣜࢬ࣒࡟ᇶ࡙ࡃ 3 ḟඖᐇᩘ FFT ࢔ࣝࢦࣜࢬ࣒ࡣ௨
ୗࡢࡼ࠺࡟࡞ࡿࠋ Step 1: ݊ଶ ݊ଷ ⤌ࡢ݊ଵ Ⅼ multicolumn ᐇᩘ FFT

௡భ ିଵ

௝ ௞

‫ݔ‬ଵ (݇ଵ , ݇ଶ , ݇ଷ ) = ෍ ‫݆(ݔ‬ଵ , ݆ଶ , ݆ଷ ) ߱௡భభ భ௝భ ୀ଴ Step 2: ㌿⨨‫ݔ‬ଶ (݆ଶ , ݆ଷ , ݇ଵ ) = ‫ݔ‬ଵ (݇ଵ , ݆ଶ , ݆ଷ )

 Step 3: ݊ଷ ή (݊ଵ /2 + 1)⤌ࡢ݊ଶ Ⅼ multicolumn 」⣲ FFT
௡మ ିଵ

௝ ௞

‫ݔ‬ଷ (݇ଶ , ݆ଷ , ݇ଵ ) = ෍ ‫ݔ‬ଶ (݆ଶ , ݆ଷ , ݇ଵ ) ߱௡మమ మ௝మ ୀ଴ Step 4: ㌿⨨‫ݔ‬ସ (݆ଷ , ݇ଵ , ݇ଶ ) = ‫ݔ‬ଷ (݇ଶ , ݆ଷ , ݇ଵ )

 Step 5: (݊ଵ /2 + 1) ή ݊ଶ ⤌ࡢ݊ଷ Ⅼ multicolumn 」⣲ FFT
௡య ିଵ

௝ ௞

‫ݔ‬ହ (݇ଷ , ݇ଵ , ݇ଶ ) = ෍ ‫ݔ‬ସ (݆ଷ , ݇ଵ , ݇ଶ ) ߱௡యయ య௝య ୀ଴ Step 6: ㌿⨨‫݇(ݕ‬ଵ , ݇ଶ , ݇ଷ ) = ‫ݔ‬ହ (݇ଷ , ݇ଵ , ݇ଶ )

 Step 1 ࡛ࡣࠊ݊ଶ ݊ଷ⤌ࡢ݊ଵ Ⅼ multicolumn 」⣲ FFT ࠾ࡼࡧᘧ(5)ࠊ(6)ࢆ⏝࠸࡚ࠊ݊ଶ ݊ଷ⤌ࡢ݊ଵ Ⅼ

multicolumn ᐇᩘ FFT ࢆィ⟬ࡍࡿࡇ࡜ࡀ࡛ࡁࡿࠋࡶࡋ݊ଶ ݊ଷ ࡀ 2 ࡛๭ࡾษࢀ࡞࠸ሙྜࠊṧࡾࡢ݊ଵⅬᐇᩘ FFT ࡣࠊධຊࢹ࣮ࢱࡢ⹫ᩘ㒊ࡀ 0 ࡛࠶ࡿ݊ଵ Ⅼ」⣲ FFT ࢆ⏝࠸࡚ィ⟬ࡍࡿࠋStep 1 ࡟࠾ࡅࡿ݊ଵ Ⅼᐇᩘ FFT ࡢฟຊࢹ࣮ࢱࡣ conjugate-even ᑐ⛠ᛶ࡟ᚑ࠺ࡢ࡛ࠊ(݊ଵ /2 + 1)Ⅼࡢ」⣲ฟຊࢹ࣮ࢱࡢࡳࢆグ᠈ࡍࢀࡤ༑ศ࡛࠶ࡿࠋ

- 180 -

─ 180 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩ᅗ 20 1 ḟඖศ๭ࢆ⏝࠸ࡓሙྜࡢ୪ิ 3 ḟඖᐇᩘ FFT
 ᅗ 20 ࡣࠊz ㍈ୖ࡛ึᮇࢹ࣮ࢱࢆ 1 ḟඖศ๭ࡋࡓ୪ิ 3 ḟඖᐇᩘ FFT ࢆ♧ࡋ࡚࠸ࡿࠋࡇࢀ
ࡣࠊ୪ิ 3 ḟඖᐇᩘ FFT ࡟࠾ࡅࡿ඾ᆺⓗ࡞ࢹ࣮ࢱศᩓ᪉ἲ࡛࠶ࡿࠋ2 ḟඖศ๭ࢆ⏝࠸ࡓ୪ิ
3 ḟඖᐇᩘ FFT ࡢᥦ᱌ࡍࡿᐇ⿦ࡣࠊDFT ࡢඹᙺᑐ⛠≉ᛶ࠾ࡼࡧ 2 ḟඖศ๭ࢆ⏝࠸ࡓ୪ิ 3 ḟ
ඖ」⣲ FFT ࡟ᇶ࡙࠸࡚࠸ࡿࠋ

ᅗ 21 2 ḟඖศ๭ࢆ⏝࠸ࡓሙྜࡢ୪ิ 3 ḟඖᐇᩘ FFT
 ᅗ 21 ࡣࠊy ㍈࡜ z ㍈ࡢึᮇࢹ࣮ࢱࢆ 2 ḟඖศ๭ࡋࡓ୪ิ 3 ḟඖᐇᩘ FFT ࢆ♧ࡋ࡚࠸ࡿࠋ
Intel Advanced Vector Extensions 512㸦Intel AVX-512㸧࿨௧ࢆ౑⏝ࡋ࡚ FFT ࣮࢝ࢿࣝࢆ࣋ࢡࢺ
ࣝ໬ࡋࡓࠋOpenMP ࢆ౑⏝ࡋ࡚ multicolumn FFT ࢆ୪ิ໬ࡍࡿ࡜ࠊྛ FFT ࢫࢸࢵࣉࡢ᭱እഃࣝ
࣮ࣉࡀ」ᩘࡢࢫࣞࢵࢻ࡟ศᩓࡉࢀࡿࠋࡇࡢሙྜࠊ᭱እഃ࣮ࣝࣉ㛗ࡣ Intel Xeon Phi ࣉࣟࢭࢵࢧ
࡟ᑐࡋ࡚༑ศ࡞୪ิᛶࡀ࡞࠸ྍ⬟ᛶࡀ࠶ࡿࡀࠊOpenMP ࡢ collapse ⠇ࢆ౑⏝ࡍࡿࡇ࡜࡟ࡼࡗ
࡚ࠊ᭱እഃ࣮ࣝࣉࡢ୪ิᛶࢆᣑᙇࡍࡿࡇ࡜ࡀ࡛ࡁࡿࠋᛶ⬟ホ౯࡟࠶ࡓࡗ࡚ࡣࠊᥦ᱌ࡍࡿ୪ิ 3 ḟඖᐇᩘ FFT ࡛࠶ࡿ FFTE㸦version 7.0ࠊ2 ḟඖศ๭㸧ࡢᛶ⬟ࢆ FFTE㸦version 7.0ࠊ1 ḟඖศ๭㸧ࠊFFTW㸦version 3.3.8㸧࠾ࡼࡧ P3DFFT㸦version
2.7.7㸧࡜ẚ㍑ࡋࡓࠋ ᐃ࡟㝿ࡋ࡚ࡣࠊweak scaling ࡜ strong scaling ࡟࠾ࡅࡿᐇᩘ FFT ࢆ㐃⥆
10 ᅇᐇ⾜ࡋࠊࡑࡢᖹᆒࡢ⤒㐣᫬㛫ࢆ ᐃࡋࡓࠋ࡞࠾ࠊFFT ࡢィ⟬ࡣಸ⢭ᗘᐇᩘ࡛⾜࠸ࠊ୕ゅ㛵ᩘࡢࢸ࣮ࣈࣝࡣ࠶ࡽ࠿ࡌࡵసࡾ⨨ࡁ࡜ࡋ࡚࠸ࡿࠋධຊ࡜ฟຊ࡛ࡣྠࡌࢹ࣮ࢱศᩓࢆ౑⏝ࡋ
ࡓࠋFFTW ࡛ࡣࠊ”measure” planner ࢆ౑⏝ࡋࡓࠋXeon Phi ࢡࣛࢫࢱ࡜ࡋ࡚ࠊ᭱ඛ➃ඹྠ HPC
ᇶ┙᪋タ㸦JCAHPC㸧࡟タ⨨ࡉࢀ࡚࠸ࡿ Oakforest-PACS㸦8208 ࣀ࣮ࢻ㸧ࡢ 1㹼2048 ࣀ࣮ࢻࢆ⏝࠸ࡓࠋFFTE ࠾ࡼࡧ P3DFFT ࡟ᑐࡋ࡚ࡣࠊ
ࢥࣥࣃ࢖ࣛࡣ Intel Fortran Compiler version 18.0.1.163- 181 -

─ 181 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩ࢆ⏝࠸ࠊࢥࣥࣃ࢖ࣝ࢜ࣉࢩࣙࣥࡣ͇mpiifort -O3 -xMIC-AVX512 -qopenmp͇ࢆᣦᐃࡋࡓࠋFFTW
࠾ࡼࡧ P3DFFT ࡟ᑐࡋ࡚ࡣࠊࢥࣥࣃ࢖ࣛࡣ Intel C Compiler version 18.0.1.163 ࢆ⏝࠸ࠊࢥࣥࣃ
࢖ࣝ࢜ࣉࢩࣙࣥࡣ͇mpiicc -O3 -xMIC-AVX512 -qopenmp͇ࢆᣦᐃࡋࡓࠋMPI ࣛ࢖ࣈࣛࣜࡣ IntelMPI 2018.1.163 ࢆ⏝࠸ࡓࠋྛࣀ࣮ࢻ࠶ࡓࡾࡢ MPI ࣉࣟࢭࢫᩘࡣ 4ࠊྛ MPI ࣉࣟࢭࢫ࠶ࡓࡾࡢ
ࢫࣞࢵࢻᩘࡣ 64 ࡟タᐃࡋࠊ⎔ቃኚᩘ͆KMP AFFINITY=balanced͇ࢆタᐃࡋ࡚ flat/quadrant ࣮ࣔࢻ࡛ MCDRAM ࡢࡳࢆ⏝࠸࡚ᐇ⾜ࡋࡓࠋܰ = 2௠ Ⅼᐇᩘ FFT ࡢ GFlops ್ࡣ2.5ܰ log ଶ ܰࡼࡾ⟬ฟࡋ࡚࠸ࡿࠋ

ᅗ 22 ୪ิ 3 ḟඖᐇᩘ FFT ࡢ weak scaling ᛶ⬟㸦ܰ = 256 × 512 × 512 × MPI ࣉࣟࢭࢫᩘ㸧

ᅗ 23 ୪ิ 3 ḟඖᐇᩘ FFT ࡢ strong scaling ᛶ⬟㸦ܰ = 256 × 512 × 512㸧

- 182 -

─ 182 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩ᅗ 24 FFTE 7.0 ࡢᐇ⾜᫬㛫ࡢෆヂ㸦ܰ = 1024ଷࠊ512 MPI ࣉࣟࢭࢫ㸧୪ิ 3 ḟඖᐇᩘ FFT ࡢ weak scaling ᛶ⬟㸦ܰ = 256 × 512 × 512 × MPI ࣉࣟࢭࢫᩘ㸧ࢆᅗ

22 ࡟♧ࡍࠋᅗ࠿ࡽศ࠿ࡿࡼ࠺࡟ࠊ64ࠊ128 ࠾ࡼࡧ 8192 MPI ࣉࣟࢭࢫ࡟࠾࠸࡚ FFTE㸦1 ḟඖศ๭)ࡣ FFTE㸦2 ḟඖศ๭㸧ࡼࡾࡶ㧗㏿࡛࠶ࡿࡇ࡜ࡀศ࠿ࡿࠋࡇࢀࡣࠊ1 ḟඖศ๭࡟࠾ࡅࡿ඲
యࡢ㏻ಙ㔞ࡣ 2 ḟඖศ๭ࡢ⣙༙ศ࡛࠶ࡿࡢࡀཎᅉ࡛࠶ࡿ࡜⪃࠼ࡽࢀࡿࠋࡲࡓࠊFFTE㸦2 ḟඖศ๭㸧ࡣ 1ࠊ16 MPI ࣉࣟࢭࢫࢆ㝖࠸࡚ FFTW ࡼࡾࡶ㧗㏿࡛࠶ࡾࠊ8192 MPI ࣉࣟࢭࢫࢆ㝖࠸࡚
P3DFFT ࡼࡾࡶ㧗㏿࡛࠶ࡿࠋ୪ิ 3 ḟඖᐇᩘ FFT ࡢ strong scaling ᛶ⬟㸦ܰ = 256 × 512 × 512㸧ࢆᅗ 23 ࡟♧ࡍࠋᅗ࠿ࡽ

ศ࠿ࡿࡼ࠺࡟ࠊFFTE㸦2 ḟඖศ๭㸧ࡣ 64ࠊ256 MPI ࣉࣟࢭࢫ࡟࠾࠸࡚ FFTE㸦1 ḟඖศ๭㸧ࡼࡾࡶ㧗㏿࡛࠶ࡿࠋࡇࢀࡣ 2 ḟඖศ๭ࡢ᪉ࡀ 1 ḟඖศ๭ࡼࡾࡶ㏻ಙࣞ࢖ࢸࣥࢩࡢᙳ㡪ࡀᑡ࡞࠸ࡇ࡜ࡀཎᅉ࡛࠶ࡿ࡜⪃࠼ࡽࢀࡿࠋࡲࡓࠊFFTE㸦2 ḟඖศ๭㸧ࡣ 1ࠊ256 MPI ࣉࣟࢭࢫ࡟࠾࠸࡚FFTW ࡼࡾࡶ㧗㏿࡛࠶ࡾࠊP3DFFT ࡼࡾࡶ㧗㏿࡛࠶ࡿࠋ

FFTE 7.0 ࡢᐇ⾜᫬㛫ࡢෆヂ㸦ܰ = 1024ଷࠊ512 MPI ࣉࣟࢭࢫ㸧ࢆᅗ 24 ࡟♧ࡍࠋᅗ࠿ࡽศ࠿

ࡿࡼ࠺࡟ࠊ2 ḟඖศ๭ࡢ㏻ಙ᫬㛫ࡣ 1 ḟඖศ๭ࡼࡾࡶ▷ࡃ࡞ࡗ࡚࠸ࡿࠋࡇࢀࡣ 1 ḟඖศ๭࡟࠾ࡅࡿ all-to-allv ㏻ಙࡢ࣓ࢵࢭ࣮ࢪࢧ࢖ࢬࡀ 32KB ࡛࠶ࡿࡢ࡟ᑐࡋ࡚ࠊ2 ḟඖศ๭࡟࠾ࡅࡿ allto-all(v)㏻ಙࡢ࣓ࢵࢭ࣮ࢪࢧ࢖ࢬࡀ 16MB ࡛࠶ࡿࡢࡀཎᅉ࡛࠶ࡿ࡜⪃࠼ࡽࢀࡿࠋ
Intel AVX-512 ࿨௧ࢆ⏝࠸ࡓ」ᩘࡢᩚᩘ㝖⟬ࡢ㧗㏿໬㸦㧗ᶫ㸧ᩚᩘ㝖⟬ࡣከࡃࡢ࢔ࣉࣜࢣ࣮ࢩ࡛ࣙࣥᗈࡃ⏝࠸ࡽࢀ࡚࠸ࡿ₇⟬ࡢ୍ࡘ࡛࠶ࡿࠋ୍⯡ⓗ࡟㝖⟬ࡣຍῶ஌⟬࡟ẚ࡭࡚㐜࠸ࡇ࡜ࡀ▱ࡽࢀ࡚࠸ࡿࠋ
ከࡃࡢࣉࣟࢭࢵࢧ࡛ࡣᩚᩘຍῶ஌⟬ࡢ SIMD
࿨௧ࡀࢧ࣏࣮ࢺࡉࢀ࡚࠸ࡿࡀࠊᩚᩘ㝖⟬ࡢ SIMD ࿨௧ࢆࢧ࣏࣮ࢺࡋ࡚࠸ࡿࣉࣟࢭࢵࢧࡣ࡯࡜
ࢇ࡝Ꮡᅾࡋ࡞࠸ࡢࡀ⌧≧࡛࠶ࡿࠋIntel 64 ࿨௧ࢭࢵࢺࡢ div ࿨௧ࡣ 128 ࣅࢵࢺࡢ⿕㝖ᩘ࡜ 64 ࣅࢵࢺࡢ㝖ᩘ࡟ᑐࡍࡿ➢ྕ࡞ࡋᩚᩘ㝖⟬ࢆ⾜࠺ࠋIntel SVML㸦Short Vector Mathematical Library㸧࡟ࡣ࣋ࢡࢺࣝ໬ࡉࢀࡓᩚᩘ
- 183 -

─ 183 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩㝖⟬ࡢ⤌ࡳ㎸ࡳ㛵ᩘࡀྵࡲࢀ࡚࠸ࡿࡀࠊ⿕㝖ᩘ࠾ࡼࡧ㝖ᩘࡣ 8 ࣅࢵࢺ࠿ࡽ 64 ࣅࢵࢺࡲ࡛࡛࠶
ࡾࠊ128 ࣅࢵࢺࡢ⿕㝖ᩘ࡜ 64 ࣅࢵࢺࡢ㝖ᩘ࡟ᑐࡍࡿ➢ྕ࡞ࡋᩚᩘ㝖⟬࡟ࡣᑐᛂࡋ࡚࠸࡞࠸ࠋ
ࡲࡓࠊ㏫ᩘࢆ⏝࠸࡚ᩚᩘ㝖⟬ࢆồࡵࡿ࢔ࣝࢦࣜࢬ࣒ࡀᥦ᱌ࡉࢀ࡚࠸ࡿࡀࠊ࣋ࢡࢺࣝ໬ࡣ⪃៖ࡉࢀ࡚࠸࡞࠸ࠋࡑࡇ࡛ࠊIntel AVX-512 ࿨௧ࢆ⏝࠸࡚」ᩘࡢ 128 ࣅࢵࢺࡢ⿕㝖ᩘ࡜ 64 ࣅࢵࢺࡢ㝖ᩘ࡟ᑐࡍࡿ➢ྕ࡞ࡋᩚᩘ㝖⟬ࢆ㧗㏿໬ࡋࠊᛶ⬟ホ౯ࢆ⾜ࡗࡓࠋ➢ྕ࡞ࡋᩚᩘ㝖⟬ࡣ⿕㝖ᩘࢆ‫ࠊܣ‬㝖ᩘࢆ‫ࠊ࡜ࡿࡍ࡜ ܤ‬ၟܳ = ‫ܣہ‬/‫ࡧࡼ࠾ۂܤ‬๫వܴ = ‫ ܣ‬െ‫( ܳܤ‬0 ൑ ܴ < ‫࡛)ܤ‬ᐃ⩏ࡉࢀࡿࠋᥦ᱌ᡭἲࡣ」ᩘࡢ 128 ࣅࢵࢺࡢ⿕㝖ᩘ࡜ 64 ࣅࢵࢺࡢ㝖ᩘ࡟ᑐࡍࡿ➢ྕ࡞ࡋᩚᩘ㝖⟬ࢆ෌ᖐ㝖⟬࡟ࡼࡾ⾜࠺ࠋAlgorithm 1 ࡟෌ᖐ㝖⟬࢔ࣝࢦࣜࢬ࣒ࢆ♧ࡍࠋ⿕㝖ᩘࡀ 128 ࣅࢵࢺ࡛㝖ᩘ࠾ࡼࡧၟࡀ 64 ࣅࢵࢺࡢ➢ྕ࡞ࡋᩚᩘ㝖⟬ࡣࠊAlgorithm 1 ࡟࠾࠸࡚ߚ = 2ଷଶ ࠊ݊ = ݉ = 2ࠊ‫ ߚ < ܣ‬௠ ‫ࠊ࡜ࡿࡍ࡜ܤ‬96 ࣅࢵࢺࡢ⿕㝖ᩘ࡜ 64 ࣅࢵࢺࡢ㝖ᩘ࡟ᑐࡍࡿ
➢ྕ࡞ࡋᩚᩘ㝖⟬ࢆ 2 ᅇ⾜࠺ࡇ࡜࡛ィ⟬ࡍࡿࡇ࡜ࡀ࡛ࡁࡿࠋ
Algorithm 1෌ᖐ㝖⟬࢔ࣝࢦࣜࢬ࣒

96 ࣅࢵࢺࡢ⿕㝖ᩘ࡜ 64 ࣅࢵࢺࡢ㝖ᩘ࡟ᑐࡍࡿ➢ྕ࡞ࡋᩚᩘ㝖⟬ࢆ⾜࠺㝿࡟ࡣࠊୖ఩ 64 ࣅࢵࢺࡢ⿕㝖ᩘ࡜ୖ఩ 32 ࣅࢵࢺࡢ㝖ᩘ࡟ᑐࡍࡿ➢ྕ࡞ࡋᩚᩘ㝖⟬࡛ၟࢆ㏆ఝࡍࡿࠋ㝖ᩘ‫ࡀܤ‬ߚ ௡ /2 ൑ ‫ ߚ < ܤ‬௡ ࡟ṇつ໬ࡉࢀ࡚࠸ࡿሙྜࠊṇ☜࡞ၟࢆܳ࡜ࡍࡿ࡜ၟࡢ㏆ఝ್ࡣܳࠊܳ + 1ࠊܳ +2ࡢ࠸ࡎࢀ࠿࡟࡞ࡿࠋࡋࡓࡀࡗ࡚ࠊ๫వܴ = ‫ ܣ‬െ ‫ࡀܳܤ‬0 ൑ ܴ < ‫ࡢܤ‬⠊ᅖ࡟཰ࡲࡿࡼ࠺࡟ၟࡢ㏆ఝ್ࢆ⿵ṇࡍࡿࡇ࡜࡟ࡼࡾṇ☜࡞ၟࡀᚓࡽࢀࡿࠋᛶ⬟ホ౯࡟࠶ࡓࡗ࡚ࡣࠊ」ᩘࡢ 128 ࣅࢵࢺࡢ⿕㝖ᩘ࡜ 64 ࣅࢵࢺࡢ㝖ᩘ࡟ᑐࡍࡿ➢ྕ࡞ࡋᩚᩘ㝖⟬ࡢᛶ⬟ࢆࠊᥦ᱌ᡭἲ࡜ Intel 64 ࿨௧ࢭࢵࢺࡢ div ࿨௧࡛ẚ㍑ࡋࡓࠋ㝖ᩘࡣ1~2଺ସ െ 1ࡢ⠊ᅖࡢ஘ᩘ࡜ࡋࠊ⿕㝖ᩘࡣ0~2ଵଶ଻ െ 1ࡢ⠊ᅖࡢ஘ᩘ࡛ၟࡀ2଺ସ െ 1௨ୗ࡟࡞ࡿࡶࡢ࡜ࡋࡓࠋ256せ⣲ࡢ➢ྕ࡞ࡋᩚᩘ㝖⟬ࢆ 100 ୓ᅇᐇ⾜ࡋࠊࡑࡢᖹᆒࡢ⤒㐣᫬㛫࠿ࡽ 1 ⛊࠶ࡓࡾࡢ➢ྕ࡞ࡋᩚᩘ㝖⟬ᅇᩘ㸦Mops㸧ࢆ⟬ฟࡋࡓࠋ- 184 -

─ 184 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩

⾲3Intel Xeon Phi 7250 ࡟࠾ࡅࡿ」ᩘࡢ 128 ࣅࢵࢺࡢ⿕㝖ᩘ࡜ 64 ࣅࢵࢺࡢ㝖ᩘ࡟ᑐࡍࡿ➢ྕ࡞ࡋᩚᩘ㝖⟬ࡢᛶ⬟ᛶ⬟㸦Mops㸧ᥦ᱌ᡭἲ

32.763

div ࿨௧

13.985ホ౯⎔ቃ࡜ࡋ࡚ࠊIntel Xeon Phi 7250 ࡢ 1 ࢥ࢔ࠊ1 ࢫࣞࢵࢻࢆ⏝࠸ࡓࠋࢥࣥࣃ࢖ࣛࡣ Intel C
compiler 18.0.3.222 ࢆ⏝࠸ࠊࢥࣥࣃ࢖ࣝ࢜ࣉࢩࣙࣥࡣ”icc -O3 -xMIC-AVX512”ࢆ⏝࠸ࡓࠋ
Intel Xeon Phi 7250 ࡟࠾ࡅࡿ」ᩘࡢ 128 ࣅࢵࢺࡢ⿕㝖ᩘ࡜ 64 ࣅࢵࢺࡢ㝖ᩘ࡟ᑐࡍࡿ➢ྕ࡞ࡋᩚᩘ㝖⟬ࡢᛶ⬟ࢆ⾲ 3 ࡟♧ࡍࠋ⾲࠿ࡽᥦ᱌ᡭἲࡀ div ࿨௧ࡼࡾࡶ⣙ 2.34 ಸ㧗㏿࡛࠶ࡿࡇ࡜
ࡀศ࠿ࡿࠋ࢚ࢡࢫࢺ࣮࣒ࣜࣅࢵࢢࢹ࣮ࢱࡢᇶ┙ᢏ⾡㸦ᘓ㒊㸧࢚ࢡࢫࢺ࣮࣒ࣜࣅࢵࢢࢹ࣮ࢱ㸦EBD㸧࢔ࣉࣜࢣ࣮ࢩࣙࣥࡢᐇ⾜࡟ồࡵࡽࢀࡿࠊᩘ୓㹼ᩘ༑୓ࣉࣟࢭࢫ࠿ࡽࡢ୪ิ࢔ࢡࢭࢫࢆ᝿ᐃࡋࡓ IOPSࠊࣉࣟࢭࢫᩘ࡟ẚ౛ࡋࡓㄞ㎸ࠊ᭩㎸࢔ࢡࢭࢫࣂ
ࣥࢻᖜᛶ⬟ࢆ┠ᶆ࡜ࡋ࡚ࠊศᩓ࢜ࣈࢪ࢙ࢡࢺࢫࢺ࢔ࡢ◊✲ࢆ⾜ࡗ࡚࠸ࡿࠋ
࢔ࣉࣜࢣ࣮ࢩࣙࣥࢢ࣮ࣝࣉ࡜ࡢࢥࢹࢨ࢖ࣥ࡟ࡼࡾࠊ࢜ࣈࢪ࢙ࢡࢺࢫࢺ࢔࡟ᑐࡍࡿ࢔ࢡࢭࢫ
࡟࠾࠸࡚ࡶ POSIX ࢖ࣥࢱ࣮ࣇ࢙࣮ࢫࡀ᭷⏝࡛࠶ࡿࡇ࡜ࡀศ࠿ࡗࡓࠋࡑࡢࡓࡵࠊPOSIX ࢖ࣥࢱ࣮ࣇ࢙࣮ࢫ࡛ࡢ࢔ࢡࢭࢫࢆᐇ⌧ࡍࡿࡓࡵࠊศᩓ࣓ࢱࢹ࣮ࢱࢧ࣮ࣂ PPMDS ࡢ◊✲㛤Ⓨࢆ㐍ࡵࡓࠋPPMDS ࡣศᩓ࣮࢟ࣂ࣮ࣜࣗࢫࢺ࢔ࢆ⏝࠸ࡓศᩓ࣓ࢱࢹ࣮ࢱࢧ࣮ࣂ࡛࠶ࡿࠋPOSIX ࡛ᚲせ࡜࡞ࡿ㝵ᒙᆺࡢྡ๓✵㛫࡜ࡑࡢ᧯సࢆᐇ⌧ࡍࡿࡓࡵ࡟ࡣࠊ」ᩘ࣮࢟ࡢኚ᭦ࢆ࢔ࢺ࣑ࢵࢡ࡟⾜࠺ᚲせࡀ࠶ࡿࠋPPMDS ࡛ࡣࡇࡢၥ㢟࡟ᑐࡋࠊືⓗࢯࣇࢺ࢙࢘࢔ࢺࣛࣥࢨࢡࢩࣙࢼ࣓ࣝࣔࣜࢆ
࣮࣋ࢫ࡜ࡋࡓࢺࣛࣥࢨࢡࢩࣙࢼ࣮ࣝ࢟ࣂ࣮ࣜࣗ࣌࢔ࢆ⏝࠸࡚ࠊศᩓࢺࣛࣥࢨࢡࢩࣙࣥࢆᐇ⌧ࡋࡓࠋ㝵ᒙᆺࡢࢹ࢕ࣞࢡࢺࣜᵓ㐀ࡣࠊぶࢹ࢕ࣞࢡࢺࣜ ID ࡜࢚ࣥࢺࣜྡࢆ࣮࢟࡜ࡍࡿ࣮࢟ࣂࣜ
࣮࡛ࣗ⟶⌮ࡍࡿࠋ࣮࢟ࣂ࣮ࣜࣗ࣌࢔ࡣࣁࢵࢩࣗ࡟ࡼࡾศᩓࡉࢀࡿࠋࢹ࢕ࣞࢡࢺࣜࣜࢫࢸ࢕ࣥࢢࡣࠊぶࢹ࢕ࣞࢡࢺࣜ ID ࡢ๓᪉୍⮴᳨⣴࡛⾜࠺ࠋࢹ࢕ࣞࢡࢺࣜࡢ⛣ືࡸ๐㝖࡞࡝ࡢ᧯సࡣࠊ
」ᩘࡢ࣓ࢱࢹ࣮ࢱࢧ࣮ࣂ࡟᱁⣡ࡉࢀࡿ࣮࢟ࣂ࣮ࣜࣗ࣌࢔ࢆ୍㈏ࡋ࡚ኚ᭦ࡍࡿᚲせࡀ࠶ࡾࠊࡑ
ࡢࡓࡵ࡟ศᩓࢺࣛࣥࢨࢡࢩࣙࣥࡀᚲせ࡜࡞ࡿࠋᮏタィ࡟ᇶ࡙࠸ࡓ PPMDS ࢆᐇ⿦ࡋࠊᛶ⬟ホ౯ࢆ⾜ࡗࡓࠋ

- 185 -

─ 185 ─file creation per second⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩

File creations for a single directory

70,00060,000

1 serv

50,0002 servs40,0003 servs

30,0004 servs

20,0008 servs

10,0000

14 servs
0

11

22

ᅗ 25

33

44

55

66

the number of clients

77

88

99

࣓ࢱࢹ࣮ࢱࢧ࣮ࣂࡢࢫࢣ࣮ࣛࣅࣜࢸ࢕

ᅗ 25 ࡟ࢡࣛ࢖࢔ࣥࢺᩘࢆቑࡸࡋࡓ᫬ࡢࣇ࢓࢖ࣝసᡂᛶ⬟ࢆ♧ࡍࠋࣇ࢓࢖ࣝసᡂᛶ⬟ࡣ 1 ⛊㛫࡟సᡂࡋࡓࣇ࢓࢖ࣝᩘࢆ♧ࡋ࡚࠸ࡿࠋ࣓ࢱࢹ࣮ࢱࢧ࣮ࣂᩘࢆቑࡸࡋ࡚ᛶ⬟ࢆホ౯ࡋࡓ࡜ࡇ
ࢁࠊ࣓ࢱࢹ࣮ࢱࢧ࣮ࣂᩘࢆቑࡸࡍ࡜ᛶ⬟ࡀྥୖࡋࠊࢫࢣ࣮ࣛࣈࣝ࡞ᛶ⬟ࢆ♧ࡋࡓࠋᮏᛶ⬟ࡣࠊ௚ࡢศᩓ࣓ࢱࢹ࣮ࢱࢧ࣮ࣂࡢ IndexFS ࡟ẚ࡭ࢧ࣮ࣂ࠶ࡓࡾࡢᛶ⬟ࡀ㧗࠸ࠋᮏᡂᯝࡣ The Fifth
International Conference on Social Networks Analysis, Management and Security (SNAMS-2018)࡟ే
タࡋࡓ࣮࣡ࢡࢩࣙࢵࣉ࡟࠾࠸࡚Ⓨ⾲ࡋࠊ」ᩘ࠶ࡿ࣮࣡ࢡࢩࣙࢵࣉ඲య࡟࠾ࡅࡿ࣋ࢫࢺ࣮࣌ࣃ
࢔࣮࣡ࢻࢆཷ㈹ࡋࡓࠋ

ᴟ➃Ẽ㇟ண ㇦㞵࣭✺㢼࣭㧗ࢆᣅࡃࣅࢵࢢࢹ࣮ࢱᶵᲔᏛ⩦ᇶ┙ࡢ◊✲㸦ᘓ㒊㸧࡞࡝ࡢᴟ➃Ẽ㇟ࡣே㢮࡟⏒኱࡞⿕ᐖࢆࡶࡓࡽࡍࡀࠊࡑࡢணࡣᴟ➃Ẽ㇟࡟㛵ࡍࡿ⭾኱࡞▱㆑ࡀᚲせ࡛࠶ࡿࠋᮏ◊✲࡛ࡣࠊࡑࡢ▱㆑ࢆຠ⋡ⓗ࡟⏕ᡂࡍࡿᶵᲔᏛ⩦ᇶ┙ࡢᵓ⠏ࢆ┠ⓗ࡜ࡍࡿࠋᖹᡂ 30 ᖺᗘࡣࠊᴟ➃Ẽ㇟࡟㛵ࡍࡿ▱㆑ࢆ⋓ᚓࡍࡿࡓࡵ㸪῝ᒙᏛ⩦ࡢຠ⋡໬ࢆᅗࡗࡓࠋ῝ᒙᏛ⩦࡛ࡣࠊᏛ⩦ࡢຠ⋡ࢆ࠶ࡆࡿࡓࡵࠊ」ᩘࡢᏛ⩦ࢆྠ᫬࡟⾜࠺࣑ࢽࣂࢵ
ࢳᏛ⩦ࡀ⾜ࢃࢀࡿࠋࡋ࠿ࡋ࡞ࡀࡽࠊࡇࡢ࣑ࢽࣂࢵࢳࡢࢧ࢖ࢬ࡟ࡼࡗ࡚ GPU ࡢ฼⏝ຠ⋡ࡀኚࢃࡾࠊ᭱㐺࡞࣑ࢽࣂࢵࢳࢧ࢖ࢬࢆタᐃࡍࡿࡢࡣヨ⾜㘒ㄗࡀᚲせ࡛࠶ࡗࡓࠋࡑࡢࡓࡵࠊࡇࡢヨ⾜㘒ㄗࢆ⮬ື໬ࡍࡿࡓࡵࡢ◊✲ࢆ⾜ࡗࡓࠋGPU ࡢ฼⏝ຠ⋡ࡀྥୖࡍࡿ㛫ࡣ࣑ࢽࣂࢵࢳࢧ࢖ࢬࢆ
ቑࡸࡋ࡚࠸ࡃ࡜࠸࠺༢⣧࡞᪉ἲ࡛ࡣࠊࢹ࣮ࢱࢧ࢖ࢬࡀ኱ࡁࡃ࡞ࡾࢹ࣮ࢱࡢධຊࡀ࣎ࢺࣝࢿࢵ
ࢡ࡜࡞ࡿ࡞࡝ࠊGPU ࡢィ⟬௨እࡢ࡜ࡇࢁࡀ࣎ࢺࣝࢿࢵࢡ࡜࡞ࡿࢣ࣮ࢫ࡟࠾࠸࡚᭱㐺࡞್ࢆ᥎ᐃࡍࡿࡇ࡜ࡀᅔ㞴࡛࠶ࡗࡓࠋࡑࡢࡓࡵࠊ1 ࢚࣏ࢵࢡᙜࡓࡾࡢᖹᆒィ⟬᫬㛫ࡀ᭱ᑠ࡜࡞ࡿࡼ࠺࡟
࣑ࢽࣂࢵࢳࢧ࢖ࢬࢆቑࡸࡋ࡚࠸ࡃᡭἲࡢᥦ᱌ࢆ⾜ࡗࡓࠋᮏᡭἲ࡟ࡼࡾࠊGPU ࡢィ⟬௨እࡢ࡜ࡇࢁࡀ࣎ࢺࣝࢿࢵࢡ࡜࡞ࡿࢣ࣮ࢫ࡟࠾࠸࡚ࡶ༑ศ࡞࣑ࢽࣂࢵࢳࢧ࢖ࢬࢆ᥎ᐃࡍࡿࡇ࡜ࡀྍ⬟࡜࡞ࡗࡓࠋ௒ᚋࡣࠊ≉࡟Ꮫ⩦ࢹ࣮ࢱࡀ኱ࡁࡃ࡞ࡗࡓሙྜࡢ᳨ウࢆ㐍ࡵࡿࠋᏛ⩦ࢹ࣮ࢱࡀ኱ࡁ
- 186 -

─ 186 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩ࡃ࡞ࡿ࡜ࠊᏛ⩦ࢹ࣮ࢱࢆ࠸࠿࡟㧗㏿࡟ධຊࡍࡿ࠿ࡀၥ㢟࡜࡞ࡿࠋࡇࢀࡲ࡛ࡢ◊✲࡛ࡣࠊ࣓ࣔ
ࣜ࠿ࡽࡢධຊࢆ㧗㏿໬ࡍࡿ◊✲ࡣ࠶ࡿࡀࠊࢫࢺ࣮ࣞࢪ࠿ࡽࡢධຊࢆ㧗㏿໬ࡍࡿ◊✲ࡣᑡ࡞࠸ࠋ
ࢫࢺ࣮ࣞࢪ࠿ࡽࡢධຊࢆ㧗㏿໬ࡍࡿ◊✲ࢆࡍࡍࡵ࡚࠸ࡃࠋ

ࣅࢵࢢࢹ࣮ࢱࢧ࢖࢚ࣥࢫ࡟㛵ࡍࡿ◊✲㸦ᘓ㒊㸧ࣅࢵࢢࢹ࣮ࢱࢆ⏝࠸ࡓࢧ࢖࢚ࣥࢫࡢ◊✲࡜ࡋ࡚ࠊࡍࡤࡿᮃ㐲㙾ࡢ Hyper Sprime-Cam㸦HSC㸧
࡛᧜ᙳࡉࢀࡓኳయࢹ࣮ࢱࡢࣃ࢖ࣉࣛ࢖ࣥࢹ࣮ࢱฎ⌮ࡢ㧗㏿໬ࢆ⾜ࡗࡓࠋHSC ࡣ 116 ᯛࡢ CCD࡛ᵓᡂࡉࢀࠊࡑࢀࡒࢀࡢ CCD ࡣ 4,2722,272 ࣆࢡࢭ࡛ࣝ࠶ࡿࠋ୍ᬌ࡛⣙ 300GB ࡢࢹ࣮ࢱࡀ
⏕ᡂࡉࢀࡿࠋࣃ࢖ࣉࣛ࢖ࣥࢹ࣮ࢱฎ⌮ࡣࡑࡢኳᩥࢹ࣮ࢱࢆኳᩥᏛࡢ◊✲࡛฼⏝࡛ࡁࡿࡼ࠺࡟
ࢹ࣮ࢱฎ⌮ࢆ⾜࠺ࡶࡢ࡛࠶ࡿࠋ㉸᪂ᫍ࡞࡝᫬㛫ⓗ࡞ኚ໬ࡢ㏿࠸≀యࢆ᳨ฟࡍࡿࡓࡵ࡟ࡣࠊ㧗㏿࡟ࢹ࣮ࢱゎᯒࢆ⾜࠺ᚲせࡀ࠶ࡿࠋ ࡇࢀࡲ࡛ࡢࣃ࢖ࣉࣛ࢖ࣥࢹ࣮ࢱゎᯒ࡛ࡣࠊࣇ࢓࢖ࣝࢩࢫࢸ࣒࡜ࡋ࡚ GPFS ࡀ⏝࠸ࡽࢀࠊ୪
ิฎ⌮ࣇ࣮࣒࣮ࣞ࣡ࢡ࡜ࡋ࡚ scatter-gather ࡢࡳ฼⏝ྍ⬟࡞ MPIpool ࡀ⏝࠸ࡽࢀ࡚࠸ࡓࡀࠊィ⟬ࣀ࣮ࢻᩘࢆቑࡸࡋࡓሙྜࠊ୪ิࢹ࣮ࢱゎᯒࡢᛶ⬟ࡀ㢌ᡴࡕ࡟࡞ࡿ࡜࠸࠺ၥ㢟ࡀ࠶ࡗࡓࠋࡇ
ࡢၥ㢟ࢆゎỴࡍࡿࡓࡵࠊィ⟬ࣀ࣮ࢻᩘࢆቑࡸࡋ࡚ࡶᛶ⬟ࡀ㢌ᡴࡕ࡟࡞ࡽ࡞࠸ Gfarm ࣇ࢓࢖ࣝࢩࢫࢸ࣒ࢆ⏝࠸ࡓࠋࡲࡓࢹ࣮ࢱゎᯒࡢ࣮࣡ࢡࣇ࣮ࣟ࡟ᑐࡋࠊPwrake ࢆ⏝࠸ࠊࢱࢫࢡ㛫ࡢ⣽⢏ᗘ࡞౫Ꮡᛶ࡟ࡼࡗ࡚ࢹ࣮ࢱゎᯒࢆ㐍ࡵࡿࡇ࡜࡟ࡼࡾࠊィ⟬ࣀ࣮ࢻࡢ CPU ࢥ࢔ࡢ฼⏝⋡ࡢྥୖ࡜ࢱࢫࢡࡢ࣮࢜ࣂࣛࢵࣉࢆᐇ⌧ࡋࠊࡇࡢၥ㢟ࡢゎỴࢆᅗࡗࡓࠋ

(1) MPIpool + GPFS
600

total
Bias
Dark
Flat
Frame
MosaicCoadd

500# of cores

400
300

6521 sec

200
100
0

0

1000

2000

3000

4000

5000

6000

time (sec)ᅗ 26 ࡇࢀࡲ࡛ࡢ᪉ἲ࡟ࡼࡿࢹ࣮ࢱゎᯒࡢᶍᵝ- 187 -

─ 187 ─7000

⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩ᅗ 26 ࡟୍ᬌࡢ 1/4 ࡢࢹ࣮ࢱࢆ⏝࠸ࡓࢹ࣮ࢱ࡟ᑐࡍࡿࡇࢀࡲ࡛ࡢ᪉ἲ࡟ࡼࡿࢹ࣮ࢱゎᯒࡢᶍᵝࢆ♧ࡍࠋᶓ㍈ࡣ⤒㐣᫬㛫࡛࠶ࡾࠊ⦪㍈ࡣྠ᫬࡟฼⏝ࡋ࡚࠸ࡿ CPU ࢥ࢔ᩘࢆ♧ࡋ࡚࠸ࡿࠋ
Frame ィ⟬࡛ࡣࠊ574 ࢥ࢔ࡢ඲࡚ࡢィ⟬ࡀ⤊஢ࡍࡿࡢࢆᚅࡗ࡚࠸ࡿ᫬㛫ࡀఱᗘ࠿⏕ࡌ࡚࠸ࡿࠋ
ࡲࡓྛࢹ࣮ࢱゎᯒࡢࢫࢸࢵࣉ࡛⤊஢ࢆᚅࡗ࡚࠸ࡿࠋࡇࢀࡽ࡟ࡼࡾࠊࢥ࢔ࡢ฼⏝⋡ࡀୗࡀࡗ࡚
࠸ࡿࠋ(5) Pwrake + Gfarm (task overlap, cpn=5 for Coadd)
600

total
Bias
Dark
Flat
Frame
MosaicCoadd

500# of cores

4002968 sec

300
200
100
0

0

1000

2000

3000

4000

5000

6000

7000

time (sec)ᅗ 27 ᥦ᱌ᡭἲ࡟ࡼࡿᐇ⾜ࡢᶍᵝ ᅗ 27 ࡟ᥦ᱌ᡭἲ࡟ࡼࡿᐇ⾜ࡢᶍᵝࢆ♧ࡍࠋFrame ィ⟬୰ࡢᚅࡕ᫬㛫ࡀ࡞ࡃ࡞ࡾࠊࡲࡓࡑࡢ
௚ࡢィ⟬ࡀ࣮࢜ࣂࣛࢵࣉࡋ࡚ᐇ⾜ࡉࢀ࡚࠸ࡿࡇ࡜࡟ࡼࡾࠊ኱ᖜ࡟ィ⟬᫬㛫ࡢ▷⦰ࡀྍ⬟࡜࡞ࡗ࡚࠸ࡿࠋࢹ࣮ࢱゎᯒࡢ᫬㛫࡟ࡘ࠸࡚ࡣࠊ2.2 ಸࡢ㧗㏿໬ࢆᐇ⌧ࡋࡓࠋࡇࡢᡂᯝࡣ IEEE
International Conference on Cluster Computing ࡟࠾࠸࡚Ⓨ⾲ࡋࡓࠋศᩓࣇ࢓࢖ࣝࢩࢫࢸ࣒ཬࡧࢢࣜࢵࢻ࣭ࢡࣛ࢘ࢻᢏ⾡࡟㛵ࡍࡿ◊✲㸦ᘓ㒊㸧ᩥ㒊⛉Ꮫ┬ࡀ㐍ࡵࡿ㠉᪂ⓗࣁ࢖ࣃࣇ࢛࣮࣐ࣥࢫࢥࣥࣆ࣮ࣗࢸ࢕ࣥࢢ࢖ࣥࣇࣛ㸦HPCI㸧ࡢ
HPCI ඹ⏝ࢫࢺ࣮ࣞࢪࠊ⣲⢏Ꮚ≀⌮Ꮫࢹ࣮ࢱඹ᭷ࢩࢫࢸ࣒ JLDG ࡢࢩࢫࢸ࣒ࢯࣇࢺ࢙࢘࢔࡜ࡋ
࡚ࡶ฼⏝ࡉࢀࡿ Gfarm ࣇ࢓࢖ࣝࢩࢫࢸ࣒ࡢ◊✲㛤Ⓨࢆ⾜ࡗࡓࠋᮏᖺᗘࡣࠊࣇ࢓࢖ࣝ」〇ࡀṇࡋࡃᏑᅾࡍࡿࡇ࡜ࢆࣃࢺ࣮ࣟࣝࡍࡿ᫬㛫ࡢຠ⋡໬ࠊࣇ࢓࢖ࣝ
ࢩࢫࢸ࣒ࣀ࣮ࢻࢆ୍᫬ⓗ࡟ㄞ㎸ࡋ࠿࡛ࡁ࡞࠸ࡼ࠺࡟࡛ࡁࡿࡼ࠺ᨵၿࢆ⾜ࡗࡓࠋ
Gfarm ࣇ࢓࢖ࣝࢩࢫࢸ࣒࡟ࡣࠊࣇ࢓࢖ࣝ」〇ࡢ᱁⣡ሙᡤ࡜ࡑࡢ」〇ᩘࢆᣦᐃࡍࡿᶵ⬟ࡀ࠶
ࡿࠋHPCI ඹ⏝ࢫࢺ࣮ࣞࢪ࡛ࡣࠊࡑࡢᶵ⬟ࢆ฼⏝ࡋ࡚ᮾᣐⅬ࡟」〇ࢆ 2ࠊすᣐⅬ࡟」〇ࢆ 2 㓄- 188 -

─ 188 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩⨨ࡋࠊᮾᣐⅬ࠶ࡿ࠸ࡣすᣐⅬࡔࡅࡢ∦ᣐⅬࡋ࠿฼⏝࡛ࡁ࡞࠸ሙྜࡶ HPCI ඹ⏝ࢫࢺ࣮ࣞࢪࡢ
㐠⏝ࢆྍ⬟࡜ࡋ࡚࠸ࡿࠋࡋ࠿ࡋ࡞ࡀࡽࠊࡇࡢࡼ࠺࡞タᐃࢆࡋ࡚࠸ࡿ᫬ࠊ࡜ࡃ࡟ࣇ࢓࢖ࣝᩘࡀ
ከࡃ࡞ࡗࡓ᫬࡟ࠊࣇ࢓࢖ࣝ」〇ࡀṇࡋࡃᏑᅾࡍࡿࡇ࡜ࢆࣃࢺ࣮ࣟࣝࡍࡿ᫬㛫ࡀ㛗ࡃ࡞ࡗ࡚ࡋ
ࡲ࠺ၥ㢟ࡀ࠶ࡗࡓࠋᮏࣃࢺ࣮࡛ࣟࣝࡣࠊ඲ࣇ࢓࢖ࣝ࡟ࡘ࠸࡚ࠊᣦᐃࡉࢀࡓࣇ࢓࢖ࣝࢩࢫࢸ࣒
ࢢ࣮ࣝࣉ࡟ᣦᐃࡉࢀࡓᩘࡢ」〇ࡀ㓄⨨ࡉࢀ࡚࠸ࡿ࠿ࢆࢳ࢙ࢵࢡࡋ࡚࠸ࡿࠋࡇࡢ㞟ྜ᧯స࡟ᑐ
ࡋࠊࣅࢵࢺ₇⟬ࢆ⏝࠸ࡿࡇ࡜࡟ࡼࡾฎ⌮㏿ᗘࡢຠ⋡໬ࢆᅗࡗࡓࠋࡇࢀ࡟ࡼࡾࠊࡇࢀࡲ࡛⣙ 1 ൨ࣇ࢓࢖ࣝࡢࣃࢺ࣮ࣟࣝ࡟ᑐࡋࠊ3 ᫬㛫࡯࡝࠿࠿ࡗ࡚࠸ࡓࡶࡢࡀ 5 ศ࡯࡝࡛⤊஢ࡍࡿࡼ࠺࡟࡞
ࡗࡓࠋࣇ࢓࢖ࣝࢩࢫࢸ࣒ࣀ࣮ࢻࡢಖᏲࡸ㞀ᐖⓎ⏕᫬࡞࡝ࠊ≉ᐃࡢࣇ࢓࢖ࣝࢩࢫࢸ࣒ࣀ࣮ࢻࢆㄞ㎸ࡢࡳࡋ࠿࡛ࡁ࡞࠸ࡼ࠺࡟ࡋࡓ࠸࡜࠸࠺せồࡀ࠶ࡿࠋࡇࢀࡲ࡛ࡶ㸪≉ᐃࡢࣇ࢓࢖ࣝࢩࢫࢸ࣒ࣀ
࣮ࢻ࡟ᑐࡋㄞ㎸ࡋ࠿࡛ࡁ࡞ࡃࡍࡿタᐃࡣ࠶ࡗࡓࡀࠊ඲࡚ࡢࣇ࢓࢖ࣝ」〇ࡀㄞ㎸ࡋ࠿࡛ࡁ࡞࠸
ࣇ࢓࢖ࣝࢩࢫࢸ࣒ࣀ࣮ࢻ࡟᱁⣡ࡉࢀ࡚࠸ࡿ᫬࡟ࠊࡑࡢࣇ࢓࢖ࣝࡢ᭦᪂ࡀ࡛ࡁ࡞࠸ၥ㢟ࡀ࠶ࡗࡓࠋࡲࡓࠊㄞ㎸ࡋ࠿࡛ࡁ࡞ࡃࡋ࡚࠸࡚ࡶࠊࣇ࢓࢖ࣝ๐㝖ࡣ࡛ࡁ࡚ࡋࡲ࠺ࡓࡵࠊཝᐦ࡟ࢫࢺࣞ
࣮ࢪ࡟ኚ᭦ࢆຍ࠼࡞࠸࡜࠸࠺≧ែ࡛ࡣ࡞࠿ࡗࡓࠋࡇࢀࡽࡢၥ㢟ࢆゎỴࡍࡿࡓࡵࠊ඲࡚ࡢࣇ࢓
࢖ࣝ」〇ࡀㄞ㎸ࡋ࠿࡛ࡁ࡞࠸ࣇ࢓࢖ࣝࢩࢫࢸ࣒ࣀ࣮ࢻ࡟᱁⣡ࡉࢀ࡚࠸ࡿሙྜࡣࠊࡑࡢࣇ࢓࢖
ࣝࢆኚ᭦ࡍࡿ࡜ࡁ࡟ࠊ᭦᪂ྍ⬟࡞ࣇ࢓࢖ࣝࢩࢫࢸ࣒ࣀ࣮ࢻ࡟ືⓗ࡟ࣇ࢓࢖ࣝ」〇ࢆసᡂࡍࡿ
ᶵ⬟ࡢ㛤Ⓨࢆ⾜ࡗࡓࠋࡲࡓࠊㄞ㎸ࡋ࠿࡛ࡁ࡞࠸≧ែࡢࢫࢺ࣮ࣞࢪ࡟ኚ᭦ࢆຍ࠼࡞࠸ࡼ࠺࡟ࡍ
ࡿࡓࡵࠊࣇ࢓࢖ࣝ๐㝖ࡢ㐜ᘏࢆ⾜࠺ࡼ࠺࡟ࡋࡓࠋࡇࢀ࡟ࡼࡾࠊㄞ㎸ࡢࡳྍ⬟࡜ࡋࡓ࡜ࡁࡶࣘ
࣮ࢨࡀ㏻ᖖ㏻ࡾࡢ࢔ࢡࢭࢫࡀྍ⬟࡜࡞ࡾࠊࡲࡓㄞ㎸ࡢࡳྍ⬟࡜ࡋࡓࢫࢺ࣮ࣞࢪ࡟ኚ᭦ࢆຍ࠼
࡞ࡃ࡞ࡾࠊ≧ែࡢಖ඲ࡀྍ⬟࡜࡞ࡗࡓࠋ
ࡇࢀࡽࡢᡂᯝࡣᖹᡂ 31 ᖺ 3 ᭶ 22 ᪥࡟࣮ࣜࣜࢫࡋࡓ Gfarm ࣂ࣮ࢪࣙࣥ 2.7.13 ࡟ྵࡲࢀ࡚࠸
ࡿࠋࣈࣟࢵࢡࢡࣜࣟࣇ㒊ศ✵㛫཯᚟ἲࡢ㏆ఝゎ⢭ᗘྥୖ࡟㛵ࡍࡿ◊✲㸦ከ⏣㔝㸧݊ ḟ⾜ิ ‫ ܮ ࡜ ܣ‬ᮏࡢྑ㎶࣋ࢡࢺࣝࢆࡶࡘ㐃❧୍ḟ᪉⛬ᘧ‫ܤ = ܺܣ‬(1)

ࡣࠊ⣲⢏Ꮚ≀⌮Ꮫศ㔝ࡸᅛ᭷್ィ⟬ࡢෆ㒊ၥ㢟࡞࡝࡟࠾࠸࡚⌧ࢀࠊྠ᪉⛬ᘧࡢồゎ᫬㛫ࠊ㏆ఝゎ⢭ᗘࡣ࢔ࣉࣜࢣ࣮ࢩࣙࣥࡢᛶ⬟࡟኱ࡁ࡞ᙳ㡪ࢆཬࡰࡍࠋྠ᪉⛬ᘧࡢᩘ್ゎἲࡢ 1 ࡘ࡛࠶ࡿࣈࣟࢵࢡࢡࣜࣟࣇ㒊ศ✵㛫཯᚟ἲࡣࠊィ⟬᫬㛫ࠊ཯᚟ᅇᩘࡢほⅬ࡟࠾࠸࡚ࠊ࣋ࢡࢺࣝࡀ 1ᮏ⏝ࡢᩘ್ゎἲ࡛࠶ࡿࢡࣜࣟࣇ㒊ศ✵㛫཯᚟ἲࡼࡾࡶඃࢀࡓᛶ⬟ࢆ♧ࡍࡇ࡜ࡀ࠶ࡿࠋࡋ࠿ࡋ
࡞ࡀࡽ㏆ఝゎ⢭ᗘ࡟ࡘ࠸࡚ࡣࠊィ⟬㐣⛬࡛⏕ࡌࡿㄗᕪࡢᙳ㡪࡛⢭ᗘຎ໬ࡀ⏕ࡌࡿࡇ࡜ࡀ࠶ࡿࠋ
ᡃࠎࡣࡇࢀࡲ࡛ࡢ◊✲࡟࠾࠸࡚ࠊ㧗⢭ᗘ㏆ఝゎࡢ⏕ᡂࡀྍ⬟࡞ࣈࣟࢵࢡࢡࣜࣟࣇ㒊ศ✵㛫཯᚟ἲ࡜ࡋ࡚ࠊBlock BiCGGR ἲࢆ㛤ⓎࡋࡓࠋBlock BiCGGR ἲ࡛ࡣ Block BiCGSTAB ἲ࡛Ⓨ⏕

- 189 -

─ 189 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩ࡍࡿ㏆ఝゎ⢭ᗘຎ໬ࢆᅇ㑊࡛ࡁࡿࡀࠊྑ㎶࣋ࢡࢺࣝᩘࡀከ࠸ሙྜࡣࠊ཰᮰ᛶ࡟㞴ࡀ࠶ࡿࡇ࡜
ࡀ᫂ࡽ࠿࡟࡞ࡗࡓࠋ
ࡑࡇ࡛ᖹᡂ 30 ᖺᗘࡣࠊBlock BiCGSTAB ἲࡢ཰᮰ᛶࢆ⥔ᣢࡋࡘࡘࠊ㧗⢭ᗘ㏆ఝゎࢆ⏕ᡂ࡛ࡁࡿᡭἲࡢ㛤Ⓨࢆ⾜ࡗࡓࠋBlock BiCGSTAB ἲ࡟࠾࠸࡚ࠊ㐃❧୍ḟ᪉⛬ᘧ(1)ࡢ➨ ݇ + 1 ␒┠ࡢ㏆ఝゎ ܺ௞ାଵ ࡜ᑐᛂࡍࡿṧᕪ ܴ௞ାଵ = ‫ ܤ‬െ ‫ܺܣ‬௞ାଵ ࡢ₞໬ᘧࡣࠊ ݊ × ‫⿵ ܮ‬ຓ⾜ิ ܲ௞ , ܶ௞ ࢆ⏝࠸࡚௨ୗࡢࡼ࠺࡟⾲ࡉࢀࡿࠋܺ௞ାଵ = ܺ௞ + ܲ௞ ߙ௞ + ߞ௞ ܶ௞ ,ܴ௞ାଵ = ܴ௞ െ (‫ܲܣ‬௞ )ߙ௞ െ ߞ௞ (‫ܶܣ‬௞ ).

(2)

(3)

ᘧ (2), (3) ୰࡟⌧ࢀࡿ ߙ௞ ࡣ ‫ ܮ‬ḟ⾜ิࠊߞ௞ ࡣࢫ࣮࢝ࣛࣃ࣓࣮ࣛࢱ࡛࠶ࡿࠋᘧ (3) ࡢィ⟬࡛ࡣࠊࡲࡎ⾜ิ ‫ܲܣ‬௞ , ‫ܶܣ‬௞ ࢆ⾜ิ ‫࡟ ܣ‬㛵ࡍࡿ⾜ิ✚࡛ィ⟬ࡋࠊࡑࡢᚋ ߙ௞ ࡜ ߞ௞ ࢆ஌ࡌࡿࡇ࡜࡛ ܴ௞ାଵ ࡀィ⟬ࡉࢀࡿࠋ⾜ิ ‫ܲܣ‬௞ ࡜ ߙ௞ ࡢ✚ࡢィ⟬࡛⏕ࡌࡿㄗᕪࡀࠊ㏆ఝゎࡢ⢭ᗘຎ໬࡟኱
ࡁ࡞ᙳ㡪ࢆཬࡰࡍࠋ㏆ఝゎ࡜ṧᕪࡢ₞໬ᘧ᭦᪂㔞ࡢ㛫࡟ࡣࠊെ‫ ܣ‬ಸࡢ㛵ಀࡀ࠶ࡿࡀࠊࡇࡢ㛵ಀࡀᔂࢀ࡚ࡋࡲ࠺ࡇ࡜ࡀཎᅉ࡛࠶ࡿࠋࡑࡇ࡛₞໬ᘧࡢ෌ᵓ⠏ࢆ⾜࠸ㄗᕪࡀⓎ⏕ࡋࡸࡍ࠸ィ⟬ࢆ㑊ࡅࡿࡇ࡜࡛ࠊ㏆ఝゎ࡜ṧᕪࡢ₞໬ᘧ᭦᪂㔞ࡢ㛫ࡢ㛵ಀࢆᴟຊಖᣢࡍࡿࡇ࡜ࢆ⪃࠼ࡿࠋ ᮏ◊✲࡛ࡣࠊ₞໬ᘧࡢ」ᩘᅇศࡢ᭦᪂㔞ࢆࢢ࣮ࣝࣉ໬ࡍࡿࠋࡇࡢᡭἲࡣ group-wise ᭦᪂ᡭἲ࡜࿧ࡤࢀࡿࠋ㏆ఝゎ ܺ௞ାଵ ࡢ₞໬ᘧ (2) ࡢ ‫཯ ݏ‬᚟ศࡢ᭦᪂㔞ࢆࢢ࣮ࣝࣉ໬ࡋࠊ௨ୗࡢࡼ࠺

࡟ኚᙧࡍࡿࠋణࡋࠊ཯᚟␒ྕ ݇ ࢆ ݇ = ݉‫ ݏ‬+ ݆ ࡜⾲ࡍࠋࡇࡇ࡛ࠊ݉ ‫݇ہ ؠ‬/‫ۂݏ‬, 0 ൑ ݆ ൑ ‫ ݏ‬െ 1࡛
࠶ࡿࠋ

௠ିଵ

(௟,௦)
ࡇࡇ࡛ࠊ⾜ิ ܷ௤(௟,௦)ܺ௠௦ା௝ାଵ = ܺ଴ + ෍ ܷ௦௟ୀ଴ࡣ௨ୗ࡛ᐃ⩏ࡉࢀࡿࠋ
(࢒,࢙)

ࢁࢗ

(௠,௦)

(௠,௦)

+ ܷ௝ାଵ = ܺ௠௦ + ܷ௝ାଵ .

ࢗି૚‫ ؠ‬෍(ࡼ࢒࢙ା࢏ ࢻ࢒࢙ା࢏ + ࣀ࢒࢙ା࢏ ࢀ࢒࢙ା࢏ ).
࢏ୀ૙㏆ఝゎ ܺ௠௦ା௝ାଵ ࡟ᑐࡍࡿṧᕪ ܴ௠௦ା௝ାଵ ࡣࠊ௨ୗࡢ₞໬ᘧ࡛ィ⟬ࡍࡿࠋ(௠,௦)ܴ௠௦ା௝ାଵ = ܴ௠௦ െ ‫ܷܣ‬௝ାଵ .

ࡇࡢ᪉ἲ࡛ࡣࠊ₞໬ᘧࡢ」ᩘᅇศࡢ᭦᪂㔞࡟ᑐࡋ࡚ࡲ࡜ࡵ࡚ಀᩘ⾜ิ ‫ࢆ ܣ‬஌ࡌ࡚࠸ࡿࡓࡵࠊ

㏆ఝゎ࡜ṧᕪࡢ₞໬ᘧ᭦᪂㔞ࡢ㛵ಀࢆಖࡘࡇ࡜ࡀ࡛ࡁࡿ࡜ᮇᚅࡉࢀࡿࠋBlock BiCGSTAB ἲ࡟ᑐࡋ࡚ࠊ₞໬ᘧࡢ group-wise ᭦᪂ᡭἲࢆ⤌ࡳ㎸ࢇࡔᡭἲࢆ Block GWBiCGSTAB ἲ࡜ྡ௜ࡅࡓࠋࣈࣟࢵࢡࢡࣜࣟࣇ㒊ศ✵㛫཯᚟ἲࡣࠊ୍⯡ⓗ࡟ྑ㎶࣋ࢡࢺࣝᩘࡀከ࠸࡜ᩘ್ⓗ୙Ᏻᐃᛶࡢᙳ㡪࡛ࠊṧᕪࡢ཰᮰ᛶࡀᝏ໬ࡍࡿࠋ཯᚟ẖ࡟ṧᕪࢆᵓᡂࡍࡿ࣋ࢡࢺࣝࡢṇつ┤஺໬ࢆ⾜࠺ࡇ࡜࡛ࠊࡇࡢᩘ್ⓗ୙Ᏻᐃᛶࡀ⦆࿴ࡉࢀࡿࡇ࡜ࡀ▱ࡽࢀ࡚࠸ࡿࠋᮏ◊✲࡛ࡣࠊBlock
GWBiCGSTAB ἲ࡟ṧᕪࡢṇつ┤஺໬ࢆ⤌ࡳ㎸ࢇࡔ Block GWBiCGSTABrQ ἲࡶేࡏ࡚ᵓ⠏ࡋࡓࠋ- 190 -

─ 190 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩ ᩘ್ᐇ㦂࡟࠾࠸࡚ࠊBlock GWBiCGSTABrQ ἲࠊBlock BiCGSTABrQ ἲࠊBlock BiCGGRrQἲࡢ 3 ゎἲ࡟ࡘ࠸࡚ࠊ┿ࡢ┦ᑐṧᕪࠊ཯᚟ᅇᩘࠊྑ㎶࣋ࢡࢺࣝ 1 ᮏ࠶ࡓࡾࡢồゎ᫬㛫ࡢほⅬ
࡛ẚ㍑ࢆ⾜࠺ࠋ┿ࡢ┦ᑐṧᕪࡣ ԡ‫ ܤ‬െ ‫ܺܣ‬௞ ԡ୊ /ԡ‫ܤ‬ԡ୊ ࡛ᐃ⩏ࡉࢀࠊ㏆ఝゎ⢭ᗘࡢᣦᶆ࡜࡞ࡿ್࡛
࠶ࡿࠋࡇࡢ್ࡀ༑ศ࡟ᑠࡉࡅࢀࡤࠊ㧗⢭ᗘࡢ㏆ఝゎࡀᚓࡽࢀ࡚࠸ࡿࡇ࡜ࢆ♧ࡍࠋࢸࢫࢺၥ㢟࡜ࡋ࡚ࠊ᱁Ꮚ㔞ᏊⰍຊᏛィ⟬㸦QCD㸧࡛⌧ࢀࡿ㐃❧୍ḟ᪉⛬ᘧࢆ⏝࠸ࡓࠋྠ᪉⛬ᘧࡢࢧ࢖ࢬ
݊ ࡣ 1,572,864ࠊ㠀㞽せ⣲ᩘࡣ 80,216,064 ࡛࠶ࡿࠋಀᩘ⾜ิෆ࡟⌧ࢀࡿࣃ࣓࣮ࣛࢱ ߢ ࡣ 0.1359

࡜ࡋࡓࠋྑ㎶㡯 ‫݁[ = ܤ ࡣ ܤ‬ଵ , ݁ଶ , … , ݁௅ ] ࡜ࡋࡓࠋణࡋࠊ݁௝ (݆ = 1, 2, … , ‫ ݊ ࡣ )ܮ‬ḟඖᇶᮏ࣋ࢡࢺ࡛ࣝ࠶ࡿࠋᐇ㦂⎔ቃࡣࠊCPU㸸Intel Xeon E5-2620v3 2.4GHz (6 cores)2ࠊ࣓ࣔࣜ㸸64GiB

DDR4 2133MHzࠊࢥࣥࣃ࢖ࣛ㸸Intel Fortran ver. 19.0.0ࠊࢥࣥࣃ࢖ࣝ࢜ࣉࢩࣙࣥ㸸-qopenmp -axCoreAVX2 ࡛࠶ࡾࠊOpenMP ࢆ⏝࠸࡚ 12 ࢫࣞࢵࢻ୪ิ࡛ィ⟬ࡋࡓࠋ ᅗ 27ࠥ29 ࡟ࠊBlock GWBiCGSTABrQ ἲࡢࣃ࣓࣮ࣛࢱ ‫ࢆ ݏ‬ኚ໬ࡉࡏࡓ࡜ࡁࡢ┿ࡢ┦ᑐṧᕪࠊ཯᚟ᅇᩘࠊྑ㎶࣋ࢡࢺࣝ 1 ᮏ࠶ࡓࡾࡢィ⟬᫬㛫ࡢኚ໬ࢆࡑࢀࡒࢀ♧ࡍࠋྑ㎶࣋ࢡࢺࣝᩘ‫ ࡣ ܮ‬1, 4 ࡜ࡋࡓࠋᅗ 27(a)ࡼࡾࠊ ‫ = ܮ‬1 ࡢሙྜࡣ Block BiCGGRrQ ἲࠊBlock BiCGSTABrQἲࡶ┿ࡢ┦ᑐṧᕪࡀ 10ିଵସ ࢆୗᅇࡗ࡚࠾ࡾ㧗⢭ᗘࡢ㏆ఝゎࡀᚓࡽࢀ࡚࠸ࡿࡀࠊBlock
GWBiCGSTABrQ ἲ࡛ ‫ࢆ ݏ‬኱ࡁࡃࡋ࡚࠸ࡃ࡜ࠊᚑ᮶ἲ௨ୖࡢ㏆ఝゎ⢭ᗘࡀᚓࡽࢀ࡚࠸ࡿࠋࡲ

ࡓࠊᅗ 27(b)࡟♧ࡍࡼ࠺࡟ࠊྑ㎶࣋ࢡࢺࣝᩘࡀቑ࠼ࡿ࡜ Block BiCGSTABrQ ἲࡢ㏆ఝゎ⢭ᗘࡣㄗᕪࡢᙳ㡪࡛ຎ໬ࡋ࡚࠸ࡿࡀࠊBlock GWBiCGSTABrQ ἲ࡛ࡣ Block BiCGGRrQ ἲࡼࡾࡶ㧗⢭ᗘࡢ㏆ఝゎࡀᚓࡽࢀ࡚࠸ࡿࠋᅗ 28 ࡼࡾࠊBlock GWBiCGSTABrQ ἲࡢ཯᚟ᅇᩘࡣࠊᚑ᮶ἲ࡜
࡯ࡰྠ⛬ᗘ࡛࠶ࡿࡇ࡜ࡀศ࠿ࡿࠋࡋ࠿ࡋ࡞ࡀࡽࠊࣃ࣓࣮ࣛࢱ ‫ࢆ ݏ‬኱ࡁࡃࡋ㐣ࡂࡿ࡜ࠊ཯᚟ᅇ

ᩘࡀᚎࠎ࡟ቑຍࡍࡿഴྥ࡟࠶ࡿࡇ࡜ࡶ᫂ࡽ࠿࡟࡞ࡗࡓࠋᅗ 29 ࡟♧ࡍࡼ࠺࡟ࠊྑ㎶࣋ࢡࢺࣝ 1ᮏ࠶ࡓࡾࡢィ⟬᫬㛫࡟㛵ࡋ࡚ࡶ Block GWBiCGSTABrQ ἲࡣᚑ᮶ἲ࡜ྠ⛬ᗘ࡛࠶ࡗࡓࠋࡋ࠿
ࡋ࡞ࡀࡽࠊࣃ࣓࣮ࣛࢱ ‫ࢆ ݏ‬኱ࡁࡃࡍࡿ࡜཯᚟ᅇᩘࡀቑຍࡍࡿഴྥ࡟࠶ࡾࠊࡑࡢᙳ㡪࡛ィ⟬᫬㛫ࡶᚎࠎ࡟ቑຍࡋ࡚࠸ࡿࠋ

(a) ྑ㎶࣋ࢡࢺࣝᩘ ‫ = ܮ‬1 ࡢሙྜ(b) ྑ㎶࣋ࢡࢺࣝᩘ ‫ = ܮ‬4 ࡢሙྜᅗ 27 ࣃ࣓࣮ࣛࢱ ‫┦ࡢ┿ࡀ ݏ‬ᑐṧᕪ࡟୚࠼ࡿᙳ㡪- 191 -

─ 191 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩(a) ྑ㎶࣋ࢡࢺࣝᩘ ‫ = ܮ‬1 ࡢሙྜ(b) ྑ㎶࣋ࢡࢺࣝᩘ ‫ = ܮ‬4 ࡢሙྜᅗ 28 ࣃ࣓࣮ࣛࢱ ‫཯ࡀ ݏ‬᚟ᅇᩘ࡟୚࠼ࡿᙳ㡪(a) ྑ㎶࣋ࢡࢺࣝᩘ ‫ = ܮ‬1 ࡢሙྜ(b) ྑ㎶࣋ࢡࢺࣝᩘ ‫ = ܮ‬4 ࡢሙྜᅗ 29 ࣃ࣓࣮ࣛࢱ ‫ྑࡀ ݏ‬㎶࣋ࢡࢺࣝ 1 ᮏ࠶ࡓࡾࡢィ⟬᫬㛫࡟୚࠼ࡿᙳ㡪 ḟ࡟ࠊྑ㎶࣋ࢡࢺࣝᩘ ‫ࢆ ܮ‬ኚ໬ࡉࡏࡓ࡜ࡁࡢ┿ࡢ┦ᑐṧᕪࠊ཯᚟ᅇᩘࠊྑ㎶࣋ࢡࢺࣝ 1 ᮏ࠶ࡓࡾࡢồゎ᫬㛫ࢆホ౯ࡍࡿࠋᅗ 30 ࡟ࠊྑ㎶࣋ࢡࢺࣝᩘ ‫ࢆ ܮ‬ኚ໬ࡉࡏࡓ࡜ࡁࡢ┿ࡢ┦ᑐṧᕪࠊ཯᚟ᅇᩘࠊྑ㎶࣋ࢡࢺࣝ 1 ᮏ࠶ࡓࡾࡢồゎ᫬㛫ࡢኚ໬ࢆ♧ࡍࠋᅗ 30(a)࡟♧ࡍࡼ࠺࡟ࠊBlock
BiCGSTABrQ ἲ࡛ࡣྑ㎶࣋ࢡࢺࣝᩘࡢቑຍ࡟క࠸┿ࡢ┦ᑐṧᕪࡀቑຍࡋ࡚࠾ࡾࠊ㏆ఝゎࡢ⢭ᗘຎ໬ࡀⓎ⏕ࡋ࡚࠸ࡿࠋBlock BiCGGRrQ ἲ࡜ Block GWBiCGSTABrQ ἲ( ‫ = ݏ‬1 )ࡢ┿ࡢ┦ᑐṧᕪࡣྠ⛬ᗘ࡛࠶ࡗࡓࠋ୍᪉ࠊBlock GWBiCGSTABrQ ἲ( ‫ = ݏ‬50 )࡛ࡣࠊ┿ࡢ┦ᑐṧᕪࡀ
10ିଵହ ௜㏆ࡲ࡛ῶᑡࡋ࡚࠾ࡾࠊ㠀ᖖ࡟㧗⢭ᗘ࡞㏆ఝゎࢆ⏕ᡂ࡛ࡁ࡚࠸ࡿࠋࡲࡓࠊᅗ 30(b), (c)࡟♧ࡍࡼ࠺࡟ࠊBlock BiCGGRrQ ἲ࡛ࡣྑ㎶࣋ࢡࢺࣝᩘࡢቑຍ࡟క࠸཰᮰ᛶࡀᝏ໬ࡋ࡚࠾ࡾࠊ
཯᚟ᅇᩘࠊồゎ᫬㛫ࡀቑຍࡋ࡚࠸ࡿࠋ୍᪉ࠊBlock GWBiCGSTABrQ ἲࡣ Block BiCGSTABrQἲ࡜ྠ⛬ᗘࡢᛶ⬟ࢆ♧ࡋ࡚࠾ࡾࠊ㏆ఝゎ⢭ᗘ࡜཰᮰ᛶࡢ୧㠃࡛ඃࢀ࡚࠸ࡿࡇ࡜ࡀศ࠿ࡗࡓࠋ
- 192 -

─ 192 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩ ⌧᫬Ⅼ࡛ࡣࠊBlock GWBiCGSTABrQ ἲࡢࣃ࣓࣮ࣛࢱ ‫ࡀࢨ࣮ࣘࡣ ݏ‬஦๓࡟タᐃࡍࡿᚲせࡀ࠶ࡿࡀࠊ₞໬ᘧࡢࢢ࣮ࣝࣉ໬ࢆືⓗ࡟⾜࠼ࡿࡼ࠺࡟࡞ࢀࡤࠊࡼࡾ౑࠸ࡸࡍ࠸ゎἲ࡟࡞ࡿࡇ࡜
ࡀᮇᚅࡉࢀࡿࠋࡇࢀࡣḟᖺᗘ௨㝆ࡢ௒ᚋࡢㄢ㢟࡛࠶ࡿࠋ(a) ┿ࡢ┦ᑐṧᕪࡢኚ໬(b) ཯᚟ᅇᩘࡢኚ໬(c) ྑ㎶࣋ࢡࢺࣝ 1 ᮏ࠶ࡓࡾࡢồゎ᫬㛫ᅗ 30 ྑ㎶࣋ࢡࢺࣝᩘ ‫ࡢ ܮ‬ኚ໬ࡀ┿ࡢ┦ᑐṧᕪࠊ཯᚟ᅇᩘྑ㎶࣋ࢡࢺࣝ 1 ᮏ࠶ࡓࡾࡢồゎ᫬㛫࡟୚࠼ࡿᙳ㡪ᩍ⫱1.

ᘅᕝ♸ኴ㸪༤ኈ㸦ᕤᏛ㸧㸪᭱ඛ➃㧗ᛶ⬟ィ⟬ࢩࢫࢸ࣒࡟࠾ࡅࡿ➨୍ཎ⌮㟁ᏊືຊᏛࢩ࣑࣮ࣗࣞࢩࣙࣥࡢᏊࢹࢨ࢖ࣥ㸪⟃Ἴ኱Ꮫࢩࢫࢸ࣒᝟ሗᕤᏛ◊✲⛉༤ኈㄽᩥ㸪ᖹᡂ30 ᖺ 9 ᭶㸦ᣦᑟ㸸ᮔὈ♸㸧

2.

すᮧ្䠈ಟኈ䠄ᕤᏛ䠅䠈㧗ᛶ⬟ FPGA 䝅䝇䝔䝮䛾䝯䝰䝸䝏䝱䝛䝹䜢᭷ຠ฼⏝䛩䜛䛯䜑䛾䝩䝇䝖 FPGA 㐃ᦠ䝅䝇䝔䝮䠈⟃Ἴ኱Ꮫ䝅䝇䝔䝮᝟ሗᕤᏛ◊✲⛉ಟኈㄽᩥ䠈ᖹᡂ 31 ᖺ 3 ᭶䠄ᣦᑟ䠖ᮔὈ♸䠅

3.

ᒾ஭ཌᶞ㸪ಟኈ㸦ᕤᏛ㸧㸪኱つᶍ⎔ቃ࡟࠾ࡅࡿ IO ࡢᛶ⬟ホ౯࡟㛵ࡍࡿ◊✲㸪⟃Ἴ኱Ꮫ኱Ꮫ㝔ࢩࢫࢸ࣒᝟ሗᕤᏛ◊✲⛉ಟኈㄽᩥ㸪ᖹᡂ 31 ᖺ 3 ᭶㸦ᣦᑟ㸸ᘓ㒊ಟぢ㸧- 193 -

─ 193 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩4.

ᑠᯘ῟ྖ㸪ಟኈ㸦ᕤᏛ㸧㸪ࢩ࣑࣮ࣗࣞࢱࢆ⏝࠸ࡓศᩓ࣓ࢱࢹ࣮ࢱࢧ࣮ࣂ PPMDS ࡢᛶ⬟ホ౯㸪⟃Ἴ኱Ꮫ኱Ꮫ㝔ࢩࢫࢸ࣒᝟ሗᕤᏛ◊✲⛉ಟኈㄽᩥ㸪ᖹᡂ 31 ᖺ 3 ᭶㸦ᣦᑟ㸸ᘓ㒊ಟぢ㸧5.

Ლཎ㢧ః㸪ಟኈ㸦ᕤᏛ㸧㸪ྜពᡭἲ Raft ࢆ⏝࠸ࡓศᩓ KVS ࡢ㧗ᛶ⬟໬㸪⟃Ἴ኱Ꮫ኱Ꮫ㝔ࢩࢫࢸ࣒᝟ሗᕤᏛ◊✲⛉ಟኈㄽᩥ㸪ᖹᡂ 31 ᖺ 3 ᭶㸦ᣦᑟ㸸ᘓ㒊ಟぢ㸧

6.

୰ᮧὈ኱㸪ಟኈ㸦ᕤᏛ㸧㸪࣓ࢽ࣮ࢥ࢔࣐ࢩࣥ࡟࠾ࡅࡿࢺࣛࣥࢨࢡࢩࣙࣥฎ⌮ࡢ㧗ᛶ⬟໬㸪⟃Ἴ኱Ꮫ኱Ꮫ㝔ࢩࢫࢸ࣒᝟ሗᕤᏛ◊✲⛉ಟኈㄽᩥ㸪ᖹᡂ 31 ᖺ 3 ᭶㸦ᣦᑟ㸸ᘓ
㒊ಟぢ㸧

7.

Ώ㑓ᩗஅ㸪ಟኈ㸦ᕤᏛ㸧㸪୪⾜ᐇ⾜ᮌ Masstree ࡢ㧗ᛶ⬟ᵓ⠏ᡭἲ࡟㛵ࡍࡿ◊✲㸪⟃Ἴ኱Ꮫ኱Ꮫ㝔ࢩࢫࢸ࣒᝟ሗᕤᏛ◊✲⛉ಟኈㄽᩥ㸪ᖹᡂ 31 ᖺ 3 ᭶㸦ᣦᑟ㸸ᘓ㒊ಟぢ㸧

8.

ᑠ⏣೺ᩯ㸪Ꮫኈ㸦ᕤᏛ㸧㸪࣓ࢽ࣮ࢥ࢔ࣉࣟࢭࢵࢧ࡟࠾ࡅࡿ෢๫వィ⟬ࡢᛶ⬟ホ౯㸪⟃Ἴ኱Ꮫ᝟ሗᏛ⩌᝟ሗ⛉Ꮫ㢮༞ᴗㄽᩥࠊᖹᡂ 31 ᖺ 3 ᭶㸦ᣦᑟ㸸㧗ᶫ኱௓㸧9.

ㅖᡞ㞝἞㸪Ꮫኈ㸦ᕤᏛ㸧㸪ᚤศ࣮࢝ࢿࣝࢆ⏝࠸ࡓ 2 ḟඖ␚ࡳ㎸ࡳ✚ศࡢ㧗㏿໬㸪⟃Ἴ኱Ꮫ᝟ሗᏛ⩌᝟ሗ⛉Ꮫ㢮༞ᴗㄽᩥࠊᖹᡂ 31 ᖺ 3 ᭶㸦ᣦᑟ㸸㧗ᶫ኱௓㸧

10. ᮡཎ⯟ᖹ㸪Ꮫኈ㸦ᕤᏛ㸧㸪ࣀ࣮ࢻ࣮ࣟ࢝ࣝࣂ࣮ࢫࢺࣂࢵࣇ࢓ࡢࡓࡵࡢ୪ิ IO ࡢタィ㸪⟃Ἴ኱Ꮫ᝟ሗᏛ⩌᝟ሗ⛉Ꮫ㢮༞ᴗㄽᩥ㸪ᖹᡂ 31 ᖺ 3 ᭶㸦ᣦᑟ㸸ᘓ㒊ಟぢ㸧
11. 㧗ᶫ᐀ྐ㸪Ꮫኈ㸦ᕤᏛ㸧㸪㧗ᛶ⬟ィ⟬࡟ྥࡅࡓศᩓ࢜ࣈࢪ࢙ࢡࢺࢫࢺ࣮ࣞࢪ Ceph ࡢᛶ⬟ホ౯㸪⟃Ἴ኱Ꮫ᝟ሗᏛ⩌᝟ሗ⛉Ꮫ㢮༞ᴗㄽᩥ㸪ᖹᡂ 31 ᖺ 3 ᭶㸦ᣦᑟ㸸ᘓ㒊ಟぢ㸧
12. ᶓ⏣೺ኴ㸪Ꮫኈ㸦ᕤᏛ㸧㸪Hadoop ࡟࠾ࡅࡿ Erasure Coding ࡢᛶ⬟ホ౯㸪⟃Ἴ኱Ꮫ᝟ሗᏛ⩌᝟ሗ⛉Ꮫ㢮༞ᴗㄽᩥ㸪ᖹᡂ 31 ᖺ 3 ᭶㸦ᣦᑟ㸸ᘓ㒊ಟぢ㸧
13. ⏿୰ᬛஅ㸪Ꮫኈ㸦ᕤᏛ㸧㸪ࢥࣥࢸࢼᆺ௬᝿໬࡟࠾ࡅࡿ NVMe-oF ࡢᛶ⬟ホ౯⟃Ἴ኱Ꮫ᝟ሗᏛ⩌᝟ሗ⛉Ꮫ㢮༞ᴗㄽᩥ㸪ᖹᡂ 31 ᖺ 3 ᭶㸦ᣦᑟ㸸ᘓ㒊ಟぢ㸧ཷ㈹ࠊእ㒊㈨㔠ࠊ▱ⓗ㈈⏘ᶒ➼ཷ㈹1.

Best Paper Award, Kohei Hiraga, Osamu Tatebe, Hideyuki Kawashima, “PPMDS : A
Distributed Metadata Server Based on Nonblocking Transactions”, The Fifth International
Conference on Social Networks Analysis, Management and Security, Valencia, Spain,
October 17, 2018

2.

Workshop Best Paper, Yasuhiro Nakamura, Hideyuki Kawashima, Osamu Tatebe,“Integrating TicToc with Parallel Logging”, 6th International Workshop on Computer
Systems and Architectures, Gifu, Japan, November 29, 2018

- 194 -

─ 194 ─

筑波大学 計算科学研究センター 平成 30 年度 年次報告書

外部資金
1.

文部科学省高性能汎用計算機高度利用事業費補助金

朴泰祐（代表）, H29～33 年度,

23,400 千円（H30 年度）, 「次世代演算通信融合型スーパーコンピュータの開発」
2.

科学研究費補助金

基盤研究 (B)，朴泰祐（代表），H30～32 年度，6,110 千円（H30

年度），「再構成可能システムと GPU による複合型高性能計算プラットフォーム」
3.

理化学研究所受託研究朴泰祐（代表）, H27〜H32 年度, 6,600 千円（H30 年度）,

「ポスト京の並列プログラミング環境およびネットワークに関する研究」
4.

科学研究費補助金

基盤研究 (C)，高橋大介（代表），H28～30 年度，1,300 千円（H30

年度），「メニーコア超並列クラスタにおける有理数演算ライブラリに関する研究」
5.

JST CREST，建部修見，主たる共同研究者，H25〜H30 年度, 7,150 千円，EBD：次世
代の年ヨッタバイト処理に向けたエクストリームビッグデータの基盤技術

6.

科学研究費補助金

基盤研究(B)（一般），建部修見，代表，H29～H31 年度，5,070

千円，極端気象予測を拓くビッグデータ機械学習基盤の研究
7.

NEDO，建部修見，分担，H30～H32 年度，7,345 千円，実社会の事象をリアルタイ
ム処理可能な次世代データ処理基盤技術の研究開発

8.

共同研究（富士通研究所），建部修見，代表，H30 年度，3,564 千円，大量データ管理に向けたストレージシステムに関する研究

知的財産権（該当なし）

研究業績(1) 研究論文
A) 査読付き論文
1.

Miwako Tsuji, Taisuke Boku, Mitsuhisa Sato, “Scalable Communication Performance
Prediction Using Auto-Generated Pseudo MPI Event Trace.”, Proc. of HPC Asia 2019,
Guangzhou, Jan. 15th, 2019.

2.

Yuta Hirokawa, Taisuke Boku, Mitsuharu Uemoto, Shunsuke A. Sato, and Kazuhiro Yabana:“Performance Optimization and Evaluation of Scalable Optoelectronics Application on Large
Scale KNL Cluster”, ISC High Performance 2018, Frankfurt, June 2018,https://doi.org/10.1007/978-3-319-92040-5_11

3.

Norihisa Fujita, Ryohei Kobayashi, Yoshiki Yamaguchi, Yuuma Oobata, Taisuke Boku,
Makito Abe, Kohji Yoshikawa, and Masayuki Umemura: Accelerating Space Radiate Transfer- 195 ─ 195 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩on FPGA using OpenCL, International Symposium on Highly-Efficient Accelerators andReconfigurable Technologies (HEART 2018) pp.6:1-6:7 (June 2018)
4.

Yutaka Watanabe, Jinpil Lee, Taisuke Boku and Mitsuhisa Sato, "Trade-off of offloading to
FPGA in OpenMP Task-based programming", Proc. of Int. Workshop on OpenMP 2018
(IWOMP2018), 12 pages, Barcelona, Sep. 2018.

5.

Takahiro Katagiri and Daisuke Takahashi, “Japanese Autotuning Research: Autotuning
Languages and FFT”, Proceedings of the IEEE, Vol. 106, No. 11, pp. 2056-2067, 2018.
(invited paper)

6.

Daisuke TakDKDVKL³&RPSXWDWLRQRIWKHTXDGULOOLRQWKKH[DGHFLPDOGLJLWRIʌRQDFOXVWHU
of Intel Xeon Phi processors”, Parallel Computing, Vol. 75, pp. 1-10, 2018.

7.

Takuya Edamatsu and Daisuke Takahashi, “Acceleration of Large Integer Multiplication withIntel AVX-512 Instructions”, Proc. 20th IEEE International Conference on High Performance
Computing and Communications (HPCC-2018), pp. 211-218, 2018.

8.

Takayuki Tanabe, Hideyuki Kawashima, and Osamu Tatebe, “Integration of Parallel Write
Ahead Logging and Cicada Concurrency Control Method”, Proceedings of 2nd IEEE
International Workshop on Big Data and IoT Security in Smart Computing (BITS), pp.291296, 2018

9.

Masahiro Tanaka, Osamu Tatebe, and Hideyuki Kawashima, “Applying Pwrake Workflow
System and Gfarm File System to Telescope Data Processing”, Proceedings of 2018 IEEE
International Conference on Cluster Computing, pp.124-133, 2018

10. Kohei Hiraga, Osamu Tatebe, and Hideyuki Kawashima, “PPMDS: A Distributed Metadata
Server Based on Nonblocking Transactions”, Proceedings of The Second International
Workshop on Data Science Engineering and its Applications, pp.202-208, 2018
11. Yasuhiro Nakamura, Hideyuki Kawashima, and Osamu Tatebe, "Integrating TicToc with
Parallel Logging", Proceedings of the 6th International Workshop on Computer Systems andArchitectures, pp.105-111, 201812. Harunobu Daikoku, Hideyuki Kawashima, and Osamu Tatebe, "Skew-Aware Collective
Communication for MapReduce Shuffling", Proceedings of the 6th Workshop on Scalable
Cloud Data Management, pp.3331-3340, 201813. Hiroto Tadano, Ryosei Kuramoto, Accuracy improvement of the Block BiCGSTAB method
for linear systems with multiple right-hand sides by group-wise updating technique, Journalof Advanced Simulation in Science and Engineering, Vol. 6, No. 1, pp. 100—117, 2019.

- 196 -

─ 196 ─

筑波大学 計算科学研究センター 平成 30 年度 年次報告書
14. Ryohei Kobayashi, Norihisa Fujita, Yoshiki Yamaguchi, Taisuke Boku: OpenCL-enabledHigh Performance Direct Memory Access for GPU-FPGA Cooperative Computation (shortpaper), Proceedings of Workshops of HPC Asia 2019, 4 pages, (January 2019)
B) 査読無し論文
1. 中道 安祐未, 小林 諒平, 藤田 典久, 朴 泰祐: GPU・FPGA 混載ノードにおけるヘテ
ロ演算加速プログラム環境に関する研究, 研究報告ハイパフォーマンスコンピュー
ティング（HPC）/2019-HPC-168(10)/pp.1-7 (March 2019)
2. 小林 諒平, 藤田 典久, 山口 佳樹, 朴 泰祐: 異デバイス間での PCIe 通信を実現するOpenCL 対 応 FPGA モ ジ ュ ー ル の 提 案 と 検 証 , IEICE-RECONF2018-63/IEICE118(432)/pp.107-112 (January 2019)
3. 藤田 典久, 小林 諒平, 山口 佳樹, 朴 泰祐: OpenCL による FPGA 上の演算と通信を融合した並列処理システムの実装及び性能評価, 研究報告ハイパフォーマンスコン
ピューティング（HPC）/2018-HPC-167(9)/pp.1-9 (December 2018)
4. 小林 諒平, 藤田 典久, 山口 佳樹, 朴 泰祐: OpenCL と Verilog HDL の混合記述による GPU-FPGA デバイス間連携, 研究報告ハイパフォーマンスコンピューティング（HPC）/2018-HPC-167(11)/pp.1-10 (December 2018)
5. 横野 智也, 藤田 典久, 山口 佳樹, 大畠 佑真, 小林 諒平, 朴 泰祐, 吉川 耕司, 安部 牧人, 梅村 雅之: FPGA による宇宙輻射輸送シミュレーションの演算加速, IEICERECONF2018-25/118(215)/pp.35-40 (September 2018)
6. 藤田 典久, 小林 諒平, 山口 佳樹, 朴 泰祐, 吉川 耕司, 安部 牧人, 梅村 雅之: 並
列 FPGA システムにおける OpenCL を用いた宇宙輻射輸送コードの演算加速, 研究報
告ハイパフォーマンスコンピューティング（HPC）/2018-HPC-165(27)/pp.1-8 (July 2018)
7. 廣川 祐太, 朴 泰祐, 矢花 一浩, "AVX-512 Intrinsics で実装されたステンシル計算の
Scalable Vector Extension への展開", 情報処理学会研究報告ハイパフォーマンスコン
ピューティング(HPC), 2019-HPC-168(4), pp.1-7, 2019 年 2.
8. 辻 美和子, 村井 均, 佐藤 三久, 朴 泰祐, Serge Petiton, Nahid Emad, Joachim Protze,
Christian Terboven, Matthias S. Müeller, "MYX：マルチ SPMD プログラミングモデルにおける実行時正当性チェック", 情報処理学会研究報告ハイパフォーマンスコンピュ
ーティング(HPC), 2019-HPC-168(6), pp.1-7, 2019 年 2 月.
9. 辻 大亮, 多田野 寛人, 朴 泰祐, 池田 亮作, 佐藤 拓人, 日下 博幸, "都市気象 LES コ
ードの並列 GPU 環境における高速化", 研究報告ハイパフォーマンスコンピューティ
ング(HPC), 2019-HPC-168(8), pp.1-7, 2019 年 2 月.

- 197 ─ 197 ─

筑波大学 計算科学研究センター 平成 30 年度 年次報告書

10. 小林 諒平, 阿部 昂之, 藤田 典久, 山口 佳樹 朴 泰祐: GPU-FPGA 複合システムにおけるデバイス間連携機構, 研究報告ハイパフォーマンスコンピューティング（HPC）/2018-HPC-165(26)/pp.1-8 (July 2018)
11. 小林 諒平, 藤田 典久, 大畠 佑真, 山口 佳樹 朴 泰祐: 複数の FPGA による分散ソーティングの実現に向けた予備評価, 電子情報通信学会技術研究報告 : 信学技報
/118(63)/pp.65-70 (May 2018)12. 佐藤 駿一，高橋 大介，“GPU における SELL 形式疎行列ベクトル積の性能評価”，
日本応用数理学会 2018 年度年会講演予稿集, 2 pages, 2018.
13. 高橋 大介，“Intel AVX-512 命令を用いた複数の整数除算の高速化”，日本応用数理学会 2018 年度年会講演予稿集, 2 pages, 2018.
14. 佐藤 駿一，高橋 大介，“GPU における SELL 形式疎行列ベクトル積の実装と性能評
価”，情報処理学会研究報告ハイパフォーマンスコンピューティング（HPC），2018HPC-164(3), 6 pages, 2018.
15. 堀江 悠樹，川島 英之，建部 修見，耐ビザンチン障害性を持つ分散合意手法の調査，研究報告システムソフトウェアとオペレーティング・システム（OS），2018-OS-143(15),
5 pages, 2018 年 5 月
16. 岩井 厚樹, 建部 修見, サイエンティフィックビッグデータアプリケーションのためのベンチマークセットの提案, 研究報告ハイパフォーマンスコンピューティング（HPC）, 2018-HPC-165(4), 5 pages, 2018 年 7 月
17. 畑中 智之，建部 修見，コンテナ型仮想化における NVMe-oF の性能評価, 研究報告
ハイパフォーマンスコンピューティング（HPC）, 2018-HPC-167(13), 7 pages, 2018 年
12 月
18. 高橋 宗史，建部 修見, 高性能計算に向けた分散オブジェクトストレージ Ceph の性能評価, 研究報告ハイパフォーマンスコンピューティング（HPC）, 2018-HPC-167(15),8 pages, 2018 年 12 月
19. 杉原 航平, 建部 修見, ノードローカルバーストバッファのための MPI-IO の設計,研究報告ハイパフォーマンスコンピューティング（HPC）, 2019-HPC-168(22), 7 pages,
2019 年 3 月
20. 芹沢 和洋, 建部 修見, 深層ニューラルネットワークにおける訓練高速化のための自動最適化, 研究報告ハイパフォーマンスコンピューティング（HPC）, 2019-HPC168(25), 10 pages, 2019 年 3 月
21. 渡部 裕, 李 珍泌, 佐野 健太郎, 朴 泰祐, 佐藤 三久, "FPGA へのオフロード最適化のための SPGen と OpenCL の統合の検討", 研究報告ハイパフォーマンスコンピュー
ティング(HPC), 2019-HPC-168(11), pp.1-10, 2019 年 2 月.
- 198 ─ 198 ─

筑波大学 計算科学研究センター 平成 30 年度 年次報告書

22. 渡部 裕, 李 珍泌, 朴 泰祐, 佐藤 三久, "OpenMP タスク並列実行における FPGA オ
フローディングの性能最適化", 研究報告ハイパフォーマンスコンピューティング(HPC), 2018-HPC-165(25), pp.1-7, 2018 年 7 月.

(2) 国際会議発表
A) 招待講演1. Taisuke Boku, "Oakforest-PACS: Japan's Fastest Intel Xeon Phi Supercomputer and Its
Applications", IXPUG Conference Middle East, Jeddha, Saudi Arabia, Apr. 24, 2018.
2. Taisuke Boku, "Oakforest-PACS: World Largest KNL/OPA Cluster and Its Performance
Optimization", IPCC Asia Summit 2018, Chengdu, China, May 10, 2018.
3. Taisuke Boku, "Hybrid Accelerated Parallel Computing, GPU+FPGA=?", CODESIGN
Workshop 2018 (at HPC China 2018), Qingdao, China, Oct. 19, 2018.
4. Taisuke Boku, "Overview and Scientific Results of Oakforest-PACS", KNL Workshop in
Korea, Daejon, South Korea, Nov. 6, 2018.
5. Taisuke Boku, "What's the Next Step of Accelerated Supercomputing?", Supercomputing
Frontier Europ 2019, Warsaw, Poland, Mar. 13, 2019.
6. Taisuke Boku, "MUST system applied to high level language approach in MYX project",SPPEXA Workshop 2019, Versilles, France, Mar. 21, 2019.
7. Daisuke Takahashi, “Automatic Tuning for Parallel FFTs on Cluster of Intel Xeon Phi
Processors”, Parallel Fast Fourier Transforms (PFFT) (held in conjunction with IEEE HiPC2018), Radisson Blu Bengaluru Outer Ring Road, Bengaluru, India, December 17, 2018.
B) 一般講演
1. Yuta Hirokawa, Taisuke Boku, Mitsuharu Uemoto, Shunsuke A. Sato, and Kazuhiro Yabana:“Performance Optimization and Evaluation of Scalable Optoelectronics Application on Large
Scale KNL Cluster”, ISC High Performance 2018, Frankfurt, June 2018
2. Ryohei Kobayashi, Norihisa Fujita, Yoshiki Yamaguchi, Taisuke Boku: OpenCL-enabled High
Performance Direct Memory Access for GPU-FPGA Cooperative Computation, IXPUG
Workshop at HPC Asia 2019, January 2019
3. Norihisa Fujita, Ryohei Kobayashi, Yoshiki Yamaguchi, Yuuma Oobata, Taisuke Boku,
Makito Abe, Kohji Yoshikawa, and Masayuki Umemura: Accelerating Space Radiate Transfer
on FPGA using OpenCL, International Symposium on Highly-Efficient Accelerators andReconfigurable Technologies (HEART 2018), June 2018
- 199 ─ 199 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩
4. Daisuke Takahashi, “Implementation of Parallel 3-D Real FFT with 2-D Decomposition onIntel Xeon Phi Clusters”, SIAM Conference on Computational Science and Engineering(CSE19), Spokane Convention Center, Spokane, Washington, USA, March 1, 2019.
5. Takuya Edamatsu and Daisuke Takahashi, “Acceleration of Large Integer Multiplication withIntel AVX-512 Instructions”, The 20th IEEE International Conference on High Performance
Computing and Communications (HPCC-2018), Mercure Exeter Rougemont Hotel, Exeter,
United Kingdom, June 28, 2018.
6. Takayuki Tanabe, Hideyuki Kawashima, and Osamu Tatebe, “Integration of Parallel Write
Ahead Logging and Cicada Concurrency Control Method”, 2nd IEEE International Workshop
on Big Data and IoT Security in Smart Computing (BITS), Sicily, Italy, June 18, 2018
7. Masahiro Tanaka, Osamu Tatebe, and Hideyuki Kawashima, “Applying Pwrake Workflow
System and Gfarm File System to Telescope Data Processing”, 2018 IEEE International
Conference on Cluster Computing, Belfast, North Ireland, September 11, 2018
8. Kohei Hiraga, Osamu Tatebe, and Hideyuki Kawashima, “PPMDS: A Distributed Metadata
Server Based on Nonblocking Transactions”, the Second International Workshop on Data
Science Engineering and its Applications, Valencia, Spain, October 15, 2018
9. Yasuhiro Nakamura, Hideyuki Kawashima, and Osamu Tatebe, "Integrating TicToc with
Parallel Logging", the 6th International Workshop on Computer Systems and Architectures,
Takayama, November 29, 2018
10. Osamu Tatebe, “Memory-Storage Hierarchy”, Big Data and Exascale-Computing 2,
Bloomington, IN, USA, November 30, 2018
11. Harunobu Daikoku, Hideyuki Kawashima, and Osamu Tatebe, "Skew-Aware Collective
Communication for MapReduce Shuffling", the 6th Workshop on Scalable Cloud DataManagement, Seattle, USA, December 10, 2018
12. Osamu Tatebe, “Gfarm/BB – Gfarm file system for burst buffers”, CCS - LBNL Collaborative
Workshop, Berkeley, CA, USA, March 7, 201913. Hiroto Tadano, Ryosei Kuramoto, An improvement of the Block BiCGSTAB method byreconstructing recursions, The 37th JSST Annual International Conference on Simulation
Technology (JSST2018), Hokkaido, Japan, Sep. 18, 2018.
(3) ᅜෆᏛ఍࣭◊✲఍Ⓨ⾲A) ᣍᚅㅮ₇㸦ヱᙜ࡞ࡋ㸧

- 200 -

─ 200 ─

筑波大学 計算科学研究センター 平成 30 年度 年次報告書B) その他の発表
1. 中道 安祐未, 小林 諒平, 藤田 典久, 朴 泰祐: GPU・FPGA 混載ノードにおけるヘテ
ロ演算加速プログラム環境に関する研究, 第 168 回情報処理学会ハイパフォーマンス
コンピューティング研究会，2019 年 3 月
2. 小林 諒平, 藤田 典久, 山口 佳樹, 朴 泰祐: 異デバイス間での PCIe 通信を実現するOpenCL 対応 FPGA モジュールの提案と検証, 電子情報通信学会リコンフィギャラブ
ルシステム研究会, 2019 年 1 月
3. 藤田 典久, 小林 諒平, 山口 佳樹, 朴 泰祐: OpenCL による FPGA 上の演算と通信を融合した並列処理システムの実装及び性能評価, 第 167 回情報処理学会ハイパフォー
マンスコンピューティング研究会，2018 年 12 月
4. 小林 諒平, 藤田 典久, 山口 佳樹, 朴 泰祐: OpenCL と Verilog HDL の混合記述による GPU-FPGA デバイス間連携, 第 167 回情報処理学会ハイパフォーマンスコンピュ
ーティング研究会，2018 年 12 月
5. 廣川 祐太, 朴 泰祐, 矢花 一浩, "AVX-512 Intrinsics で実装されたステンシル計算の
Scalable Vector Extension への展開", 第 168 回情報処理学会ハイパフォーマンスコン
ピューティング研究会, 2019 年 2 月 26 日.
6. 辻 美和子, 村井 均, 佐藤 三久, 朴 泰祐, Serge Petiton, Nahid Emad, Joachim Protze,
Christian Terboven, Matthias S. Müeller, "MYX：マルチ SPMD プログラミングモデルにおける実行時正当性チェック", 第 168 回情報処理学会ハイパフォーマンスコンピュ
ーティング研究会, 2019 年 2 月 26 日.
7. 辻 大亮, 多田野 寛人, 朴 泰祐, 池田 亮作, 佐藤 拓人, 日下 博幸, "都市気象 LES コ
ードの並列 GPU 環境における高速化", 第 168 回情報処理学会ハイパフォーマンスコ
ンピューティング研究会, 2019 年 2 月 26 日..
8. 横野 智也, 藤田 典久, 山口 佳樹, 大畠 佑真, 小林 諒平, 朴 泰祐, 吉川 耕司, 安部 牧人, 梅村 雅之: FPGA による宇宙輻射輸送シミュレーションの演算加速, 電子情報通信学会リコンフィギャラブルシステム研究会, 2018 年 9 月
9. 藤田 典久, 小林 諒平, 山口 佳樹, 朴 泰祐, 吉川 耕司, 安部 牧人, 梅村 雅之: 並
列 FPGA システムにおける OpenCL を用いた宇宙輻射輸送コードの演算加速, 第 165
回情報処理学会ハイパフォーマンスコンピューティング研究会, 2018 年 7 月
10. 小林 諒平, 阿部 昂之, 藤田 典久, 山口 佳樹 朴 泰祐: GPU-FPGA 複合システムにおけるデバイス間連携機構, 第 165 回情報処理学会ハイパフォーマンスコンピューテ
ィング研究会, 2018 年 7 月- 201 ─ 201 ─

筑波大学 計算科学研究センター 平成 30 年度 年次報告書

11. 小林 諒平, 藤田 典久, 大畠 佑真, 山口 佳樹 朴 泰祐: 複数の FPGA による分散ソーティングの実現に向けた予備評価, リコンフィギャラブルシステム研究会, 2018 年
5月
12. 佐藤 駿一，高橋 大介，“GPU における SELL 形式疎行列ベクトル積の性能評価”，
日本応用数理学会 2018 年度年会，名古屋，2018 年 9 月 5 日．
13. 高橋 大介，“Intel AVX-512 命令を用いた複数の整数除算の高速化”，日本応用数理学会 2018 年度年会，名古屋，2018 年 9 月 4 日．
14. 佐藤 駿一，高橋 大介，“GPU における SELL 形式疎行列ベクトル積の実装と性能評
価”，情報処理学会第 164 回ハイパフォーマンスコンピューティング研究会，東京，2018 年 5 月 7 日．
15. 堀江 悠樹，川島 英之，建部 修見，耐ビザンチン障害性を持つ分散合意手法の調査，
第 143 回システムソフトウェアとオペレーティング・システム研究発表会，沖縄，
2018 年 5 月 22 日
16. 岩井 厚樹，建部 修見，サイエンティフィックビッグデータアプリケーションのためのベンチマークセットの提案，第 165 回ハイパフォーマンスコンピューティング研究
発表会，熊本，2018 年 7 月 30 日
17. 建部 修見，Gfarm ファイルシステムの概要と最新機能，Gfarm シンポジウム，東京，2018 年 10 月 26 日
18. 畑中 智之，建部 修見，コンテナ型仮想化における NVMe-oF の性能評価, 第 167 回
ハイパフォーマンスコンピューティング研究発表会，沖縄，2018 年 12 月 17 日
19. 高橋 宗史，建部 修見, 高性能計算に向けた分散オブジェクトストレージ Ceph の性能評価, 第 167 回ハイパフォーマンスコンピューティング研究発表会，沖縄，2018 年
12 月 17 日
20. 建部 修見，Gfarm ファイルシステムの概要と最新機能，Gfarm ワークショップ，鹿児島，2019 年 2 月 1 日
21. 杉原 航平, 建部 修見, ノードローカルバーストバッファのための MPI-IO の設計，
第 168 回ハイパフォーマンスコンピューティング研究発表会，石川，2019 年 3 月 7 日
22. 芹沢 和洋, 建部 修見, 深層ニューラルネットワークにおける訓練高速化のための自動最適化, 第 168 回ハイパフォーマンスコンピューティング研究発表会，石川，2019年3月7日
23. 多田野 寛人，”精度混合型前処理付きクリロフ部分空間反復法”, 研究会「データ駆動
科学と高速計算科学」，東京大学駒場キャンパス，2018 年 7 月 17 日．

- 202 ─ 202 ─

筑波大学 計算科学研究センター 平成 30 年度 年次報告書

24. 多田野 寛人，”漸化式の再構築による Block BiCGSTAB 法の近似解精度改善”，2018
年並列／分散／協調処理に関する『熊本』サマー・ワークショップ（SWoPP2018），
熊本市国際交流会館，2018 年 7 月 31 日．
25. 多田野 寛人，倉本 亮世，”Block BiCGSTAB 法の近似解高精度化と数値的安定化”，
日本応用数理学会 2018 年度年会，名古屋大学東山キャンパス，2018 年 9 月 4 日．
26. 倉本 亮世，多田野 寛人，”Shifted Block BiCGStab 法の近似解精度劣化の数値的原因
解析”，日本応用数理学会 2018 年度年会（ポスターセッション），名古屋大学東山キャンパス，2018 年 9 月 4 日．
27. 齋藤 歩，平吹 勇司，多田野 寛人，高山 彰優，神谷 淳，”断層画像データから 3D
ボリューメトリックモデルの再構成：Global ICCG 法による高速化”, 【非線形問題の解法と可視化に関する研究会】2018 年度第 2 回研究会，自然科学研究機構核融合科学研究所，2019 年 1 月 24 日．
28. 渡部 裕, 李 珍泌, 佐野 健太郎, 朴 泰祐, 佐藤 三久, "FPGA へのオフロード最適化のための SPGen と OpenCL の統合の検討", 第 168 回情報処理学会ハイパフォーマン
スコンピューティング研究会, 2019 年 2 月 26 日.
29. 渡部 裕, 李 珍泌, 朴 泰祐, 佐藤 三久, "OpenMP タスク並列実行における FPGA オ
フローディングの性能最適化", 第 166 回情報処理学会ハイパフォーマンスコンピュ
ーティング研究会, 2018 年 7 月 23 日.
(4) 著書、解説記事等
A) 多田野 寛人，数値線形代数の数理と HPC，第 1 章 1.2.1 定常反復法，1.2.2 クリロ
フ部分空間反復法，櫻井 鉄也，松尾 宇泰，片桐 孝洋（編），共立出版，2018．

異分野間連携・国際連携・国際活動等
1.

日独仏 3 カ国国際共同研究 SPPEXA, 朴 泰祐
（日本代表 PI）
, "MYX: MUST correctness
checking for YML and XMP programs", JST

シンポジウム、研究会、スクール等の開催実績
1.

XcalableMP ワークショップ, つくば, 2018 年 11 月 1 日

2.

Korea-Japan HPC Winter School, ソウル, 2019 年 2 月 20 日〜21 日

3.

Gfarm シンポジウム，東京，2018 年 10 月 26 日

4.

Gfarm ワークショップ，鹿児島，2019 年 2 月 1 日- 203 ─ 203 ─

筑波大学 計算科学研究センター 平成 30 年度 年次報告書

管理・運営
組織運営や支援業務の委員・役員の実績
1. 朴 泰祐：理化学研究所客員主管研究員
2. 朴 泰祐：HPCI 連携サービス委員会委員長
3. 朴 泰祐：HPCI コンソーシアム理事
4. 朴 泰祐：PC クラスタコンソーシアム理事
5. 朴 泰祐：学際大規模情報基盤共同利用・共同研究拠点（JHPCN）運営委員
6. 朴 泰祐：筑波大学情報環境企画室委員
7. 朴 泰祐：筑波大学ネットワーク管理委員会委員
8. 高橋 大介：筑波大学情報環境機構学術情報メディアセンター運営委員会委員
9. 高橋 大介：理化学研究所客員主管研究員
10. 高橋 大介：HPCI 利用研究課題審査委員会レビューアー
11. 高橋 大介：HPCI 連携サービス運営・作業部会委員
12. 高橋 大介：学際大規模情報基盤共同利用・共同研究拠点（JHPCN）課題審査委員
13. 高橋 大介：情報処理学会論文誌ジャーナル／JIP 編集委員会委員
14. 高橋 大介：情報処理学会ハイパフォーマンスコンピューティング研究会幹事
15. 建部 修見：HPCI 共用ストレージ運用部会副部会長
16. 建部 修見：HPCI 連携サービス運営・作業部会委員
17. 建部 修見：理化学研究所客員主管研究員
18. 建部 修見：情報通信研究機構協力研究員
19. 建部 修見：HPCI 利用研究課題審査委員会レビューアー
20. 建部 修見：学際大規模情報基盤共同利用・共同研究拠点（JHPCN）課題審査委員
21. 建部 修見：東京工業大学学術国際情報センター共同利用専門委員
22. 建部 修見：特定非営利団体つくば OSS 技術支援センター理事長
23. 建部 修見：SNIA 日本支部エクストリームストレージ研究会研究会長
24. 建部 修見：情報処理学会論文誌コンピューティングシステム編集副委員長
25. 多田野 寛人：日本応用数理学会「行列・固有値問題の解法とその応用」研究部会 運
営委員．
26. 多田野 寛人：情報処理学会ハイパフォーマンスコンピューティング研究会運営委員．
27. 多田野 寛人：情報処理学会論文誌コンピューティングシステム論文誌編集委員．
28. 小林 諒平：SWoPP2018 実行委員 コンピュータシステム研究会担当幹事
29. 小林 諒平：電子情報通信学会リコンフィギャラブルシステム研究会専門委員
30. 小林 諒平：電子情報通信学会コンピュータシステム研究会専門委員- 204 ─ 204 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩♫఍㈉⊩࣭ᅜ㝿㈉⊩1. Taisuke Boku: Steering Committee Chair, International Conference on High Performance
Computing in Asia-Pacific Region (HPCAsia)
2. Taisuke Boku: Steering Committee Member, Intel eXtreme Performance Users Group (IXPUG)
3. Taisuke Boku: Organizing Committee Member, HPCAsia 2019
4. Taisuke Boku: Scientific Committee Member, Supercomputing Frontier Europe 2019
5. Taisuke Boku: Program Committee, IPDPS2018
6. Taisuke Boku: Organizing Co-Chair, IXPUG Workshop HPCAsia 2019
7. Taisuke Boku: Committee Member, SC18 Test of Time
8. Taisuke Boku: Organizing Committee Member, IXPUG Workshop ISC 2018
9. Taisuke Boku: Committee Member, CCGrid2019 Scale Challenge
10. Taisuke Boku: Program Committee, HPC China 2018
11. Taisuke Boku: Organizing Co-Chair: ATiP Workshop at SC18
12. Daisuke Takahashi: Program Committee, The 16th IEEE International Symposium on Parallel andDistributed Processing with Applications (IEEE ISPA 2018)13. Daisuke Takahashi: Program Committee, International Conference on High Performance
Computing in Asia Pacific Region (HPC Asia 2019)14. Daisuke Takahashi: Program Committee, 6th International Workshop on Large-scale HPC
Application Modernization (LHAM 2018) in Conjunction with 6th International Symposium on
Computing and Networking (CANDAR'18)
15. Daisuke Takahashi: Program Committee, Parallel Fast Fourier Transforms (PFFT) in Conjunction
with 25th IEEE International Conference on High Performance Computing, Data, and Analytics(HiPC 2018)16. Daisuke Takahashi: Organizing Committee, Parallel Fast Fourier Transforms (PFFT) in
Conjunction with 25th IEEE International Conference on High Performance Computing, Data, andAnalytics (HiPC 2018)17. Daisuke Takahashi: Program Committee, The 18th IEEE International Conference on Computerand Information Technology (CIT 2018)18. Daisuke Takahashi: Program Committee, The 3rd International Workshop on GPU Computing and
AI (GCA'18) in Conjunction with 6th International Symposium on Computing and Networking(CANDAR'18)
19. Daisuke Takahashi: Program Committee, 20th IEEE International Conference on High
Performance Computing and Communications (HPCC-2018)- 205 -

─ 205 ─⟃Ἴ኱Ꮫィ⟬⛉Ꮫ◊✲ࢭࣥࢱ࣮ᖹᡂ 30 ᖺᗘᖺḟሗ࿌᭩
20. Daisuke Takahashi: Publicity Committee, The 18th International Conference on Computational
Science and Its Applications (ICCSA 2018)21. Daisuke Takahashi: Program Committee, The International Conference on Computational Science(ICCS 2018)22. Daisuke Takahashi: Program Committee, The 13th International Workshop on Automatic
Performance Tuning (iWAPT 2018)23. Daisuke Takahashi: Program Committee, IEEE 12th International Symposium on Embedded
Multicore SoCs (MCSoC-18)
24. Osamu Tatebe: Program Committee, IEEE/ACM International Symposium on Cluster, Cloud andGrid Computing (CCGrid 2018)
25. Osamu Tatebe: Program Committee, IEEE International Conference on Cluster Computing(Cluster 2018)
26. Osamu Tatebe: Program Committee, International Supercomputing Conference
27. Osamu Tatebe: Poster Committee, IEEE/ACM International Conference for High Performance
Computing, Networking, Storage and Analysis (SC18)
28. Osamu Tatebe: Program Committee, International Workshop on Advances in High-Performance
Computational Earth Sciences: Applications & Frameworks (IHPCES 2018)29. Hiroto Tadano: Publication Co-Chair, The 37th Annual International Conference on Simulation
Technology (JSST2018).
30. Hiroto Tadano: Publication Co-Chair, The 38th Annual International Conference on Simulation
Technology (JSST2019).
31. Hiroto Tadano: Deputy Chair, 48th International Conference on Parallel Processing (ICPP2019).
32. Ryohei Kobayashi: Program Committee, International Conference on Field-Programmable
Technology (FPT'18)
33. Ryohei Kobayashi: Program Committee, 6th International Workshop on Computer Systems andArchitectures (CSA'18) held in conjunction with CANDAR'18ࡑࡢ௚ᾏእ㛗ᮇ⁫ᅾࠊࣇ࢕࣮ࣝࢻ࣮࣡ࢡ࡞࡝
㸦ヱᙜ࡞ࡋ㸧

- 206 -

─ 206 ─