OpenMP/OpenACC によるマルチコア メニィコア並列プログラミング入門 Fortran 編第 Ⅱ 部 :OpenMP 中島研吾 東京大学情報基盤センター

Size: px
Start display at page:

Download "OpenMP/OpenACC によるマルチコア メニィコア並列プログラミング入門 Fortran 編第 Ⅱ 部 :OpenMP 中島研吾 東京大学情報基盤センター"

Transcription

1 OpenMP/OpenACC によるマルチコア メニィコア並列プログラミング入門 Fortran 編第 Ⅱ 部 :OpenMP 中島研吾 東京大学情報基盤センター

2 2 OpenMP Login to Reedbush-U Parallel Version of the Code by OpenMP STREAM Data Dependency

3 3 Hybrid 並列プログラミング スレッド並列 + メッセージパッシング OpenMP+ MPI CUDA + MPI, OpenACC + MPI 個人的には自動並列化 +MPI のことを ハイブリッド とは呼んでほしくない 自動並列化に頼るのは危険である 東大センターでは現在自動並列化機能はコンパイラの要件にしていない ( 調達時に加点すらしない ) 利用者にももちろん推奨していない OpenMP が MPI より簡単ということはない データ依存性のない計算であれば, 機械的に OpenMP 指示文を入れれば良い NUMA になるとより複雑 :First Touch Data Placement

4 4 Flat MPI vs. Hybrid Flat-MPI:Each Core -> Independent core core core memory core core memory core core memory core core core core core Hybrid:Hierarchal Structure memory core core core core memory core core core core memory core core core core

5 5 Memory L1 L1 L1 L1 L1 L1 L1 L2 L1 L1 L1 L1 L1 L1 L1 L1 L1 C C C C C C C C C C C C C C C C HB M x N Number of OpenMP threads per a single MPI process Number of MPI process per a single node

6 6 並列プログラミングモデルによって各プロ セスの受け持つデータの量は変わる分散メッシュの数も各サイズも変わる example: 6 nodes, 96 cores Flat MPI pcube HB 4x pcube HB 16x pcube

7 OMP-1 7 共有メモリ型計算機 MEMORY C P U C P U C P U C P U C P U C P U C P U C P U SMP Symmetric Multi Processors 複数の CPU( コア ) で同じメモリ空間を共有するアーキテクチュア

8 OMP-1 8 OpenMP とは 共有メモリ型並列計算機用の Directive の統一規格 この考え方が出てきたのは MPI や HPF に比べると遅く 1996 年であるという 現在 Ver.4.0 背景 Cray と SGI の合併 ASCI 計画の開始 主な計算機ベンダーが集まって OpenMP ARB を結成し, 1997 年にはもう規格案ができていたそうである SC98 ではすでに OpenMP のチュートリアルがあったし, すでに SGI Origin2000 で OpenMP-MPI ハイブリッドのシミュレーションをやっている例もあった

9 OMP-1 9 OpenMP とは ( 続き ) OpenMP は Fortan 版と C/C++ 版の規格が全く別々に進められてきた Ver.2.5 で言語間の仕様を統一 Ver.4.0 では GPU,Intel-MIC 等 Co-Processor, Accelerator 環境での動作も考慮 OpenACC

10 OMP-1 10 基本的仕様 OpenMP の概要 プログラムを並列に実行するための動作をユーザーが明示 OpenMP 実行環境は, 依存関係, 衝突, デッドロック, 競合条件, 結果としてプログラムが誤った実行につながるような問題に関するチェックは要求されていない プログラムが正しく実行されるよう構成するのはユーザーの責任である 実行モデル fork-join 型並列モデル 当初はマスタスレッドと呼ばれる単一プログラムとして実行を開始し, PARALLEL, END PARALLEL ディレクティヴの対で並列構造を構成する 並列構造が現れるとマスタスレッドはスレッドのチームを生成し, そのチームのマスタとなる いわゆる 入れ子構造 も可能であるが, ここでは扱わない

11 OMP-1 11 Fork-Join 型並列モデル Master Master thread thread thread thread Master thread thread Master thread thread Master thread thread thread thread thread thread PARALLEL fork END PARALLEL join PARALLEL fork END PARALLEL join

12 OMP-1 12 スレッド数 環境変数 OMP_NUM_THREADS 値の変え方 bash(.bashrc) export OMP_NUM_THREADS=8 csh(.cshrc) setenv OMP_NUM_THREADS 8 たとえば,OMP_NUM_THREADS=4 とすると, 以下のように i=1~100 のループが 4 分割され, 同時に実行される do i= 1, 25 do i= 1,100 do i= 26, 50 do i= 51, 75 do i= 76, 100

13 OMP-1 13 OpenMP に関連する情報 OpenMP Architecture Review Board (ARB) 参考文献 Chandra, R. et al. Parallel Programming in OpenMP (Morgan Kaufmann) Quinn, M.J. Parallel Programming in C with MPI and OpenMP (McGrawHill) Mattson, T.G. et al. Patterns for Parallel Programming (Addison Wesley) 牛島 OpenMP による並列プログラミングと数値計算法 ( 丸善 ) Chapman, B. et al. Using OpenMP (MIT Press) 最新! 富士通他による翻訳 :(OpenMP 3.0) 必携!

14 OMP-1 14 OpenMP に関する国際会議 WOMPEI(International Workshop on OpenMP: Experiences and Implementations ) 日本 (1 年半に一回 ) WOMPAT( アメリカ ),EWOMP( 欧州 ) 2005 年からこれらが統合されて IWOMP となる, 毎年開催 International Workshop on OpenMP Eugene, Oregon, USA

15 OMP-1 15 OpenMP の特徴 ディレクティヴ ( 指示行 ) の形で利用 挿入直後のループが並列化される コンパイラがサポートしていなければ, コメントとみなされる

16 OMP-1 16 OpenMP/Directives Array Operations Simple Substitution!$omp parallel do do i= 1, NP W(i,1)= 0.d0 W(i,2)= 0.d0!$omp end parallel do Dot Products!$omp parallel do private(i)!$omp& reduction(+:rho) do i= is, ie RHO= RHO + W(i,R)*W(i,Z)!$omp end parallel do DAXPY!$omp parallel do do i= 1, NP Y(i)= ALPHA*X(i) + Y(i)!$omp end parallel do

17 OMP-1 17 OpenMP/Direceives Matrix/Vector Products!$omp parallel do private(i,j) do i= 1, N W(i,Q)= D(i)*W(i,P) do j= 1, INL(i) W(i,Q)= W(i,Q) + W(IAL(j,i),P) do j= 1, INU(i) W(i,Q)= W(i,Q) + W(IAU(j,i),P)!$omp end parallel do

18 OMP-1 18 OpenMP の特徴 ディレクティヴ ( 指示行 ) の形で利用 挿入直後のループが並列化される コンパイラがサポートしていなければ, コメントとみなされる 何も指定しなければ, 何もしない 自動並列化, 自動ベクトル化 とは異なる 下手なことをするとおかしな結果になる : ベクトル化と同じ データ分散等 (Ordering) は利用者の責任 共有メモリユニット内のプロセッサ数に応じて, Thread が立ち上がる Thread :MPI でいう プロセス に相当する 普通は Thread 数 = 共有メモリユニット内プロセッサ数, コア数 であるが最近のアーキテクチャでは Hyper Threading (HT) がサポートされているものが多い (1 コアで 2-4 スレッド )

19 OMP-1 19 メモリ競合 MEMORY C P U C P U C P U C P U C P U C P U C P U C P U 複雑な処理をしている場合, 複数のスレッドがメモリ上の同じアドレスにあるデータを同時に更新する可能性がある 複数の CPU が配列の同じ成分を更新しようとする メモリを複数のコアで共有しているためこのようなことが起こりうる 場合によっては答えが変わる

20 OMP-1 20 メモリ競合 ( 続き ) MEMORY C P U C P U C P U C P U C P U C P U C P U C P U 本演習で扱っている例は, そのようなことが生じないよう, 各スレッドが同時に同じ成分を更新するようなことはないようにする これはユーザーの責任でやること, である ただ多くのコア数 ( スレッド数 ) が増えるほど, メモリへの負担が増えて, 処理速度は低下する

21 OMP-1 21 OpenMP の特徴 ( 続き ) 基本は!omp parallel do ~!omp end parallel do 変数について, グローバルな変数と,Thread 内でローカルな private な変数に分けられる デフォルトは global 内積を求める場合は reduction を使う!$omp parallel do private(is,ie,i)!$omp& reduction(+:rho) do ip= 1, PEsmpTOT is= STACKmcG(ip-1) + 1 ie= STACKmcG(ip ) do i= is, ie RHO= RHO + W(i,R)*W(i,Z)!$omp end parallel do W(:,:),R,Z,PEsmpTOT などはグローバル変数

22 OMP-1 22 FORTRAN と C use omp_lib...!$omp parallel do shared(n,x,y) private(i) do i= 1, n x(i)= x(i) + y(i)!$ omp end parallel do #include <omp.h>... { #pragma omp parallel for default(none) shared(n,x,y) private(i) } for (i=0; i<n; i++) x[i] += y[i];

23 OMP-1 23 本講義における方針 OpenMP は多様な機能を持っているが, それらの全てを逐一教えることはしない 講演者も全てを把握, 理解しているわけではない 数値解析に必要な最低限の機能のみ学習する 具体的には, 講義で扱っている ICCG 法によるポアソン方程式ソルバーを動かすために必要な機能のみについて学習する それ以外の機能については, 自習, 質問のこと ( 全てに答えられるとは限らない )

24 OMP-1 24 最初にやること use omp_lib #include <omp.h> FORTRAN C 様々な環境変数, インタフェースの定義 (OpenMP3.0 以降でサポート )

25 OMP-1 25 OpenMP ディレクィヴ (FORTRAN) sentinel directive_name [clause[[,] clause] ] 大文字小文字は区別されない sentinel 接頭辞 FORTRAN では!$OMP, C$OMP, *$OMP, 但し自由ソース形式では!$OMP のみ 継続行には FORTRAN と同じルールが適用される 以下はいずれも!$OMP PARALLEL DO SHARED(A,B,C)!$OMP PARALLEL DO!$OMP+SHARED (A,B,C)!$OMP PARALLEL DO &!$OMP SHARED (A,B,C)

26 OMP-1 26 OpenMP ディレクィヴ (C) #pragma omp directive_name [clause[[,] clause] ] 継続行は \ 小文字を使用 ( 変数名以外 ) #pragma omp parallel for shared (a,b,c)

27 OMP-1 27 PARALLEL DO!$OMP PARALLEL DO[clause[[,] clause] ] (do_loop)!$omp END PARALLEL DO #pragma omp parallel for [clause[[,] clause] ] (for_loop) 多重スレッドによって実行される領域を定義し,DO ループの並列化を実施する 並び項目 (clause): よく利用するもの PRIVATE(list) SHARED(list) DEFAULT(PRIVATE SHARED NONE) REDUCTION({operation intrinsic}: list)

28 OMP-1 28 REDUCTION REDUCTION ({operator instinsic}: list) reduction ({operator instinsic}: list) MPI_REDUCE のようなものと思えばよい Operator +,*,-,.AND.,.OR.,.EQV.,.NEQV. Intrinsic MAX,MIN,IAND,IOR,IEQR

29 OMP-1 29 実例 A1: 簡単なループ!$OMP PARALLEL DO do i= 1, N B(i)= (A(i) + B(i)) * 0.50!$OMP END PARALLEL DO ループの繰り返し変数 ( ここでは i ) はデフォルトで private なので, 明示的に宣言は不要 END PARALLEL DO は省略可能 C 言語ではそもそも存在しない

30 OMP-1 30 実例 A2:REDUCTION!$OMP PARALLEL DO DEFAULT(PRIVATE) REDUCTION(+:A,B) do i= 1, N call WORK (Alocal, Blocal) A= A + Alocal B= B + Blocal!$OMP END PARALLEL DO END PARALLEL DO は省略可能

31 31 OpenMP 使用時に呼び出すことのできる 関数群 関数名 int omp_get_num_threads (void) int omp_get_thread_num (void) double omp_get_wtime (void) void omp_set_num_threads (int num_threads) call omp_set_num_threads (num_threads) 内容スレッド総数自スレッドのID MPI_Wtimeと同じスレッド数設定

32 OMP-1 32 OpenMP を適用するには?( 内積 ) VAL= 0.d0 do i= 1, N VAL= VAL + W(i,R) * W(i,Z)

