HPC146

Similar documents
XACCの概要

HPC143

XACC講習会

XMPによる並列化実装2

XcalableMP入門

研究背景 大規模な演算を行うためには 分散メモリ型システムの利用が必須 Message Passing Interface MPI 並列プログラムの大半はMPIを利用 様々な実装 OpenMPI, MPICH, MVAPICH, MPI.NET プログラミングコストが高いため 生産性が悪い 新しい並

1.overview

高生産 高性能プログラミング のための並列言語 XcalableMP 佐藤三久 筑波大学計算科学研究センター

PowerPoint Presentation

Microsoft PowerPoint - sps14_kogi6.pptx

Microsoft PowerPoint - XMP-AICS-Cafe ppt [互換モード]

01_OpenMP_osx.indd

PowerPoint プレゼンテーション

Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking Environments

untitled

PowerPoint プレゼンテーション

TSUBAME2.0 における GPU の 活用方法 東京工業大学学術国際情報センター丸山直也第 10 回 GPU コンピューティング講習会 2011 年 9 月 28 日

I I / 47

Taro13-第6章(まとめ).PDF


[1] #include<stdio.h> main() { printf("hello, world."); return 0; } (G1) int long int float ± ±

Vol.214-HPC-145 No /7/3 C #pragma acc directive-name [clause [[,] clause] ] new-line structured block Fortran!$acc directive-name [clause [[,] c

平成18年○月○日

スライド 1


untitled

橡07第1章1_H160203_.PDF

nakao

06佐々木雅哉_4C.indd

CUDA 連携とライブラリの活用 2


【知事入れ版】270804_鳥取県人口ビジョン素案

untitled



好きですまえばし