33 OMP-1 33 OpenMP を適用するには?( 内積 ) VAL= 0.d0 do i= 1, N VAL= VAL + W(i,R) * W(i,Z) VAL= 0.d0!$OMP PARALLEL DO PRIVATE(i) REDUCTION(+:VAL) do i= 1, N VAL= VAL + W(i,R) * W(i,Z)!$OMP END PARALLEL DO OpenMP ディレクティヴの挿入これでも並列計算は可能

34 OMP-1 34 OpenMP を適用するには?( 内積 ) VAL= 0.d0 do i= 1, N VAL= VAL + W(i,R) * W(i,Z) VAL= 0.d0!$OMP PARALLEL DO PRIVATE(i) REDUCTION(+:VAL) do i= 1, N VAL= VAL + W(i,R) * W(i,Z)!$OMP END PARALLEL DO OpenMP ディレクティヴの挿入これでも並列計算は可能 VAL= 0.d0!$OMP PARALLEL DO PRIVATE(ip,i) REDUCTION(+:VAL) do ip= 1, PEsmpTOT do i= index(ip-1)+1, index(ip) VAL= VAL + W(i,R) * W(i,Z)!$OMP END PARALLEL DO 多重ループの導入 PEsmpTOT: スレッド数あらかじめ INDEX(:) を用意しておくより確実に並列計算実施 ( 別に効率がよくなるわけでは無い )

35 OMP-1 35 OpenMP を適用するには?( 内積 ) VAL= 0.d0 do i= 1, N VAL= VAL + W(i,R) * W(i,Z) VAL= 0.d0!$OMP PARALLEL DO PRIVATE(i) REDUCTION(+:VAL) do i= 1, N VAL= VAL + W(i,R) * W(i,Z)!$OMP END PARALLEL DO OpenMP ディレクティヴの挿入これでも並列計算は可能 VAL= 0.d0!$OMP PARALLEL DO PRIVATE(ip,i) REDUCTION(+:VAL) do ip= 1, PEsmpTOT do i= index(ip-1)+1, index(ip) VAL= VAL + W(i,R) * W(i,Z)!$OMP END PARALLEL DO 多重ループの導入 PEsmpTOT: スレッド数あらかじめ INDEX(:) を用意しておくより確実に並列計算実施 PEsmpTOT 個のスレッドが立ち上がり, 並列に実行

36 OMP-1 36 OpenMP を適用するには?( 内積 ) VAL= 0.d0!$OMP PARALLEL DO PRIVATE(ip,i) REDUCTION(+:VAL) do ip= 1, PEsmpTOT do i= index(ip-1)+1, index(ip) VAL= VAL + W(i,R) * W(i,Z)!$OMP END PARALLEL DO 多重ループの導入 PEsmpTOT: スレッド数あらかじめ INDEX(:) を用意しておくより確実に並列計算実施 PEsmpTOT 個のスレッドが立ち上がり, 並列に実行 例えば,N=100,PEsmpTOT=4 とすると : 各要素が計算されるスレッドを指定できる INDEX(0)= 0 INDEX(1)= 25 INDEX(2)= 50 INDEX(3)= 75 INDEX(4)= 100

37 37 Matrix-Vector Multiply do i = 1, N VAL= D(i)*W(i,P) do k= indexl(i-1)+1, indexl(i) VAL= VAL + AL(k)*W(itemL(k),P) do k= indexu(i-1)+1, indexu(i) VAL= VAL + AU(k)*W(itemU(k),P) W(i,Q)= VAL

38 38 Matrix-Vector Multiply!$omp parallel do private(ip,i,val,k) do ip= 1, PEsmpTOT do i = INDEX(ip-1)+1, INDEX(ip) VAL= D(i)*W(i,P) do k= indexl(i-1)+1, indexl(i) VAL= VAL + AL(k)*W(itemL(k),P) do k= indexu(i-1)+1, indexu(i) VAL= VAL + AU(k)*W(itemU(k),P) W(i,Q)= VAL!$omp end parallel do

39 39 Matrix-Vector Multiply: Other Approach This is rather better for GPU and (very) many-core architectures: simpler structure of loops!$omp parallel do private(i,val,k) do i = 1, N VAL= D(i)*W(i,P) do k= indexl(i-1)+1, indexl(i) VAL= VAL + AL(k)*W(itemL(k),P) do k= indexu(i-1)+1, indexu(i) VAL= VAL + AU(k)*W(itemU(k),P) W(i,Q)= VAL!$omp end parallel do

40 40 omp parallel (do) omp parallel-omp end parallel はそのたびにスレッドを生成, 消滅させる :fork-join ループが連続するとこれがオーバーヘッドになることがある omp parallel + omp do/omp for!$omp parallel...!$omp do do i= 1, N...!$omp do do i= 1, N...!$omp end parallel 必須 #pragma omp parallel... #pragma omp for {... #pragma omp for {

41 41 OpenMP Login to Reedbush-U (separate file) [1] Parallel Version of the Code by OpenMP STREAM Data Dependency

42 42 OpenMP Login to Reedbush-U Parallel Version of the Code by OpenMP STREAM Data Dependency

43 43 ここでの目標 solve_pcg( 対角スケーリング, 点ヤコビ前処理付き CG 法 ) の並列化 solver_pcg.f/c (solve_pcg) OpenMP 指示行を入れるだけ (Index 使わない ) でやってみる

44 OMP-1 44 前処理付共役勾配法 Preconditioned Conjugate Gradient Method (PCG) Compute r (0) = b-[a]x (0) for i= 1, 2, solve [M]z (i-1) = r (i-1) ρ i-1 = r (i-1) z (i-1) if i=1 p (1) = z (0) else β i-1 = ρ i-1 /ρ i-2 p (i) = z (i-1) + β i-1 p (i-1) endif q (i) = [A]p (i) α i = ρ i-1 /p (i) q (i) x (i) = x (i-1) + α i p (i) r (i) = r (i-1) - α i q (i) check convergence r end 実際にやるべき計算は : { } [ ] 1 z = M { r} 近似逆行列 の計算が必要 : [ ] 1 [ ] 1 M A, [ M ] [ A] 究極の前処理 : 本当の逆行列 [ ] 1 [ ] 1 M = A, [ M ] = [ A] 対角スケーリング : 簡単 = 弱い [ ] 1 [ ] 1 M = D, [ M ] = [ D]

45 OMP-1 45 対角スケーリング, 点ヤコビ前処理 前処理行列として, もとの行列の対角成分のみを取り出した行列を前処理行列 [M] とする 対角スケーリング, 点ヤコビ (point-jacobi) 前処理 [ M ] = D D solve [M]z (i-1) = r (i-1) という場合に逆行列を簡単に求めることができる 簡単な問題では収束する D 0 0 N D N

46 solve_pcg (1/3) do i= 1, N X(i) = 0.d0 W(i,2)= 0.0D0 W(i,3)= 0.0D0 W(i,DD)= 1.d0/D(i) ITR= N do L= 1, ITR!C!C !C {z}= [Minv]{r}!C !C=== do i= 1, N W(i,Z)= W(i,R)*W(i,DD)!C===!C!C !C RHO= {r}{z}!c !C=== RHO= 0.d0 do i= 1, N RHO= RHO + W(i,R)*W(i,Z)!C=== Compute r (0) = b-[a]x (0) for i= 1, 2, solve [M]z (i-1) = r (i-1) ρ i-1 = r (i-1) z (i-1) if i=1 p (1) = z (0) else β i-1 = ρ i-1 /ρ i-2 p (i) = z (i-1) + β i-1 p (i-1) endif q (i) = [A]p (i) α i = ρ i-1 /p (i) q (i) x (i) = x (i-1) + α i p (i) r (i) = r (i-1) - α i q (i) check convergence r end

47 solve_pcg (2/3) 47!C!C !C {p} = {z} if ITER=1!C BETA= RHO / RHO1 otherwise!c !C=== if ( L.eq.1 ) then do i= 1, N W(i,P)= W(i,Z) else BETA= RHO / RHO1 do i= 1, N W(i,P)= W(i,Z) + BETA*W(i,P) endif!c===!c!c !C {q}= [A]{p}!C !C=== do i= 1, N VAL= D(i)*W(i,P) do k= indexl(i-1)+1, indexl(i) VAL= VAL + AL(k)*W(itemL(k),P) do k= indexu(i-1)+1, indexu(i) VAL= VAL + AU(k)*W(itemU(k),P) W(i,Q)= VAL!C=== Compute r (0) = b-[a]x (0) for i= 1, 2, solve [M]z (i-1) = r (i-1) ρ i-1 = r (i-1) z (i-1) if i=1 p (1) = z (0) else β i-1 = ρ i-1 /ρ i-2 p (i) = z (i-1) + β i-1 p (i-1) endif q (i) = [A]p (i) α i = ρ i-1 /p (i) q (i) x (i) = x (i-1) + α i p (i) r (i) = r (i-1) - α i q (i) check convergence r end

48 solve_pcg (3/3) 48!C!C !C ALPHA= RHO / {p}{q}!c !C=== C1= 0.d0 do i= 1, N C1= C1 + W(i,P)*W(i,Q) ALPHA= RHO / C1!C===!C !C {x}= {x} + ALPHA*{p}!C {r}= {r} - ALPHA*{q}!C !C=== do i= 1, N X(i) = X(i) + ALPHA * W(i,P) W(i,R)= W(i,R) - ALPHA * W(i,Q) DNRM2= 0.d0 do i= 1, N DNRM2= DNRM2 + W(i,R)**2!C=== ERR = dsqrt(dnrm2/bnrm2) if (ERR.lt. EPS) then IER = 0 goto 900 else RHO1 = RHO endif r= b-[a]x DNRM2= r 2 BNRM2= b 2 Compute r (0) = b-[a]x (0) for i= 1, 2, solve [M]z (i-1) = r (i-1) ρ i-1 = r (i-1) z (i-1) if i=1 p (1) = z (0) else β i-1 = ρ i-1 /ρ i-2 p (i) = z (i-1) + β i-1 p (i-1) endif q (i) = [A]p (i) α i = ρ i-1 /p (i) q (i) x (i) = x (i-1) + α i p (i) r (i) = r (i-1) - α i q (i) check convergence r end IER = 1 ERR= r / b

49 49 module solver_pcg contains solve_pcg (1/5) parallel computing by OpenMP subroutine solve_pcg & & ( N, NPL, NPU, indexl, iteml, indexu, itemu, D, B, X, & & AL, AU, EPS, ITR, IER, N2) use omp_lib implicit REAL*8 (A-H,O-Z) integer :: N, NL, NU, N2 real(kind=8), dimension(n) :: D, B, X real(kind=8), dimension(npl) :: AL real(kind=8), dimension(npu) :: AU integer, dimension(0:n) :: indexl, indexu integer, dimension(npl):: iteml integer, dimension(npu):: itemu real(kind=8), dimension(:,:), allocatable :: W integer, parameter :: R= 1 integer, parameter :: Z= 2 integer, parameter :: Q= 2 integer, parameter :: P= 3 integer, parameter :: DD= 4

50 solve_pcg (2/5) 50!$omp parallel do private(i) do i= 1, N X(i) = 0.d0 W(i,2)= 0.0D0 W(i,3)= 0.0D0 W(i,DD)= 1.d0/D(i)!$omp parallel do private(i,val,k) do i= 1, N VAL= D(i)*X(i) do k= indexl(i-1)+1, indexl(i) VAL= VAL + AL(k)*X(itemL(k)) do k= indexu(i-1)+1, indexu(i) VAL= VAL + AU(k)*X(itemU(k)) W(i,R)= B(i) - VAL BNRM2= 0.0D0!$omp parallel do private(i) reduction(+:bnrm2) do i= 1, N BNRM2 = BNRM2 + B(i) **2 Compute r (0) = b-[a]x (0) for i= 1, 2, solve [M]z (i-1) = r (i-1) ρ i-1 = r (i-1) z (i-1) if i=1 p (1) = z (0) else β i-1 = ρ i-1 /ρ i-2 p (i) = z (i-1) + β i-1 p (i-1) endif q (i) = [A]p (i) α i = ρ i-1 /p (i) q (i) x (i) = x (i-1) + α i p (i) r (i) = r (i-1) - α i q (i) check convergence r end