( CUDA CUDA CUDA CUDA ( NVIDIA CUDA I


第3回戦略シンポジウム緑川公開用

STARTプログラム.indd

日本外傷歯学会認定医(平成24年11月30日付) H

(Basic Theory of Information Processing) 1

GPGPUクラスタの性能評価

都道府県別経済財政モデル(平成27年度版)_02

Microsoft Word - openmp-txt.doc

HPC (pay-as-you-go) HPC Web 2

スパコンに通じる並列プログラミングの基礎

スパコンに通じる並列プログラミングの基礎


(1) (2) (3) (4) (1) 1 1

GPU CUDA CUDA 2010/06/28 1

名称 : 日本 GPU コンピューティングパートナーシップ (G-DEP) 所在 : 東京都文京区本郷 7 丁目 3 番 1 号東京大学アントレプレナープラザ, 他工場 URL アライアンスパートナー コアテクノロジーパートナー NVIDIA JAPAN ソリュ

115px 500px


OpenACCによる並列化

Microsoft PowerPoint - HPCseminar2013-msato.pptx

02_C-C++_osx.indd

untitled

untitled

スライド 1

ŠéŒØ‘÷†u…x…C…W…A…fi…l…b…g…‘†[…NfiüŒå†v(fl|ŁŠ−Ù) 4. −mŠ¦fiI’—Ÿ_ 4.1 −mŠ¦ŁªŁz‡Ì„v”Z

NUMAの構成

OpenMP¤òÍѤ¤¤¿ÊÂÎó·×»»¡Ê£±¡Ë

(Microsoft PowerPoint \215u\213`4\201i\221\272\210\344\201j.pptx)

2004年度版「労働組合の会計税務に係る実務マニュアル」の販売について

GPU チュートリアル :OpenACC 篇 Himeno benchmark を例題として 高エネルギー加速器研究機構 (KEK) 松古栄夫 (Hideo Matsufuru) 1 December 2018 HPC-Phys 理化学研究所 共通コードプロジェクト

2

23 Fig. 2: hwmodulev2 3. Reconfigurable HPC 3.1 hw/sw hw/sw hw/sw FPGA PC FPGA PC FPGA HPC FPGA FPGA hw/sw hw/sw hw- Module FPGA hwmodule hw/sw FPGA h

(STL) STL 1 (deta structure) (algorithm) (deta structure) 2 STL STL (Standard Template Library) 2.1 STL STL ( ) vector<int> x; for(int i = 0; i < 10;

(1)

OpenMP¤òÍѤ¤¤¿ÊÂÎó·×»»¡Ê£±¡Ë

untitled

joho09.ppt

AICS 村井均 RIKEN AICS HPC Summer School /6/2013 1


入門Java解答.doc

2ndD3.eps

sim0004.dvi

double float

sim98-8.dvi

AHPを用いた大相撲の新しい番付編成

マルチコアPCクラスタ環境におけるBDD法のハイブリッド並列実装

Microsoft PowerPoint - ATワークショップ pptx

スパコンに通じる並列プログラミングの基礎

untitled

untitled

CPU Levels in the memory hierarchy Level 1 Level 2... Increasing distance from the CPU in access time Level n Size of the memory at each level 1: 2.2

1. GPU コンピューティング GPU コンピューティング GPUによる 汎用コンピューティング GPU = Graphics Processing Unit CUDA Compute Unified Device Architecture NVIDIA の GPU コンピューティング環境 Lin

1 OpenCL OpenCL 1 OpenCL GPU ( ) 1 OpenCL Compute Units Elements OpenCL OpenCL SPMD (Single-Program, Multiple-Data) SPMD OpenCL work-item work-group N

第7章 有限要素法のプログラミング

1重谷.PDF

untitled

untitled

Microsoft PowerPoint - 先端GPGPUシミュレーション工学特論(web).pptx

t Z

NUMAの構成

GPU GPU CPU CPU CPU GPU GPU N N CPU ( ) 1 GPU CPU GPU 2D 3D CPU GPU GPU GPGPU GPGPU 2 nvidia GPU CUDA 3 GPU 3.1 GPU Core 1

DKA ( 1) 1 n i=1 α i c n 1 = 0 ( 1) 2 n i 1 <i 2 α i1 α i2 c n 2 = 0 ( 1) 3 n i 1 <i 2 <i 3 α i1 α i2 α i3 c n 3 = 0. ( 1) n 1 n i 1 <i 2 < <i

07-二村幸孝・出口大輔.indd

Transcription:

2

3

4

5

6

int array[16]; #pragma xmp nodes p(4) #pragma xmp template t(0:15) #pragma xmp distribute t(block) on p #pragma xmp align array[i] with t(i) array[16] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Node 1 Node 2 Node 3 Node 4 7

#pragma xmp loop on t(i) for(i=2;i<=10;i++){...} int array[16]; #pragma xmp nodes p(4) #pragma xmp template t(0:15) #pragma xmp distribute t(block) on p #pragma xmp align array[i] with t(i) array[16] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Node 1 Node 2 Node 3 Node 4 8

9 array[16] Node 1 Node 2 Node 3 Node 4 0 1 2 3 4 5 6 7 8 int array[16];.. // #pragma xmp shadow array[1:1].. #pragma xmp reflect (array) #pragma xmp loop on t(i) for(..){.. = array[i- 1] + array[i+1]; 9 10 11 12 13 14 15 1. shadow 2. reflect

double a[n], b[n], c[n]; #pragma acc data copy(a,b,c) { #pragma acc parallel loop for(i=0; i<n; i++){ c[i] = a[i] + b[i];... 10

11

12

13 double u[xsize][ysize], uu[xsize][ysize]; #pragma xmp nodes p(x, y) #pragma xmp template t(0:ysize 1, 0:XSIZE 1) #pragma xmp distribute t(block, block) onto p #pragma xmp align [j][i] with t(i,j) :: u, uu #pragma xmp shadow uu[1:1][1:1] #pragma acc data copy(u) copyin(uu)! for(k=0; k<max_iter; k++){ #pragma xmp loop (y,x) on t(y,x) #pragma acc parallel loop collapse(2) for(x=1; x<xsize- 1; x++) for(y=1; y<ysize- 1; y++) uu[x][y] = u[x][y];! #pragma xmp reflect (uu) acc! #pragma xmp loop (y,x) on t(y,x) #pragma acc parallel loop collapse(2) for(x=1; x<xsize- 1; x++) for(y=1; y<ysize- 1; y++) u[x][y] = (uu[x- 1][y]+uu[x+1][y]+ uu[x][y- 1]+uu[x][y+1])/4.0; } // end k } // end data

14 double u[xsize][ysize], uu[xsize][ysize]; #pragma xmp nodes p(x, y) #pragma xmp template t(0:ysize 1, 0:XSIZE 1) #pragma xmp distribute t(block, block) onto p #pragma xmp align [j][i] with t(i,j) :: u, uu #pragma xmp shadow uu[1:1][1:1] #pragma acc data copy(u) copyin(uu) { for(k=0; k<max_iter; k++){ #pragma xmp loop (y,x) on t(y,x) #pragma acc parallel loop collapse(2) for(x=1; x<xsize- 1; x++) for(y=1; y<ysize- 1; y++) uu[x][y] = u[x][y];! #pragma xmp reflect (uu)! #pragma xmp loop (y,x) on t(y,x) #pragma acc parallel loop collapse(2) for(x=1; x<xsize- 1; x++) for(y=1; y<ysize- 1; y++) u[x][y] = (uu[x- 1][y]+uu[x+1][y]+ uu[x][y- 1]+uu[x][y+1])/4.0; } // end k } // end data

double u[xsize][ysize], uu[xsize][ysize]; #pragma xmp nodes p(x, y) #pragma xmp template t(0:ysize 1, 0:XSIZE 1) #pragma xmp distribute t(block, block) onto p #pragma xmp align [j][i] with t(i,j) :: u, uu #pragma xmp shadow uu[1:1][1:1] #pragma acc data copy(u) copyin(uu) { for(k=0; k<max_iter; k++){ #pragma xmp loop (y,x) on t(y,x) #pragma acc parallel loop collapse(2) for(x=1; x<xsize- 1; x++) for(y=1; y<ysize- 1; y++) uu[x][y] = u[x][y];! #pragma xmp reflect (uu) acc! #pragma xmp loop (y,x) on t(y,x) #pragma acc parallel loop collapse(2) for(x=1; x<xsize- 1; x++) for(y=1; y<ysize- 1; y++) u[x][y] = (uu[x- 1][y]+uu[x+1][y]+ uu[x][y- 1]+uu[x][y+1])/4.0; } // end k } // end data 15

double u[xsize][ysize], uu[xsize][ysize]; #pragma xmp nodes p(x, y) #pragma xmp template t(0:ysize 1, 0:XSIZE 1) #pragma xmp distribute t(block, block) onto p #pragma xmp align [j][i] with t(i,j) :: u, uu #pragma xmp shadow uu[1:1][1:1] #pragma acc data copy(u) copyin(uu) { for(k=0; k<max_iter; k++){ #pragma xmp loop (y,x) on t(y,x) #pragma acc parallel loop collapse(2) for(x=1; x<xsize- 1; x++) for(y=1; y<ysize- 1; y++) uu[x][y] = u[x][y];! #pragma xmp reflect (uu) acc! #pragma xmp loop (y,x) on t(y,x) #pragma acc parallel loop collapse(2) for(x=1; x<xsize- 1; x++) for(y=1; y<ysize- 1; y++) u[x][y] = (uu[x- 1][y]+uu[x+1][y]+ uu[x][y- 1]+uu[x][y+1])/4.0; } // end k } // end data 16

17

18

#pragma acc data copy(u) copyin(uu) {.. #pragma xmp reflect (uu) acc! #pragma xmp loop (y,x) on t(y,x) #pragma acc parallel loop collapse(2) for(x=1; x<xsize- 1; x++) for(y=1; y<ysize- 1; y++) u[x][y] = (uu[x- 1][y]+uu[x+1][y]+ uu[x][y- 1]+uu[x][y+1])/4.0; 19

GPU PE.2 GPU PE.2 CPU NIC CPU NIC SW PE.2 = PEACH2 20

21 START Support TCA? No Yes Data < 1MB? No Support GPUDirect? No Yes Yes Num <= 1024? No Yes Internal Memory Mode (PEACH2) Host Memory Mode (PEACH2) MVAPICH2-GDR MPI + CUDA

22

float p[mimax][mjmax][mkmax]; // XMP #pragma xmp shadow p[1:1][1:1][0]! #pragma acc data copy(p).. {.. #pragma xmp reflect (p) acc.. #pragma xmp loop (k,j,i) on t(k,j,i) #pragma acc parallel loop.. for(i=1 ; i<mimax ; ++i) for(j=1 ; j<mjmax ; ++j){ #pragma acc loop vector.. for(k=1 ; k<mkmax ; ++k){ S0 = p[i+1][j][k] *..; 23

24

320 240 160 80 0 XACC (PEACH2) OpenACC+MPI (GDR) 1 2 4 8 16 25

26

27