51 solve_pcg (3/5) 51 ITR= N Stime= omp_get_wtime() do L= 1, ITR!$omp parallel do private(i) do i= 1, N W(i,Z)= W(i,R)*W(i,DD) RHO= 0.d0!$omp parallel do private(i) reduction(+:rho) do i= 1, N RHO= RHO + W(i,R)*W(i,Z) if ( L.eq.1 ) then!$omp parallel do private(i) do i= 1, N W(i,P)= W(i,Z) else BETA= RHO / RHO1!$omp parallel do private(i) do i= 1, N W(i,P)= W(i,Z) + BETA*W(i,P) endif Compute r (0) = b-[a]x (0) for i= 1, 2, solve [M]z (i-1) = r (i-1) ρ i-1 = r (i-1) z (i-1) if i=1 p (1) = z (0) else β i-1 = ρ i-1 /ρ i-2 p (i) = z (i-1) + β i-1 p (i-1) endif q (i) = [A]p (i) α i = ρ i-1 /p (i) q (i) x (i) = x (i-1) + α i p (i) r (i) = r (i-1) - α i q (i) check convergence r end

52 solve_pcg (4/5) 52!$omp parallel do private(i,val,k) do i= 1, N VAL= D(i)*W(i,P) do k= indexl(i-1)+1, indexl(i) VAL= VAL + AL(k)*W(itemL(k),P) do k= indexu(i-1)+1, indexu(i) VAL= VAL + AU(k)*W(itemU(k),P) W(i,Q)= VAL C1= 0.d0!$omp parallel do private(i) reduction(+:c1) do i= 1, N C1= C1 + W(i,P)*W(i,Q) ALPHA= RHO / C1!$omp parallel do private(i) do i= 1, N X(i) = X(i) + ALPHA * W(i,P) W(i,R)= W(i,R) - ALPHA * W(i,Q) Compute r (0) = b-[a]x (0) for i= 1, 2, solve [M]z (i-1) = r (i-1) ρ i-1 = r (i-1) z (i-1) if i=1 p (1) = z (0) else β i-1 = ρ i-1 /ρ i-2 p (i) = z (i-1) + β i-1 p (i-1) endif q (i) = [A]p (i) α i = ρ i-1 /p (i) q (i) x (i) = x (i-1) + α i p (i) r (i) = r (i-1) - α i q (i) check convergence r end DNRM2= 0.d0!$omp parallel do private(ip,i) reduction(+:dnrm2) do i= 1, N DNRM2= DNRM2 + W(i,R)**2 ERR = dsqrt(dnrm2/bnrm2)...

53 solve_pcg (5/5) Stime = omp_get_wtime() do L= 1, ITR if (ERR.lt. EPS) then IER = 0 goto 900 else RHO1 = RHO endif Elapsed Time= Etime - Stime IER = continue Etime= omp_get_wtime() write (*,'(i5,2(1pe16.6))') L, ERR write (*,'(1pe16.6, a)') Etime-Stime, ' sec. (solver)' ITR= L deallocate (W) return end

54 OMP-1 54 >$ cdw ファイルコピー :Reedbush-U >$ cp /lustre/gt00/z30088/omp/omp-c.tar. >$ cp /lustre/gt00/z30088/omp/omp-f.tar. >$ tar xvf omp-c.tar >$ tar xvf omp-f.tar >$ cd multicore 以下のディレクトリが出来ていることを確認 omp stream >$ cd omp/src20 >$ make >$ cd../run >$ qsub go.sh

55 <$O-omp>/src20/Makefile parallel computing by OpenMP F90 = ifort F90OPTFLAGS= -O3 -qopenmp -ipo -xcore-avx2 -align array32byte F90FLAGS =$(F90OPTFLAGS).SUFFIXES:.SUFFIXES:.o.f.f90.c #.f90.o:; $(F90) -c $(F90FLAGS) $(F90OPTFLAG) $<.f.o:; $(F90) -c $(F90FLAGS) $(F90OPTFLAG) $< # OBJS = solver_pcg.o rcm.o struct.o pcg.o boundary_cell.o cell_metrics.o input.o main.o poi_gen.o pointer_init.o outucd.o TARGET =../run/sol20 all: $(TARGET) $(TARGET): $(OBJS) $(F90) $(F90FLAGS) -o $(TARGET) $(OBJS) $(F90FLAGS) clean: rm -f *.o $(TARGET) *.mod *~ PI* 55

56 56 ジョブ実行 実行方法 基本的にバッチジョブのみ インタラクティヴの実行は 基本的に できません 実行手順 ジョブスクリプトを書きます ジョブを投入します ジョブの状態を確認します 結果を確認します その他 実行時には 1 ノード (16 コア ) が占有されます 他のユーザーのジョブに使われることはありません

57 57 Reedbush-U ノードのブロック図 1 ノード :2CPU( ソケット ) 18 コア 基本的に 1 ソケット (1CPU) のみ使う 18 コア Socket #0 Socket #1

58 ジョブスクリプト (1/2)go1.sh /luster/gt00/t00xxx/multicore/omp/run/go1.sh スケジューラへの指令 + シェルスクリプト #!/bin/sh #PBS -q u-tutorial 実行キュー名 #PBS -N test ジョブ名称 ( 省略可 ) #PBS -l select=1:ncpus=18 ノード数, コア数 (1-18) #PBS -Wgroup_list=gt00 グループ名 ( 財布 ) #PBS -l walltime=00:05:00 実行時間 #PBS -e test.err エラー出力ファイル #PBS -o test.lst 標準出力ファイル C cd $PBS_O_WORKDIR 実行ディレクトリへ移動. /etc/profile.d/modules.sh 必須 58 export OMP_NUM_THREADS=18 スレッド数 (=ncpus, 1-18) export KMP_AFFINITY=granularity=fine,compact numactl./sol20 プログラム実行 numactl は必ず付けておく export KMP_AFFINITY=granularity=fine,compact 各スレッドがSocket#0の0 番から始まる各コアに順番に割り当てられる

59 ジョブスクリプト (1/2)go2.sh /luster/gt00/t00xxx/multicore/omp/run/go2.sh スケジューラへの指令 + シェルスクリプト #!/bin/sh #PBS -q u-tutorial 実行キュー名 #PBS -N test ジョブ名称 ( 省略可 ) #PBS -l select=1:ncpus=18 ノード数, コア数 (1-18) #PBS -Wgroup_list=gt00 グループ名 ( 財布 ) #PBS -l walltime=00:05:00 実行時間 #PBS -e test.err エラー出力ファイル #PBS -o test.lst 標準出力ファイル C cd $PBS_O_WORKDIR 実行ディレクトリへ移動. /etc/profile.d/modules.sh 必須 59 export OMP_NUM_THREADS=18 スレッド数 (=ncpus, 1-18) numactl./sol20 プログラム実行 numactl は必ず付けておく 各スレッドが Socket#0/#1 の各コアにランダムに割り当てられる

60 60 >$ cdw >$ cd multicore/omp/run >$ qsub go1.sh >$ cat test.lst ジョブ投入 INPUT.DAT NX NY NZ 1.00e e e-00 DX/DY/DZ 1.0e-08 EPSICCG

61 61 利用可能なキュー 以下の 2 種類のキューを利用可能 最大 8 ノードを使える u-lecture 8 ノード (288 コア ),10 分, アカウント有効期間中利用可能 全教育ユーザーで共有 u-tutorial 4 ノード (144 コア ),10 分, 講義 演習実施時間帯 lecture よりは多くのジョブを投入可能 ( 混み具合による ) 61 MPI Programming

62 バッチ処理とは スパコン環境では 通常は インタラクティブ実行 ( コマンドラインで実行すること ) はできません ジョブはバッチ処理で実行します バッチキュー ジョブの依頼 バッチ処理システムがジョブを取り出す 実行 ユーザ スパコン 62

63 バッチ処理を用いたジョブの実行方法 Reedbush システムにおいてバッチ処理は Altuir 社のバッチシステム PBS Professionul で管理されています ジョブの投入 : qsub< ジョブスクリプトファイル名 > #!/bin/bash #PBS -q u-lecture #PBS -Wgroup_list=gt00 #PBS -l select=8:mpiprocs=36 #PBS -l walltime=00:01:00 cd $PBS_O_WORKDIR. /etc/profile.d/modules.sh mpirun./hello ジョブスクリプトファイルの例 キュー名 :u-lecture 利用グループ名 :gt00 63

64 バッチ処理システムの使い方 主要コマンド (Reedbush の場合 ) ジョブの投入 : qsub< ジョブスクリプトファイル名 > 自分が投入したジョブの状況確認 : rbstut 投入ジョブの削除 : qdel < ジョブ ID> バッチキューの状態を見る : rbstut--rsc バッチキューの詳細構成を見る : rbstut rsc-x 投げられているジョブ数を見る : rbstut-b 過去の投入履歴を見る : rbstut H 同時に投入できる数 / 実行できる数を見る :rbstut--limit 64

65 rbstat--rsc の実行画面例 $ rbstat --rsc QUEUE STATUS NODE u-debug [ENABLE,START] 54 u-short [ENABLE,START] 16 u-regular [ENABLE,START] ---- u-small [ENABLE,START] u-medium [ENABLE,START] u-large [ENABLE,START] u-x-large [ENABLE,START] 288 u-interactive [ENABLE,START] ---- u-interactive_1 [ENABLE,START] u-interactive_4 [ENABLE,START] 54 u-lecture [ENABLE,START] 54 u-lecture8 [DISABLE,START] 54 u-tutorial [ENABLE,START] 使えるキュー名 ( リソースグループ ) 現在利用可能か 利用可能ノード数

66 rbstat--rsc-x の実行画面例 $ rbstat --rsc -x QUEUE STATUS MIN_NODE MAX_NODE MAX_ELAPSE REMAIN_ELAPSE MEM(GB)/NODE PROJECT u-debug [ENABLE,START] :30:00 00:30:00 244GB pz0105,gcxx u-short [ENABLE,START] :00:00 02:00:00 244GB pz0105,gcxx u-regular [ENABLE,START] ---- u-small [ENABLE,START] :00:00 12:00:00 244GB gcxx,pz u-medium [ENABLE,START] :00:00 12:00:00 244GB gcxx ---- u-large [ENABLE,START] :00:00 12:00:00 244GB gcxx ---- u-x-large [ENABLE,START] :00:00 06:00:00 244GB gcxx u-interactive [ENABLE,START] ---- u-interactive_1 [ENABLE,START] :15:00 00:15:00 244GB pz0105,gcxx ---- u-interactive_4 [ENABLE,START] :05:00 00:05:00 244GB pz0105,gcxx u-lecture [ENABLE,START] :10:00 00:10:00 244GB gt00,gtyy u-lecture8 [DISABLE,START] :10:00 00:10:00 244GB gtyy u-tutorial [ENABLE,START] :10:00 00:10:00 244GB gt00 使えるキュー名 ( リソースグループ ) 現在利用可能か ノードの実行情報 課金情報 ( 財布 ) 実習では 1 つのみ 66

67 rbstat--rsc-b の実行画面例 $ rbstat --rsc b QUEUE STATUS TOTAL RUNNING QUEUED HOLD BEGUN WAIT EXIT TRANSIT NODE u-debug [ENABLE,START] u-short [ENABLE,START] u-regular [ENABLE,START] ---- u-small [ENABLE,START] u-medium [ENABLE,START] u-large [ENABLE,START] u-x-large [ENABLE,START] u-interactive [ENABLE,START] ---- u-interactive_1 [ENABLE,START] u-interactive_4 [ENABLE,START] u-lecture [ENABLE,START] u-lecture8 [DISABLE,START] u-tutorial [ENABLE,START] 使えるキュー名 ( リソースグループ ) 現在使えるか ジョブの総数 実行しているジョブの数 待たされているジョブの数 ノードの利用可能数 67

68 68 PCG 計算時間 : Etime-Stime NX=NY=NZ=100,go1.sh 実行時間 : 安定しない :5 回くらい測定して一番速い時間を採用する :numactl をはずすと安定するが遅い Parallel Performance (%) IFLAG=0, compact Thre ad # sec Speed-up Large 大 Thread # Granularity 粒度 Problem Size/Thread Small 小

69 go1.sh Only cores on a single socket used 69 #!/bin/sh #PBS -q u-tutorial #PBS -N test01 #PBS -l select=1:ncpus=18 1,2,4,8,12,16,18 #PBS -Wgroup_list=gt00 #PBS -l walltime=00:10:00 #PBS -e test1.err #PBS -o test1.lst cd $PBS_O_WORKDIR. /etc/profile.d/modules.sh export KMP_AFFINITY=granularity=fine,compact export OMP_NUM_THREADS=18 1,2,4,8,12,16,18 numactl./sol20

70 go2.sh cores are randomly selected from 2 sockets 70 #!/bin/sh #PBS -q u-tutorial #PBS -N test01 #PBS -l select=1:ncpus=18 1,2,4,8,12,16,18 #PBS -Wgroup_list=gt00 #PBS -l walltime=00:10:00 #PBS -e test2.err #PBS -o test2.lst cd $PBS_O_WORKDIR. /etc/profile.d/modules.sh export KMP_AFFINITY=granularity=fine,compact export OMP_NUM_THREADS=18 1,2,4,8,12,16,18 numactl./sol20

71 Parallel Performance (%) Results: Parallel Performance NX=NY=NZ=100, IFLAG=0 Measurement: 5 times, best case go2.sh is better if Thread # is more than 8 based on IFLAG=0, compact with 1 thread IFLAG=0, compact IFLAG=0 go1.sh go2.sh Thread #

72 Results: Fluctuation Rate NX=NY=NZ=100, IFLAG=0 Measurement: 5 times, (Worst-Best)/Best Core Allocation of go2.sh is random 72 Fluctuation (%) IFLAG=0, compact IFLAG=0 go1.sh go2.sh Thread #

73 Reedbush-U 1-node: 2-CPU s/sockets cores 18 cores Socket #0 Socket #1 Each Node of Reedbush-U 2 Sockets (CPU s) of Intel Broadwell-EP Each socket has 18 cores Each core of a socket can access to the memory on the other socket : NUMA (Non-Uniform Memory Access) Utilization of the local memory is more efficient So far, only a single socket has been used Let s utilize both sockets

74 74 Exercises Effect of problem size (NX, NY, NZ) Effect of Thread # (OMP_NUM_THREADS: 1-18)

75 75 OpenMP Login to Reedbush-U Parallel Version of the Code by OpenMP STREAM Data Dependency

76 OMP-3 76 何故 18 倍にならないか? 18 スレッドがメモリにアクセスすると,1 スレッドの場合と比較して, スレッド当り ( コア当り ) メモリ性能は低下 飽和 疎行列は memory-bound なためその傾向がより顕著 疎行列計算の高速化 : 研究途上の課題

77 77 疎行列 密行列 do i= 1, N Y(i)= D(i)*X(i) do k= index(i-1)+1, index(i) kk= item(k) Y(i)= Y(i) + AMAT(k)*X(kk) do j= 1, N Y(j)= 0.d0 do i= 1, N Y(j)= Y(j) + A(i,j)*X(i) X in RHS 密行列 : 連続アクセス, キャッシュ有効利用 疎行列 : 連続性は保証されず, キャッシュを有効に活用できず より memory-bound

78 OMP-3 78 GeoFEM Benchmark ICCG 法の性能 ( 固体力学向け ) SR11K/J2 SR16K/M1 T2K FX10 京 Core #/Node Peak Performance (GFLOPS) STREAM Triad (GB/s) B/F GeoFEM (GFLOPS) % to Peak LLC/core (MB) 疎行列ソルバー :Memory-Bound

79 STREAM benchmark メモリバンド幅を測定するベンチマーク Copy: c(i)= a(i) Scale: c(i)= s*b(i) Add: c(i)= a(i) + b(i) Triad: c(i)= a(i) + s*b(i) Double precision appears to have 16 digits of accuracy Assuming 8 bytes per DOUBLE PRECISION word Number of processors = 16 Array size = Offset = 0 The total memory requirement is MB ( 45.8MB/task) You are running each test 10 times -- The *best* time for each test is used *EXCLUDING* the first and last iterations Function Rate (MB/s) Avg time Min time Max time Copy: Scale: Add: Triad:

80 80 マイクロプロセッサの動向 CPU 性能, メモリバンド幅のギャップ

81 OMP-1 81 実行 :MPI バージョン >$ cdw >$ cd multicore/stream >$ mpiifort -O3 -xcore-avx2 -align array32byte stream.f o stream >$ qsub XXX.sh 18 cores 18 cores Socket #0 0 th -17 th cores Socket #1 18 th -35 th cores

82 82 #!/bin/sh s01.sh: Use 1 core (0 th ) #PBS -q u-tutorial #PBS -N stream #PBS -l select=1:mpiprocs=1 MPI Process #(1-36) #PBS -Wgroup_list=gt00 #PBS -l walltime=00:05:00 #PBS -e err #PBS -o t01.lst cd $PBS_O_WORKDIR. /etc/profile.d/modules.sh export I_MPI_PIN_PROCESSOR_LIST=0 mpirun./impimap.sh./stream use 0th core

83 83 s16.sh: Use 16 cores (0-15 th ) #!/bin/sh #PBS -q u-tutorial #PBS -N stream #PBS -l select=1:mpiprocs=16 MPI Process #(1-36) #PBS -Wgroup_list=gt00 #PBS -l walltime=00:05:00 #PBS -e err #PBS -o t16.lst cd $PBS_O_WORKDIR. /etc/profile.d/modules.sh export I_MPI_PIN_PROCESSOR_LIST=0-15 use 0-15th core mpirun./impimap.sh./stream

84 84 s32.sh: Use 32 cores (16 ea) #!/bin/sh #PBS -q u-tutorial #PBS -N stream #PBS -l select=1:mpiprocs=32 MPI Process #(1-36) #PBS -Wgroup_list=gt00 #PBS -l walltime=00:05:00 #PBS -e err #PBS -o t32.lst cd $PBS_O_WORKDIR. /etc/profile.d/modules.sh export I_MPI_PIN_PROCESSOR_LIST=0-15,18-33 mpirun./impimap.sh./stream

85 85 #!/bin/sh s36.sh: Use 36 cores (ALL) #PBS -q u-tutorial #PBS -N stream #PBS -l select=1:mpiprocs=36 MPI Process #(1-36) #PBS -Wgroup_list=gt00 #PBS -l walltime=00:05:00 #PBS -e err #PBS -o t36.lst cd $PBS_O_WORKDIR. /etc/profile.d/modules.sh export I_MPI_PIN_PROCESSOR_LIST=0-35 mpirun./impimap.sh./stream

86 86 Results of Triad on a Single Node of Reedbush-U, Peak is GB/sec. Thread # GB/sec Speed-up

87 87 Exercises Running the code Try various number of threads (1-36) export I_MPI_PIN_PROCESSOR_LIST=0-7 export I_MPI_PIN_PROCESSOR_LIST=0-3,18-21 OpenMP-version and Single PE version are available Fortran,C

88 88 OpenMP Login to Reedbush-U Parallel Version of the Code by OpenMP STREAM Data Dependency

89 OMP-1 89 ICCG 法の並列化 内積 :OK DAXPY:OK 行列ベクトル積 :OK 前処理

90 OMP-1 90 前処理はどうするか? 対角スケーリングなら簡単 : でも遅い do i= 1, N W(i,Z)= W(i,R)*W(i,DD)!$omp parallel do private(i) do i = 1, N W(i,Z)= W(i,R)*W(i,DD)!$omp end parallel do!$omp parallel do private(ip,i) do ip= 1, PEsmpTOT do i = INDEX(ip-1)+1, INDEX(ip) W(i,Z)= W(i,R)*W(i,DD)!$omp end parallel do 64*64*64 METHOD= E E E-09 real 0m14.662s METHOD= E E E E E E-09 real 0m19.660s

91 OMP-1 91 前処理はどうするか? 不完全修正コレスキー分解 前進代入 do i= 1, N VAL= D(i) do k= indexl(i-1)+1, indexl(i) VAL= VAL - (AL(k)**2) * W(itemL(k),DD) W(i,DD)= 1.d0/VAL do i= 1, N WVAL= W(i,Z) do k= indexl(i-1)+1, indexl(i) WVAL= WVAL - AL(k) * W(itemL(k),Z) W(i,Z)= WVAL * W(i,DD)

92 OMP-1 92 データ依存性 : メモリの読み込みと書き 出しが同時に発生し, 並列化困難 不完全修正コレスキー分解 前進代入 do i= 1, N VAL= D(i) do k= indexl(i-1)+1, indexl(i) VAL= VAL - (AL(k)**2) * W(itemL(k),DD) W(i,DD)= 1.d0/VAL do i= 1, N WVAL= W(i,Z) do k= indexl(i-1)+1, indexl(i) WVAL= WVAL - AL(k) * W(itemL(k),Z) W(i,Z)= WVAL * W(i,DD)

93 OMP-1 93 前進代入 4 スレッドによる並列化を試みる do i= 1, N WVAL= W(i,Z) do k= indexl(i-1)+1, indexl(i) WVAL= WVAL - AL(k) * W(itemL(k),Z) W(i,Z)= WVAL * W(i,DD)

94 OMP-1 94 前進代入 4 スレッドによる並列化を試みる !$omp parallel do private (ip,i,k,val) do ip= 1, 4 do i= INDEX(ip-1)+1, INDEX(ip) WVAL= W(i,Z) do k= indexl(i-1)+1, indexl(i) WVAL= WVAL - AL(k) * W(itemL(k),Z) W(i,Z)= WVAL * W(i,DD)!$omp parallel INDEX(0)= 0 INDEX(1)= 4 INDEX(2)= 8 INDEX(3)=12 INDEX(4)=16 do i=1,4 do i=5,8 do i=9,12 do i=13,16 このような 4 スレッドが同時に実施される

95 OMP-1 95 データ依存性 : メモリへの書き出し, 読み込みが同時に発生 !$omp parallel do private (ip,i,k,val) do ip= 1, 4 do i= INDEX(ip-1)+1, INDEX(ip) WVAL= W(i,Z) do k= indexl(i-1)+1, indexl(i) WVAL= WVAL - AL(k) * W(itemL(k),Z) W(i,Z)= WVAL * W(i,DD)!$omp parallel INDEX(0)= 0 INDEX(1)= 4 INDEX(2)= 8 INDEX(3)=12 INDEX(4)=16 #0 thread #1 thread #2 thread #3 thread の部分にデータ依存性発生 (1 のときは下三角成分無し )

96 OMP-1 96 ICCG 法の並列化 内積 :OK DAXPY:OK 行列ベクトル積 :OK 前処理 : なんとかしなければならない 単純に OpenMP などの指示行 (directive) を挿入しただけでは 並列化 できない

OpenACCによる並列化

OpenACCによる並列化 実習 OpenACC による ICCG ソルバーの並列化 1 ログイン Reedbush へのログイン $ ssh reedbush.cc.u-tokyo.ac.jp l txxxxx Module のロード $ module load pgi/17.3 cuda ログインするたびに必要です! ワークディレクトリに移動 $ cdw ターゲットプログラム /srcx OpenACC 用のディレクトリの作成

More information

Microsoft PowerPoint - stream.ppt [互換モード]

Microsoft PowerPoint - stream.ppt [互換モード] STREAM 1 Quad Opteron: ccnuma Arch. AMD Quad Opteron 2.3GHz Quad のソケット 4 1 ノード (16コア ) 各ソケットがローカルにメモリを持っている NUMA:Non-Uniform Access ローカルのメモリをアクセスして計算するようなプログラミング, データ配置, 実行時制御 (numactl) が必要 cc: cache-coherent

More information

Reedbush 利用の手引き 2 ノートパソコンの設定 : 公開鍵の生成 登録 ネットワーク環境に接続してから行ってください

Reedbush 利用の手引き 2 ノートパソコンの設定 : 公開鍵の生成 登録 ネットワーク環境に接続してから行ってください Reedbush 利用の手引き 1 お試しアカウント付き 並列プログラミング講習会 Reedbush 利用の手引き 東京大学情報基盤センター Reedbush 利用の手引き 2 ノートパソコンの設定 : 公開鍵の生成 登録 ネットワーク環境に接続してから行ってください Reedbush 利用の手引き 3 鍵の作成 1. ターミナルを起動する 2. 以下を入力する $ ssh- keygen t rsa

More information

OpenMP/OpenACC によるマルチコア メニィコア並列プログラミング入門 Fortran 編第 Ⅳ 部 :OpenMP による並列化 + 演習 中島研吾 東京大学情報基盤センター

OpenMP/OpenACC によるマルチコア メニィコア並列プログラミング入門 Fortran 編第 Ⅳ 部 :OpenMP による並列化 + 演習 中島研吾 東京大学情報基盤センター OpenMP/OpenACC によるマルチコア メニィコア並列プログラミング入門 Fortran 編第 Ⅳ 部 :OpenMP による並列化 + 演習 中島研吾 東京大学情報基盤センター OMP-3 1 OpenMP 並列化 L2-sol を OpenMP によって並列化する 並列化にあたってはスレッド数を PEsmpTOT によってプログラム内で調節できる方法を適用する 基本方針 同じ 色 ( または

More information

演習1: 演習準備

演習1: 演習準備 演習 1: 演習準備 2013 年 8 月 6 日神戸大学大学院システム情報学研究科森下浩二 1 演習 1 の内容 神戸大 X10(π-omputer) について システム概要 ログイン方法 コンパイルとジョブ実行方法 OpenMP の演習 ( 入門編 ) 1. parallel 構文 実行時ライブラリ関数 2. ループ構文 3. shared 節 private 節 4. reduction 節

More information

コードのチューニング

コードのチューニング OpenMP による並列化実装 八木学 ( 理化学研究所計算科学研究センター ) KOBE HPC Spring School 2019 2019 年 3 月 14 日 スレッド並列とプロセス並列 スレッド並列 OpenMP 自動並列化 プロセス並列 MPI プロセス プロセス プロセス スレッドスレッドスレッドスレッド メモリ メモリ プロセス間通信 Private Private Private

More information

Microsoft PowerPoint - 10-omp.ppt [互換モード]

Microsoft PowerPoint - 10-omp.ppt [互換モード] OpenMP+ ハイブリッド並列化 中島研吾 東京大学情報基盤センター 2 Hybrid 並列プログラミング スレッド並列 + メッセージパッシング OpenMP+ MPI UDA + MPI, OpenA + MPI 個人的には自動並列化 +MPI のことを ハイブリッド とは呼んでほしくない 自動並列化に頼るのは危険である 東大センターでは現在自動並列化機能はコンパイラの要件にしていない ( 調達時に加点すらしない

More information

課題 S1 解説 Fortran 編 中島研吾 東京大学情報基盤センター

課題 S1 解説 Fortran 編 中島研吾 東京大学情報基盤センター 課題 S1 解説 Fortran 編 中島研吾 東京大学情報基盤センター 内容 課題 S1 /a1.0~a1.3, /a2.0~a2.3 から局所ベクトル情報を読み込み, 全体ベクトルのノルム ( x ) を求めるプログラムを作成する (S1-1) file.f,file2.f をそれぞれ参考にする 下記の数値積分の結果を台形公式によって求めるプログラムを作成する

More information

openmp1_Yaguchi_version_170530

openmp1_Yaguchi_version_170530 並列計算とは /OpenMP の初歩 (1) 今 の内容 なぜ並列計算が必要か? スーパーコンピュータの性能動向 1ExaFLOPS 次世代スハ コン 京 1PFLOPS 性能 1TFLOPS 1GFLOPS スカラー機ベクトル機ベクトル並列機並列機 X-MP ncube2 CRAY-1 S-810 SR8000 VPP500 CM-5 ASCI-5 ASCI-4 S3800 T3E-900 SR2201

More information

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

OpenMP¤òÍѤ¤¤¿ÊÂÎó·×»»¡Ê£±¡Ë 2012 5 24 scalar Open MP Hello World Do (omp do) (omp workshare) (shared, private) π (reduction) PU PU PU 2 16 OpenMP FORTRAN/C/C++ MPI OpenMP 1997 FORTRAN Ver. 1.0 API 1998 C/C++ Ver. 1.0 API 2000 FORTRAN

More information

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

OpenMP¤òÍѤ¤¤¿ÊÂÎó·×»»¡Ê£±¡Ë 2011 5 26 scalar Open MP Hello World Do (omp do) (omp workshare) (shared, private) π (reduction) scalar magny-cours, 48 scalar scalar 1 % scp. ssh / authorized keys 133. 30. 112. 246 2 48 % ssh 133.30.112.246

More information

内容に関するご質問は まで お願いします [Oakforest-PACS(OFP) 編 ] 第 85 回お試しアカウント付き並列プログラミング講習会 ライブラリ利用 : 科学技術計算の効率化入門 スパコンへのログイン テストプログラム起動 東京大学情報基盤セ

内容に関するご質問は まで お願いします [Oakforest-PACS(OFP) 編 ] 第 85 回お試しアカウント付き並列プログラミング講習会 ライブラリ利用 : 科学技術計算の効率化入門 スパコンへのログイン テストプログラム起動 東京大学情報基盤セ 内容に関するご質問は ida@cc.u-tokyo.ac.jp まで お願いします [Oakforest-PACS(OFP) 編 ] 第 85 回お試しアカウント付き並列プログラミング講習会 ライブラリ利用 : 科学技術計算の効率化入門 スパコンへのログイン テストプログラム起動 東京大学情報基盤センター特任准教授伊田明弘 1 講習会 : ライブラリ利用 [FX10] スパコンへのログイン ファイル転送

More information

OpenMP (1) 1, 12 1 UNIX (FUJITSU GP7000F model 900), 13 1 (COMPAQ GS320) FUJITSU VPP5000/64 1 (a) (b) 1: ( 1(a))

OpenMP (1) 1, 12 1 UNIX (FUJITSU GP7000F model 900), 13 1 (COMPAQ GS320) FUJITSU VPP5000/64 1 (a) (b) 1: ( 1(a)) OpenMP (1) 1, 12 1 UNIX (FUJITSU GP7000F model 900), 13 1 (COMPAQ GS320) FUJITSU VPP5000/64 1 (a) (b) 1: ( 1(a)) E-mail: {nanri,amano}@cc.kyushu-u.ac.jp 1 ( ) 1. VPP Fortran[6] HPF[3] VPP Fortran 2. MPI[5]

More information

Oakforest-PACS 利用の手引き 2 ノートパソコンの設定 : 公開鍵の生成 登録

Oakforest-PACS 利用の手引き 2 ノートパソコンの設定 : 公開鍵の生成 登録 Oakforest-PACS 利用の手引き 1 お試しアカウント付き 並列プログラミング講習会 Oakforest-PACS 利用の手引き 東京大学情報基盤センター Oakforest-PACS 利用の手引き 2 ノートパソコンの設定 : 公開鍵の生成 登録 Oakforest-PACS 利用の手引き 3 鍵の作成 1. ターミナルを起動する 2. 以下を入力する $ ssh-keygen t rsa

More information

課題 S1 解説 C 言語編 中島研吾 東京大学情報基盤センター

課題 S1 解説 C 言語編 中島研吾 東京大学情報基盤センター 課題 S1 解説 C 言語編 中島研吾 東京大学情報基盤センター 内容 課題 S1 /a1.0~a1.3, /a2.0~a2.3 から局所ベクトル情報を読み込み, 全体ベクトルのノルム ( x ) を求めるプログラムを作成する (S1-1) file.f,file2.f をそれぞれ参考にする 下記の数値積分の結果を台形公式によって求めるプログラムを作成する

More information

Microsoft PowerPoint - OpenMP入門.pptx

Microsoft PowerPoint - OpenMP入門.pptx OpenMP 入門 須田礼仁 2009/10/30 初版 OpenMP 共有メモリ並列処理の標準化 API http://openmp.org/ 最新版は 30 3.0 バージョンによる違いはあまり大きくない サポートしているバージョンはともかく csp で動きます gcc も対応しています やっぱり SPMD Single Program Multiple Data プログラム #pragma omp

More information

Microsoft PowerPoint - 11-omp.pptx

Microsoft PowerPoint - 11-omp.pptx 並列有限要素法による 三次元定常熱伝導解析プログラム OpenMP+ ハイブリッド並列化 中島研吾東京大学情報基盤センター 2 Hybrid 並列プログラミング スレッド並列 + メッセージパッシング OpenMP+ MPI UDA + MPI, OpenA + MPI 個人的には自動並列化 +MPI のことを ハイブリッド とは呼んでほしくない 自動並列化に頼るのは危険である 東大センターでは現在自動並列化機能はコンパイラの要件にしていない

More information

<4D F736F F F696E74202D D F95C097F D834F E F93FC96E5284D F96E291E85F8DE391E52E >

<4D F736F F F696E74202D D F95C097F D834F E F93FC96E5284D F96E291E85F8DE391E52E > SX-ACE 並列プログラミング入門 (MPI) ( 演習補足資料 ) 大阪大学サイバーメディアセンター日本電気株式会社 演習問題の構成 ディレクトリ構成 MPI/ -- practice_1 演習問題 1 -- practice_2 演習問題 2 -- practice_3 演習問題 3 -- practice_4 演習問題 4 -- practice_5 演習問題 5 -- practice_6

More information

01_OpenMP_osx.indd

01_OpenMP_osx.indd OpenMP* / 1 1... 2 2... 3 3... 5 4... 7 5... 9 5.1... 9 5.2 OpenMP* API... 13 6... 17 7... 19 / 4 1 2 C/C++ OpenMP* 3 Fortran OpenMP* 4 PC 1 1 9.0 Linux* Windows* Xeon Itanium OS 1 2 2 WEB OS OS OS 1 OS

More information

NUMAの構成

NUMAの構成 共有メモリを使ったデータ交換と同期 慶應義塾大学理工学部 天野英晴 hunga@am.ics.keio.ac.jp 同期の必要性 あるプロセッサが共有メモリに書いても 別のプロセッサにはそのことが分からない 同時に同じ共有変数に書き込みすると 結果がどうなるか分からない そもそも共有メモリって結構危険な代物 多くのプロセッサが並列に動くには何かの制御機構が要る 不可分命令 同期用メモリ バリア同期機構

More information

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

OpenMP¤òÍѤ¤¤¿ÊÂÎó·×»»¡Ê£²¡Ë 2013 5 30 (schedule) (omp sections) (omp single, omp master) (barrier, critical, atomic) program pi i m p l i c i t none integer, parameter : : SP = kind ( 1. 0 ) integer, parameter : : DP = selected real

More information

Microsoft PowerPoint - 03_What is OpenMP 4.0 other_Jan18

Microsoft PowerPoint - 03_What is OpenMP 4.0 other_Jan18 OpenMP* 4.x における拡張 OpenMP 4.0 と 4.5 の機能拡張 内容 OpenMP* 3.1 から 4.0 への拡張 OpenMP* 4.0 から 4.5 への拡張 2 追加された機能 (3.1 -> 4.0) C/C++ 配列シンタックスの拡張 SIMD と SIMD 対応関数 デバイスオフロード task 構 の依存性 taskgroup 構 cancel 句と cancellation

More information

Microsoft PowerPoint - omp-03.ppt [互換モード]

Microsoft PowerPoint - omp-03.ppt [互換モード] Parallel Programming for Multicore Processors using OpenMP Part III: Parallel Version + Exercise Kengo Nakajima Information Technology enter Programming for Parallel omputing (616-2057) Seminar on Advanced

More information

I I / 47

I I / 47 1 2013.07.18 1 I 2013 3 I 2013.07.18 1 / 47 A Flat MPI B 1 2 C: 2 I 2013.07.18 2 / 47 I 2013.07.18 3 / 47 #PJM -L "rscgrp=small" π-computer small: 12 large: 84 school: 24 84 16 = 1344 small school small

More information

02_C-C++_osx.indd

02_C-C++_osx.indd C/C++ OpenMP* / 2 C/C++ OpenMP* OpenMP* 9.0 1... 2 2... 3 3OpenMP*... 5 3.1... 5 3.2 OpenMP*... 6 3.3 OpenMP*... 8 4OpenMP*... 9 4.1... 9 4.2 OpenMP*... 9 4.3 OpenMP*... 10 4.4... 10 5OpenMP*... 11 5.1

More information

Microsoft Word - openmp-txt.doc

Microsoft Word - openmp-txt.doc ( 付録 A) OpenMP チュートリアル OepnMP は 共有メモリマルチプロセッサ上のマルチスレッドプログラミングのための API です 本稿では OpenMP の簡単な解説とともにプログラム例をつかって説明します 詳しくは OpenMP の規約を決めている OpenMP ARB の http://www.openmp.org/ にある仕様書を参照してください 日本語訳は http://www.hpcc.jp/omni/spec.ja/

More information

GeoFEM開発の経験から

GeoFEM開発の経験から FrontISTR における並列計算のしくみ < 領域分割に基づく並列 FEM> メッシュ分割 領域分割 領域分割 ( パーティショニングツール ) 全体制御 解析制御 メッシュ hecmw_ctrl.dat 境界条件 材料物性 計算制御パラメータ 可視化パラメータ 領域分割ツール 逐次計算 並列計算 Front ISTR FEM の主な演算 FrontISTR における並列計算のしくみ < 領域分割に基づく並列

More information

演習準備

演習準備 演習準備 2014 年 3 月 5 日神戸大学大学院システム情報学研究科森下浩二 1 演習準備の内容 神戸大 FX10(π-Computer) 利用準備 システム概要 ログイン方法 コンパイルとジョブ実行方法 MPI 復習 1. MPIプログラムの基本構成 2. 並列実行 3. 1 対 1 通信 集団通信 4. データ 処理分割 5. 計算時間計測 2 神戸大 FX10(π-Computer) 利用準備

More information

OpenMPプログラミング

OpenMPプログラミング OpenMP 基礎 岩下武史 ( 学術情報メディアセンター ) 1 2013/9/13 並列処理とは 逐次処理 CPU1 並列処理 CPU1 CPU2 CPU3 CPU4 処理 1 処理 1 処理 2 処理 3 処理 4 処理 2 処理 3 処理 4 時間 2 2 種類の並列処理方法 プロセス並列 スレッド並列 並列プログラム 並列プログラム プロセス プロセス 0 プロセス 1 プロセス間通信 スレッド

More information

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

(Microsoft PowerPoint \215u\213`4\201i\221\272\210\344\201j.pptx) AICS 村井均 RIKEN AICS HPC Summer School 2012 8/7/2012 1 背景 OpenMP とは OpenMP の基本 OpenMP プログラミングにおける注意点 やや高度な話題 2 共有メモリマルチプロセッサシステムの普及 共有メモリマルチプロセッサシステムのための並列化指示文を共通化する必要性 各社で仕様が異なり 移植性がない そして いまやマルチコア プロセッサが主流となり

More information

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

Slides: TimeGraph: GPU Scheduling for Real-Time Multi-Tasking Environments 計算機アーキテクチャ第 11 回 マルチプロセッサ 本資料は授業用です 無断で転載することを禁じます 名古屋大学 大学院情報科学研究科 准教授加藤真平 デスクトップ ジョブレベル並列性 スーパーコンピュータ 並列処理プログラム プログラムの並列化 for (i = 0; i < N; i++) { x[i] = a[i] + b[i]; } プログラムの並列化 x[0] = a[0] + b[0];

More information

Microsoft Word - appli_SMASH_tutorial_2.docx

Microsoft Word - appli_SMASH_tutorial_2.docx チュートリアル SMASH version 2.2.0 (Linux 64 ビット版 ) 本チュートリアルでは 量子化学計算ソフトウェア SMASH バージョン 2.2.0 について ソフトウェアの入手 / 実行モジュール作成 / 計算実行 / 可視化処理までを例示します 1. ソフトウェアの入手以下の URL よりダウンロードします https://sourceforge.net/projects/smash-qc/files/smash-2.2.0.tgz/download

More information

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

スパコンに通じる並列プログラミングの基礎 2018.06.04 2018.06.04 1 / 62 2018.06.04 2 / 62 Windows, Mac Unix 0444-J 2018.06.04 3 / 62 Part I Unix GUI CUI: Unix, Windows, Mac OS Part II 2018.06.04 4 / 62 0444-J ( : ) 6 4 ( ) 6 5 * 6 19 SX-ACE * 6

More information

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

研究背景 大規模な演算を行うためには 分散メモリ型システムの利用が必須 Message Passing Interface MPI 並列プログラムの大半はMPIを利用 様々な実装 OpenMPI, MPICH, MVAPICH, MPI.NET プログラミングコストが高いため 生産性が悪い 新しい並 XcalableMPによる NAS Parallel Benchmarksの実装と評価 中尾 昌広 李 珍泌 朴 泰祐 佐藤 三久 筑波大学 計算科学研究センター 筑波大学大学院 システム情報工学研究科 研究背景 大規模な演算を行うためには 分散メモリ型システムの利用が必須 Message Passing Interface MPI 並列プログラムの大半はMPIを利用 様々な実装 OpenMPI,

More information

目次 LS-DYNA 利用の手引き 1 1. はじめに 利用できるバージョン 概要 1 2. TSUBAME での利用方法 使用可能な LS-DYNA の実行 4 (1) TSUBAMEにログイン 4 (2) バージョンの切り替え 4 (3) インタラ

目次 LS-DYNA 利用の手引き 1 1. はじめに 利用できるバージョン 概要 1 2. TSUBAME での利用方法 使用可能な LS-DYNA の実行 4 (1) TSUBAMEにログイン 4 (2) バージョンの切り替え 4 (3) インタラ LS-DYNA 利用の手引 東京工業大学学術国際情報センター 2016.04 version 1.10 目次 LS-DYNA 利用の手引き 1 1. はじめに 1 1.1 利用できるバージョン 1 1.2 概要 1 2. TSUBAME での利用方法 1 2.1 使用可能な 1 2.2 LS-DYNA の実行 4 (1) TSUBAMEにログイン 4 (2) バージョンの切り替え 4 (3) インタラクティブ実行

More information

Microsoft PowerPoint - 演習1:並列化と評価.pptx

Microsoft PowerPoint - 演習1:並列化と評価.pptx 講義 2& 演習 1 プログラム並列化と性能評価 神戸大学大学院システム情報学研究科横川三津夫 yokokawa@port.kobe-u.ac.jp 2014/3/5 RIKEN AICS HPC Spring School 2014: プログラム並列化と性能評価 1 2014/3/5 RIKEN AICS HPC Spring School 2014: プログラム並列化と性能評価 2 2 次元温度分布の計算

More information

VXPRO R1400® ご提案資料

VXPRO R1400® ご提案資料 Intel Core i7 プロセッサ 920 Preliminary Performance Report ノード性能評価 ノード性能の評価 NAS Parallel Benchmark Class B OpenMP 版での性能評価 実行スレッド数を 4 で固定 ( デュアルソケットでは各プロセッサに 2 スレッド ) 全て 2.66GHz のコアとなるため コアあたりのピーク性能は同じ 評価システム

More information

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

スパコンに通じる並列プログラミングの基礎 2016.06.06 2016.06.06 1 / 60 2016.06.06 2 / 60 Windows, Mac Unix 0444-J 2016.06.06 3 / 60 Part I Unix GUI CUI: Unix, Windows, Mac OS Part II 0444-J 2016.06.06 4 / 60 ( : ) 6 6 ( ) 6 10 6 16 SX-ACE 6 17

More information

LS-DYNA 利用の手引 第 1 版 東京工業大学学術国際情報センター 2017 年 9 月 25 日

LS-DYNA 利用の手引 第 1 版 東京工業大学学術国際情報センター 2017 年 9 月 25 日 LS-DYNA 利用の手引 第 1 版 東京工業大学学術国際情報センター 2017 年 9 月 25 日 目次 1. はじめに 1 1.1. 利用できるバージョン 1 1.2. 概要 1 1.3. マニュアル 1 2. TSUBAME3 での利用方法 2 2.1. LS-DYNA の実行 2 2.1.1. TSUBAME3 にログイン 2 2.1.2. バージョンの切り替え 2 2.1.3. インタラクティブノードでの

More information

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

スパコンに通じる並列プログラミングの基礎 2018.09.10 furihata@cmc.osaka-u.ac.jp ( ) 2018.09.10 1 / 59 furihata@cmc.osaka-u.ac.jp ( ) 2018.09.10 2 / 59 Windows, Mac Unix 0444-J furihata@cmc.osaka-u.ac.jp ( ) 2018.09.10 3 / 59 Part I Unix GUI CUI:

More information

インテル(R) Visual Fortran Composer XE 2013 Windows版 入門ガイド

インテル(R) Visual Fortran Composer XE 2013 Windows版 入門ガイド Visual Fortran Composer XE 2013 Windows* エクセルソフト株式会社 www.xlsoft.com Rev. 1.1 (2012/12/10) Copyright 1998-2013 XLsoft Corporation. All Rights Reserved. 1 / 53 ... 3... 4... 4... 5 Visual Studio... 9...

More information

Microsoft PowerPoint - GeoFEM.ppt [互換モード]

Microsoft PowerPoint - GeoFEM.ppt [互換モード] 三次元並列有限要素法への OpenMP/MPI ハイブリッド 並列プログラミングモデル適用 中島研吾東京大学情報基盤センター RIKEN AICS Spring School 2014 2 Hybrid 並列プログラミング スレッド並列 + メッセージパッシング OpenMP+ MPI CUDA + MPI, OpenACC + MPI 個人的には自動並列化 +MPI のことを ハイブリッド とは呼んでほしくない

More information

2. OpenMP OpenMP OpenMP OpenMP #pragma#pragma omp #pragma omp parallel #pragma omp single #pragma omp master #pragma omp for #pragma omp critica

2. OpenMP OpenMP OpenMP OpenMP #pragma#pragma omp #pragma omp parallel #pragma omp single #pragma omp master #pragma omp for #pragma omp critica C OpenMP 1. OpenMP OpenMP Architecture Review BoardARB OpenMP OpenMP OpenMP OpenMP OpenMP Version 2.0 Version 2.0 OpenMP Fortran C/C++ C C++ 1997 10 OpenMP Fortran API 1.0 1998 10 OpenMP C/C++ API 1.0

More information

第8回講義(2016年12月6日)

第8回講義(2016年12月6日) 2016/12/6 スパコンプログラミング (1) (Ⅰ) 1 行列 - 行列積 (2) 東京大学情報基盤センター准教授塙敏博 2016 年 12 月 6 日 ( 火 ) 10:25-12:10 2016/11/29 講義日程 ( 工学部共通科目 ) 1. 9 月 27 日 ( 今日 ): ガイダンス 2. 10 月 4 日 l 並列数値処理の基本演算 ( 座学 ) 3. 10 月 11 日 : スパコン利用開始

More information

第5回お試しアカウント付き並列プログラミング講習会

第5回お試しアカウント付き並列プログラミング講習会 qstat -l ID (qstat -f) qscript ID BATCH REQUEST: 253443.batch1 Name: test.sh Owner: uid=32637, gid=30123 Priority: 63 State: 1(RUNNING) Created at: Tue Jun 30 05:36:24 2009 Started at: Tue Jun 30 05:36:27

More information

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

TSUBAME2.0 における GPU の 活用方法 東京工業大学学術国際情報センター丸山直也第 10 回 GPU コンピューティング講習会 2011 年 9 月 28 日 TSUBAME2.0 における GPU の 活用方法 東京工業大学学術国際情報センター丸山直也第 10 回 GPU コンピューティング講習会 2011 年 9 月 28 日 目次 1. TSUBAMEのGPU 環境 2. プログラム作成 3. プログラム実行 4. 性能解析 デバッグ サンプルコードは /work0/gsic/seminars/gpu- 2011-09- 28 からコピー可能です 1.

More information

GPGPU

GPGPU GPGPU 2013 1008 2015 1 23 Abstract In recent years, with the advance of microscope technology, the alive cells have been able to observe. On the other hand, from the standpoint of image processing, the

More information

Microsoft PowerPoint - sales2.ppt

Microsoft PowerPoint - sales2.ppt 並列化の基礎 ( 言葉の意味 ) 並列実行には 複数のタスク実行主体が必要 共有メモリ型システム (SMP) での並列 プロセスを使用した並列化 スレッドとは? スレッドを使用した並列化 分散メモリ型システムでの並列 メッセージパッシングによる並列化 並列アーキテクチャ関連の言葉を押さえよう 21 プロセスを使用した並列処理 並列処理を行うためには複数のプロセスの生成必要プロセスとは プログラム実行のための能動実態メモリ空間親プロセス子プロセス

More information

memo

memo 数理情報工学演習第一 C プログラミング演習 ( 第 5 回 ) 2015/05/11 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 今日の内容 : プロトタイプ宣言 ヘッダーファイル, プログラムの分割 課題 : 疎行列 2 プロトタイプ宣言 3 C 言語では, 関数や変数は使用する前 ( ソースの上のほう ) に定義されている必要がある. double sub(int

More information

$ cmake --version $ make --version $ gcc --version 環境が無いあるいはバージョンが古い場合は yum などを用いて導入 最新化を行う 4. 圧縮ファイルを解凍する $ tar xzvf gromacs tar.gz 5. cmake を用

$ cmake --version $ make --version $ gcc --version 環境が無いあるいはバージョンが古い場合は yum などを用いて導入 最新化を行う 4. 圧縮ファイルを解凍する $ tar xzvf gromacs tar.gz 5. cmake を用 本マニュアルの目的 Linux サーバー版 Gromacs インストールマニュアル 2015/10/28 本マニュアルでは 単独ユーザが独占的に Linux サーバー (CentOS 6.6) を使用して Gromacs ジョブを実行するための環境構築方法と Winmostar のリモートジョブ機能による計算手順を示しています つまり複数ユーザが共同使用する計算サーバー等は対象外です そのため計算環境は全てユーザのホームディレクトリ配下で行う構築することを想定しています

More information

0130_FrontISTR研究会_V3

0130_FrontISTR研究会_V3 Intel Xeon Phi (Knights Landing) のパフォーマンス評価の 例 東京 学 学院 新領域創成科学研究科 松 和, 森 直樹, 奥 洋司 2017 年 1 30 第 33 回 FrontISTR 研究会 2017/1/30 FrontISTR 研究会 1 次 背景と 的 KNLのアーキテクチャ メモリモードとクラスタモード STREAM triadによる性能評価 FrontISTRによる性能評価

More information

2012年度HPCサマーセミナー_多田野.pptx

2012年度HPCサマーセミナー_多田野.pptx ! CCS HPC! I " tadano@cs.tsukuba.ac.jp" " 1 " " " " " " " 2 3 " " Ax = b" " " 4 Ax = b" A = a 11 a 12... a 1n a 21 a 22... a 2n...... a n1 a n2... a nn, x = x 1 x 2. x n, b = b 1 b 2. b n " " 5 Gauss LU

More information

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

AICS 村井均 RIKEN AICS HPC Summer School /6/2013 1 AICS 村井均 RIKEN AICS HPC Summer School 2013 8/6/2013 1 背景 OpenMP とは OpenMP の基本 OpenMP プログラミングにおける注意点 やや高度な話題 2 共有メモリマルチプロセッサシステムの普及 共有メモリマルチプロセッサシステムのための並列化指示文を共通化する必要性 各社で仕様が異なり 移植性がない そして いまやマルチコア プロセッサが主流となり

More information

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

HPC (pay-as-you-go) HPC Web 2 ,, 1 HPC (pay-as-you-go) HPC Web 2 HPC Amazon EC2 OpenFOAM GPU EC2 3 HPC MPI MPI Courant 1 GPGPU MPI 4 AMAZON EC2 GPU CLUSTER COMPUTE INSTANCE EC2 GPU (cg1.4xlarge) ( N. Virgina ) Quadcore Intel Xeon 5570

More information

Microsoft Word - 計算科学演習第1回3.doc

Microsoft Word - 計算科学演習第1回3.doc スーパーコンピュータの基本的操作方法 2009 年 9 月 10 日高橋康人 1. スーパーコンピュータへのログイン方法 本演習では,X 端末ソフト Exceed on Demand を使用するが, 必要に応じて SSH クライアント putty,ftp クライアント WinSCP や FileZilla を使用して構わない Exceed on Demand を起動し, 以下のとおり設定 ( 各自のユーザ

More information

情報処理概論(第二日目)

情報処理概論(第二日目) 情報処理概論 工学部物質科学工学科応用化学コース機能物質化学クラス 第 8 回 2005 年 6 月 9 日 前回の演習の解答例 多項式の計算 ( 前半 ): program poly implicit none integer, parameter :: number = 5 real(8), dimension(0:number) :: a real(8) :: x, total integer

More information

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

GPU チュートリアル :OpenACC 篇 Himeno benchmark を例題として 高エネルギー加速器研究機構 (KEK) 松古栄夫 (Hideo Matsufuru) 1 December 2018 HPC-Phys 理化学研究所 共通コードプロジェクト GPU チュートリアル :OpenACC 篇 Himeno benchmark を例題として 高エネルギー加速器研究機構 (KEK) 松古栄夫 (Hideo Matsufuru) 1 December 2018 HPC-Phys 勉強会 @ 理化学研究所 共通コードプロジェクト Contents Hands On 環境について Introduction to GPU computing Introduction

More information

nakao

nakao Fortran+Python 4 Fortran, 2018 12 12 !2 Python!3 Python 2018 IEEE spectrum https://spectrum.ieee.org/static/interactive-the-top-programming-languages-2018!4 Python print("hello World!") if x == 10: print

More information

Total View Debugger 利用の手引 東京工業大学学術国際情報センター version 1.0

Total View Debugger 利用の手引 東京工業大学学術国際情報センター version 1.0 Total View Debugger 利用の手引 東京工業大学学術国際情報センター 2015.04 version 1.0 目次 Total View Debugger 利用の手引き 1 1. はじめに 1 1.1 利用できるバージョン 1 1.2 概要 1 1.3 マニュアル 1 2. TSUBAME での利用方法 2 2.1 Total View Debugger の起動 2 (1) TSUBAMEにログイン

More information

memo

memo 計数工学プログラミング演習 ( 第 3 回 ) 2017/04/25 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 内容 ポインタの続き 引数の値渡しと参照渡し 構造体 2 ポインタで指されるメモリへのアクセス double **R; 型 R[i] と *(R+i) は同じ意味 意味 R double ** ポインタの配列 ( の先頭 ) へのポインタ R[i]

More information

Microsoft PowerPoint - 06-S2-ref-F.pptx

Microsoft PowerPoint - 06-S2-ref-F.pptx 並列有限要素法による 一次元定常熱伝導解析プログラム Fortran 編 中島研吾東京大学情報基盤センター お試しアカウント付き講習会 MPI 応用編 : 並列有限要素法 S2-ref 2 問題の概要, 実行方法 プログラムの説明 計算例 FEM1D 3 対象とする問題 : 一次元熱伝導問題 体積当たり一様発熱 Q x T x Q 0 x=0 (x min ) x= x max 一様な : 断面積

More information

4.1 % 7.5 %

4.1 % 7.5 % 2018 (412837) 4.1 % 7.5 % Abstract Recently, various methods for improving computial performance have been proposed. One of these various methods is Multi-core. Multi-core can execute processes in parallel

More information

120802_MPI.ppt

120802_MPI.ppt CPU CPU CPU CPU CPU SMP Symmetric MultiProcessing CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU CP OpenMP MPI MPI CPU CPU CPU CPU CPU CPU CPU CPU CPU CPU MPI MPI+OpenMP CPU CPU CPU CPU CPU CPU CPU CP

More information

Microsoft PowerPoint - GPUシンポジウム _d公開版.ppt [互換モード]

Microsoft PowerPoint - GPUシンポジウム _d公開版.ppt [互換モード] 200/0/9 数値流体解析の並列効率とその GPU による高速化の試み 清水建設 ( 株 ) 技術研究所 PHAM VAN PHUC ( ファムバンフック ) 流体計算時間短縮と GPU の活用の試み 現 CPUとの比較によりGPU 活用の可能性 現 CPU の最大利用 ノード内の最大計算資源の利用 すべてCPUコアの利用 適切なアルゴリズムの利用 CPU コア性能の何倍? GPU の利用の試み

More information

XcalableMP入門

XcalableMP入門 XcalableMP 1 HPC-Phys@, 2018 8 22 XcalableMP XMP XMP Lattice QCD!2 XMP MPI MPI!3 XMP 1/2 PCXMP MPI Fortran CCoarray C++ MPIMPI XMP OpenMP http://xcalablemp.org!4 XMP 2/2 SPMD (Single Program Multiple Data)

More information

untitled

untitled Fortran90 ( ) 17 12 29 1 Fortran90 Fortran90 FORTRAN77 Fortran90 1 Fortran90 module 1.1 Windows Windows UNIX Cygwin (http://www.cygwin.com) C\: Install Cygwin f77 emacs latex ps2eps dvips Fortran90 Intel

More information

cp-7. 配列

cp-7. 配列 cp-7. 配列 (C プログラムの書き方を, パソコン演習で学ぶシリーズ ) https://www.kkaneko.jp/cc/adp/index.html 金子邦彦 1 本日の内容 例題 1. 月の日数配列とは. 配列の宣言. 配列の添え字. 例題 2. ベクトルの内積例題 3. 合計点と平均点例題 4. 棒グラフを描く配列と繰り返し計算の関係例題 5. 行列の和 2 次元配列 2 今日の到達目標

More information

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

CUDA 連携とライブラリの活用 2 1 09:30-10:00 受付 10:00-12:00 Reedbush-H ログイン GPU 入門 13:30-15:00 OpenACC 入門 15:15-16:45 OpenACC 最適化入門と演習 17:00-18:00 OpenACC の活用 (CUDA 連携とライブラリの活用 ) CUDA 連携とライブラリの活用 2 3 OpenACC 簡単にGPUプログラムが作成できる それなりの性能が得られる

More information

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

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 GPU 1 1 2 1, 3 2, 3 (Graphics Unit: GPU) GPU GPU GPU Evaluation of GPU Computing Based on An Automatic Program Generation Technology Makoto Sugawara, 1 Katsuto Sato, 1 Kazuhiko Komatsu, 2 Hiroyuki Takizawa

More information

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

マルチコアPCクラスタ環境におけるBDD法のハイブリッド並列実装 2010 GPGPU 2010 9 29 MPI/Pthread (DDM) DDM CPU CPU CPU CPU FEM GPU FEM CPU Mult - NUMA Multprocessng Cell GPU Accelerator, GPU CPU Heterogeneous computng L3 cache L3 cache CPU CPU + GPU GPU L3 cache 4

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション 高性能計算基盤 第 7 回 CA1003: 主記憶共有型システム http://arch.naist.jp/htdocs-arch3/ppt/ca1003/ca1003j.pdf Copyright 2019 奈良先端大中島康彦 1 2 3 4 マルチスレッディングとマルチコア 5 6 7 主記憶空間の数が 複数 か 1 つ か 8 ただしプログラムは容易 9 1 つの主記憶空間を共有する場合 10

More information

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

Vol.214-HPC-145 No /7/3 C #pragma acc directive-name [clause [[,] clause] ] new-line structured block Fortran!$acc directive-name [clause [[,] c Vol.214-HPC-145 No.45 214/7/3 OpenACC 1 3,1,2 1,2 GPU CUDA OpenCL OpenACC OpenACC High-level OpenACC CPU Intex Xeon Phi K2X GPU Intel Xeon Phi 27% K2X GPU 24% 1. TSUBAME2.5 CPU GPU CUDA OpenCL CPU OpenMP

More information

演習2

演習2 神戸市立工業高等専門学校電気工学科 / 電子工学科専門科目 数値解析 2017.6.2 演習 2 山浦剛 (tyamaura@riken.jp) 講義資料ページ h t t p://clim ate.aic s. riken. jp/m embers/yamaura/num erical_analysis. html 曲線の推定 N 次多項式ラグランジュ補間 y = p N x = σ N x x

More information

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

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 FFT 1 Fourier fast Fourier transform FFT FFT FFT 1 FFT FFT 2 Fourier 2.1 Fourier FFT Fourier discrete Fourier transform DFT DFT n 1 y k = j=0 x j ω jk n, 0 k n 1 (1) x j y k ω n = e 2πi/n i = 1 (1) n DFT

More information

enshu5_4.key

enshu5_4.key http://www.mmsonline.com/articles/parallel-processing-speeds-toolpath-calculations TA : 菅 新 菅沼智史 水曜 新行紗弓 馬淵隼 木曜 情報知能工学演習V (前半第4週) 政田洋平 システム情報学研究科計算科学専攻 演習 V( 前半 ) の内容 第 1 週 : 高性能計算 (High Performance Computing

More information

memo

memo 計数工学プログラミング演習 ( 第 3 回 ) 2016/04/26 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 内容 ポインタ malloc 構造体 2 ポインタ あるメモリ領域 ( アドレス ) を代入できる変数 型は一致している必要がある 定義時には値は不定 ( 何も指していない ) 実際にはどこかのメモリを指しているので, #include

More information

演習準備 2014 年 3 月 5 日神戸大学大学院システム情報学研究科森下浩二 1 RIKEN AICS HPC Spring School /3/5

演習準備 2014 年 3 月 5 日神戸大学大学院システム情報学研究科森下浩二 1 RIKEN AICS HPC Spring School /3/5 演習準備 2014 年 3 月 5 日神戸大学大学院システム情報学研究科森下浩二 1 演習準備の内容 神戸大 FX10(π-Computer) 利用準備 システム概要 ログイン方法 コンパイルとジョブ実行方法 MPI 復習 1. MPIプログラムの基本構成 2. 並列実行 3. 1 対 1 通信 集団通信 4. データ 処理分割 5. 計算時間計測 2 神戸大 FX10(π-Computer) 利用準備

More information

NUMAの構成

NUMAの構成 メッセージパッシング プログラミング 天野 共有メモリ対メッセージパッシング 共有メモリモデル 共有変数を用いた単純な記述自動並列化コンパイラ簡単なディレクティブによる並列化 :OpenMP メッセージパッシング 形式検証が可能 ( ブロッキング ) 副作用がない ( 共有変数は副作用そのもの ) コストが小さい メッセージパッシングモデル 共有変数は使わない 共有メモリがないマシンでも実装可能 クラスタ

More information

Microsoft PowerPoint - KHPCSS pptx

Microsoft PowerPoint - KHPCSS pptx KOBE HPC サマースクール 2018( 初級 ) 9. 1 対 1 通信関数, 集団通信関数 2018/8/8 KOBE HPC サマースクール 2018 1 2018/8/8 KOBE HPC サマースクール 2018 2 MPI プログラム (M-2):1 対 1 通信関数 問題 1 から 100 までの整数の和を 2 並列で求めなさい. プログラムの方針 プロセス0: 1から50までの和を求める.

More information

連載講座 : 高生産並列言語を使いこなす (5) 分子動力学シミュレーション 田浦健次朗 東京大学大学院情報理工学系研究科, 情報基盤センター 目次 1 問題の定義 17 2 逐次プログラム 分子 ( 粒子 ) セル 系の状態 ステップ 18

連載講座 : 高生産並列言語を使いこなす (5) 分子動力学シミュレーション 田浦健次朗 東京大学大学院情報理工学系研究科, 情報基盤センター 目次 1 問題の定義 17 2 逐次プログラム 分子 ( 粒子 ) セル 系の状態 ステップ 18 連載講座 : 高生産並列言語を使いこなす (5) 分子動力学シミュレーション 田浦健次朗 東京大学大学院情報理工学系研究科, 情報基盤センター 目次 1 問題の定義 17 2 逐次プログラム 17 2.1 分子 ( 粒子 ) 17 2.2 セル 17 2.3 系の状態 18 2.4 1ステップ 18 2.5 力の計算 19 2.6 速度と位置の更新 20 2.7 セル間の分子の移動 21 3 OpenMP

More information

演習1

演習1 神戸市立工業高等専門学校電気工学科 / 電子工学科専門科目 数値解析 2019.5.10 演習 1 山浦剛 (tyamaura@riken.jp) 講義資料ページ http://r-ccs-climate.riken.jp/members/yamaura/numerical_analysis.html Fortran とは? Fortran(= FORmula TRANslation ) は 1950

More information

Microsoft PowerPoint - S1-ref-F.ppt [互換モード]

Microsoft PowerPoint - S1-ref-F.ppt [互換モード] 課題 S1 解説 Fortran 言語編 RIKEN AICS HPC Summer School 2014 中島研吾 ( 東大 情報基盤センター ) 横川三津夫 ( 神戸大 計算科学教育センター ) MPI Programming 課題 S1 (1/2) /a1.0~a1.3, /a2.0~a2.3 から局所ベクトル情報を読み込み, 全体ベクトルのノルム ( x ) を求めるプログラムを作成する

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション Computer simulations create the future 2015 年度第 1 回 AICS 公開ソフト講習会 K MapReduce ハンズオン 滝澤真一朗松田元彦丸山直也 理化学研究所計算科学研究機構プログラム構成モデル研究チーム 1 RIKEN ADVANCED INSTITUTE FOR COMPUTATIONAL SCIENCE KMR の導入方法を学ぶ 目的 KMRRUN

More information

Microsoft PowerPoint - 阪大CMSI pptx

Microsoft PowerPoint - 阪大CMSI pptx 内容に関する質問は katagiri@cc.u-tokyo.ac.jp まで 第 3 回 OpenMP の基礎 東京大学情報基盤センター 片桐孝洋 1 講義日程と内容について (1 学期 : 木曜 3 限 ) 第 1 回 : プログラム高速化の基礎 2013 年 4 月 11 日 イントロダクション ループアンローリング キャッシュブロック化 数値計算ライブラリの利用 その他第 2 回 :MPIの基礎

More information

Microsoft Word ●IntelクアッドコアCPUでのベンチマーク_吉岡_ _更新__ doc

Microsoft Word ●IntelクアッドコアCPUでのベンチマーク_吉岡_ _更新__ doc 2.3. アプリ性能 2.3.1. Intel クアッドコア CPU でのベンチマーク 東京海洋大学吉岡諭 1. はじめにこの数年でマルチコア CPU の普及が進んできた x86 系の CPU でも Intel と AD がデュアルコア クアッドコアの CPU を次々と市場に送り出していて それらが PC クラスタの CPU として採用され HPC に活用されている ここでは Intel クアッドコア

More information

Microsoft PowerPoint ppt

Microsoft PowerPoint ppt 並列アルゴリズム 2005 年後期火曜 2 限 高見利也 ( 青柳睦 ) Aoyagi@cc.kyushu-u.ac.jp http://server-500.cc.kyushu-u.ac.jp/ 12 月 20 日 ( 火 ) 9. PC クラスタによる並列プログラミング ( 演習 ) つづき 1 もくじ 1. 序並列計算機の現状 2. 計算方式およびアーキテクチュアの分類 3. 並列計算の目的と課題

More information

並列計算導入.pptx

並列計算導入.pptx 並列計算の基礎 MPI を用いた並列計算 並列計算の環境 並列計算 複数の計算ユニット(PU, ore, Pなど を使用して 一つの問題 計算 を行わせる 近年 並列計算を手軽に使用できる環境が急速に整いつつある >通常のP PU(entral Processing Unit)上に計算装置であるoreが 複数含まれている Intel ore i7 シリーズ: 4つの計算装置(ore) 通常のプログラム

More information

Microsoft PowerPoint - CCS学際共同boku-08b.ppt

Microsoft PowerPoint - CCS学際共同boku-08b.ppt マルチコア / マルチソケットノードに おけるメモリ性能のインパクト 研究代表者朴泰祐筑波大学システム情報工学研究科 taisuke@cs.tsukuba.ac.jp アウトライン 近年の高性能 PC クラスタの傾向と問題 multi-core/multi-socket ノードとメモリ性能 メモリバンド幅に着目した性能測定 multi-link network 性能評価 まとめ 近年の高性能 PC

More information

サイバーメディアセンター 大規模計算機システムの利用

サイバーメディアセンター 大規模計算機システムの利用 サイバーメディアセンター 大規模計算機システムの利用 大阪大学情報推進部情報基盤課 本日のプログラム I. システムのご紹介 II. 利用方法の解説 実習 i. システムへの接続 ii. プログラムの作成 コンパイル iii. ジョブスクリプトの作成 iv. ジョブスクリプトの投入 III. 利用を希望する方へ SX-ACE NEC 製のベクトル型スーパーコンピュータ ノード毎 1 クラスタ (512

More information

FORTRAN( と C) によるプログラミング 5 ファイル入出力 ここではファイルからデータを読みこんだり ファイルにデータを書き出したりするプログラムを作成してみます はじめに テキスト形式で書かれたデータファイルに書かれているデータを読みこんで配列に代入し 標準出力に書き出すプログラムを作り

FORTRAN( と C) によるプログラミング 5 ファイル入出力 ここではファイルからデータを読みこんだり ファイルにデータを書き出したりするプログラムを作成してみます はじめに テキスト形式で書かれたデータファイルに書かれているデータを読みこんで配列に代入し 標準出力に書き出すプログラムを作り FORTRAN( と C) によるプログラミング 5 ファイル入出力 ここではファイルからデータを読みこんだり ファイルにデータを書き出したりするプログラムを作成してみます はじめに テキスト形式で書かれたデータファイルに書かれているデータを読みこんで配列に代入し 標準出力に書き出すプログラムを作ります FORTRAN の場合 OPEN 文でファイルを開いた後 標準入力の場合と同様に READ 文でデータを読みこみます

More information

Microsoft PowerPoint _MPI-01.pptx

Microsoft PowerPoint _MPI-01.pptx 計算科学演習 Ⅰ MPI を いた並列計算 (I) 神戸大学大学院システム情報学研究科谷口隆晴 yaguchi@pearl.kobe-u.ac.jp この資料は昨年度担当の横川先生の資料を参考にさせて頂いています. 2016/06/23 MPI を用いた並列計算 (I) 1 講義概要 分散メモリ型計算機上のプログラミング メッセージ パシング インターフェイス (Message Passing Interface,MPI)

More information

untitled

untitled c NUMA 1. 18 (Moore s law) 1Hz CPU 2. 1 (Register) (RAM) Level 1 (L1) L2 L3 L4 TLB (translation look-aside buffer) (OS) TLB TLB 3. NUMA NUMA (Non-uniform memory access) 819 0395 744 1 2014 10 Copyright

More information

スライド 1

スライド 1 計算科学が拓く世界スーパーコンピュータは何故スーパーか 学術情報メディアセンター中島浩 http://www.para.media.kyoto-u.ac.jp/jp/ username=super password=computer 講義の概要 目的 計算科学に不可欠の道具スーパーコンピュータが どういうものか なぜスーパーなのか どう使うとスーパーなのかについて雰囲気をつかむ 内容 スーパーコンピュータの歴史を概観しつつ

More information

untitled

untitled OS 2007/4/27 1 Uni-processor system revisited Memory disk controller frame buffer network interface various devices bus 2 1 Uni-processor system today Intel i850 chipset block diagram Source: intel web

More information

(Basic Theory of Information Processing) Fortran Fortan Fortan Fortan 1

(Basic Theory of Information Processing) Fortran Fortan Fortan Fortan 1 (Basic Theory of Information Processing) Fortran Fortan Fortan Fortan 1 17 Fortran Formular Tranlator Lapack Fortran FORTRAN, FORTRAN66, FORTRAN77, FORTRAN90, FORTRAN95 17.1 A Z ( ) 0 9, _, =, +, -, *,

More information

連載講座 : 高生産並列言語を使いこなす (4) ゲーム木探索の並列化 田浦健次朗 東京大学大学院情報理工学系研究科, 情報基盤センター 目次 1 準備 問題の定義 αβ 法 16 2 αβ 法の並列化 概要 Young Brothers Wa

連載講座 : 高生産並列言語を使いこなす (4) ゲーム木探索の並列化 田浦健次朗 東京大学大学院情報理工学系研究科, 情報基盤センター 目次 1 準備 問題の定義 αβ 法 16 2 αβ 法の並列化 概要 Young Brothers Wa 連載講座 : 高生産並列言語を使いこなす (4) ゲーム木探索の並列化 田浦健次朗 東京大学大学院情報理工学系研究科, 情報基盤センター 目次 1 準備 16 1.1 問題の定義 16 1.2 αβ 法 16 2 αβ 法の並列化 17 2.1 概要 17 2.2 Young Brothers Wait Concept 17 2.3 段数による逐次化 18 2.4 適応的な待機 18 2. 強制終了

More information

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

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 23 FPGA CUDA Performance Comparison of FPGA Array with CUDA on Poisson Equation (lijiang@sekine-lab.ei.tuat.ac.jp), (kazuki@sekine-lab.ei.tuat.ac.jp), (takahashi@sekine-lab.ei.tuat.ac.jp), (tamukoh@cc.tuat.ac.jp),

More information

本文ALL.indd

本文ALL.indd Intel Xeon プロセッサにおける Cache Coherency 時間の性能測定方法河辺峻田口成美古谷英祐 Intel Xeon プロセッサにおける Cache Coherency 時間の性能測定方法 Performance Measurement Method of Cache Coherency Effects on an Intel Xeon Processor System 河辺峻田口成美古谷英祐

More information

enshu5_6.key

enshu5_6.key 情報知能工学演習V (前半第6週) 政田洋平 システム情報学研究科計算科学専攻 TA : 菅 新 菅沼智史 水曜 新行紗弓 馬淵隼 木曜 演習 V( 前半 ) の内容 第 1 週 : 高性能計算 (High Performance Computing = HPC) 向けプログラミングの基礎 第 2 週 : シミュレーションの基礎 第 3 週 : 波の移流方程式のシミュレーション 第 4,5 週 :

More information

Microsoft PowerPoint - sales2.ppt

Microsoft PowerPoint - sales2.ppt 最適化とは何? CPU アーキテクチャに沿った形で最適な性能を抽出できるようにする技法 ( 性能向上技法 ) コンパイラによるプログラム最適化 コンパイラメーカの技量 経験量に依存 最適化ツールによるプログラム最適化 KAP (Kuck & Associates, Inc. ) 人によるプログラム最適化 アーキテクチャのボトルネックを知ること 3 使用コンパイラによる性能の違い MFLOPS 90

More information