研究背景 大規模な演算を行うためには 分散メモリ型システムの利用が必須 Message Passing Interface MPI 並列プログラムの大半はMPIを利用 様々な実装 OpenMPI, MPICH, MVAPICH, MPI.NET プログラミングコストが高いため 生産性が悪い 新しい並
|
|
|
- あきひさ おおふさ
- 9 years ago
- Views:
Transcription
1 XcalableMPによる NAS Parallel Benchmarksの実装と評価 中尾 昌広 李 珍泌 朴 泰祐 佐藤 三久 筑波大学 計算科学研究センター 筑波大学大学院 システム情報工学研究科
2 研究背景 大規模な演算を行うためには 分散メモリ型システムの利用が必須 Message Passing Interface MPI 並列プログラムの大半はMPIを利用 様々な実装 OpenMPI, MPICH, MVAPICH, MPI.NET プログラミングコストが高いため 生産性が悪い 新しい並列プログラミングモデルとして XcalableMPが提案されている SWoPP2010 金沢 2
3 XcalableMP 分散メモリ型システム用の並列プログラミングモデル OpenMPのように指示文を用いた並列化 + α 科学技術計算でよく用いられるCとFortran言語に対応 プログラミングコストを低減し 生産性を上げる #pragma xmp loop on t(i) for(i = 0; i < MAX; i++){ a[i] = func(i); } 指示文により ループ文を分散して 各ノードで処理可能 XcalableMPのプログラム例 SWoPP2010 金沢 3
4 発表内容 研究目的 XcalableMP XMP の記述性と性能を明らかにする 研究内容 NAS Parallel Benchmarks NPB をXMPで実装し 性能評価を行う Embarrassingly Parallel EP 乱数発生 Integer Sort IS 整数ソート Conjugate Gradient CG 共役勾配法 SWoPP2010 金沢 4
5 この後の発表の流れ XMPの概要と文法 XMPによるNPBの実装 性能測定 まとめ SWoPP2010 金沢 5
6 XMPの概要 実行モデルはSingle Program Multiple Data High Performance Fortranなどを参考に開発 node1 Performance Awareness 通信が発生する箇所は明示的に指示 それ以外はローカルメモリにアクセス 2つのプログラミングモデル node2 node3 Directives Comm, sync and work-sharing グローバルビュー 定型的な通信 集団通信 同期など ローカルビュー MPI_Put/Getのような 片方向通信の記述 SWoPP2010 金沢 6
7 #pragma xmp loop on t(i) for( i = 0; i < N; i++) a[ i ] = func( i ); #pragma xmp nodes n(4) #pragma xmp template t(0:n-1) #pragma xmp distribute t(block) onto n #pragma xmp align a[i] with t(i) // 4 // 0 N-1 index template // template n // a template template t 0 N-1 a[ ] node1 node2 node3 node4 0 N/4 N/2 N/4*3 N-1 7
8 #pragma xmp loop on t(i) for( i = 0; i < N; i++) a[ i ] = func( i ); #pragma xmp nodes n(4) #pragma xmp template t(0:n-1) #pragma xmp distribute t(block) onto n #pragma xmp align a[i] with t(i) // 4 // 0 N-1 index template // template n // a template template t 0 N-1 a[ ] node1 node2 node3 node4 0 N/4 N/2 N/4*3 N-1 7
9 #pragma xmp loop on t(i) for( i = 0; i < N; i++) a[ i ] = func( i ); #pragma xmp nodes n(4) #pragma xmp template t(0:n-1) #pragma xmp distribute t(block) onto n #pragma xmp align a[i] with t(i) // 4 // 0 N-1 index template // template n // a template template t node1 node2 node3 node4 0 N-1 a[ ] node1 node2 node3 node4 0 N/4 N/2 N/4*3 N-1 7
10 #pragma xmp loop on t(i) for( i = 0; i < N; i++) a[ i ] = func( i ); #pragma xmp nodes n(4) #pragma xmp template t(0:n-1) #pragma xmp distribute t(block) onto n #pragma xmp align a[i] with t(i) // 4 // 0 N-1 index template // template n // a template template t a[ ] node1 node2 node3 node4 0 N-1 node1 node2 node3 node4 0 N/4 N/2 N/4*3 N-1 7
11 グローバルビューの通信 集団通信 Reduce Broadcast, Gatherなど gmove 分散配列のための代入指示文 シャドウ 袖領域のための通信 シャドウについては論文集を参考にして下さい SWoPP2010 金沢 8
12 グローバルビューの通信 集団通信 Reduce Broadcast, Gatherなど gmove 分散配列のための代入指示文 シャドウ 袖領域のための通信 シャドウについては論文集を参考にして下さい SWoPP2010 金沢 8
13 DATA DATA DATA DATA DATA #pragma xmp loop on t(i) for(i = 0, sum=0; i < N; i++){ sum += array[i]; } #pragma xmp reduction (+:sum) 9
14 #pragma xmp gmove a[:] = b[:]; array[ lower : upper ] array lower upper array[:] a[10] b[10] 10
15 #pragma xmp gmove a[:] = b[:]; array[ lower : upper ] array lower upper array[:] a[10] b[10] 10
16 ローカルビュー ローカルデータとノード間通信を意識したプログラミング XMPではローカルビューとしてCo-array記法を導入し 片側通信を実現 Fortran版のXMPはCo-Array Fortranと互換 C言語では文法を拡張 #pragma xmp coarray b a[0:3] = b[3:6]:[1]; 配列の次元を拡張 ノード番号を表す ノード1が持つb[3:6]のデータを a[0:3]に代入 より柔軟な並列アルゴリズムの記述が可能 SWoPP2010 金沢 11
17 XMPによるNPB実装 NAS Parallel Benchmarks NPB をXMPで実装 並列化の方法 MPI版とOpenMP版におけるNPBの並列アルゴリズムを XMPで実装 対象問題 Embarrassingly Parallel EP 乱数発生 Integer Sort IS 整数ソート Conjugate Gradient CG 共役勾配法 OpenMPを参考にした実装やEPについては論文集を参考にして下さい SWoPP2010 金沢 12
18
19 #pragma xmp coarray key_buff2 #pragma xmp loop on t(i) for( i=0; i<num_keys; i++ ) bucket_size[key_array[i] >> shift]++; #pragma xmp loop on t(i) for( i=0; i<num_keys; i++ ) { key = key_array[i]; key_buff1[bucket_ptrs[key >> shift]++] = key; } for(i=0;i<num_procs;i++) key_buff2[a[i]:b[i]]:[i] = key_buff1[c[i]:d[i]]; 14
20 #pragma xmp coarray key_buff2 #pragma xmp loop on t(i) for( i=0; i<num_keys; i++ ) bucket_size[key_array[i] >> shift]++; #pragma xmp loop on t(i) for( i=0; i<num_keys; i++ ) { key = key_array[i]; key_buff1[bucket_ptrs[key >> shift]++] = key; } for(i=0;i<num_procs;i++) key_buff2[a[i]:b[i]]:[i] = key_buff1[c[i]:d[i]]; 14
21 for(i=0;i<num_procs;i++) key_buff2[ a[ i ] : b[ i ] ] : [ i ] = key_buff1[ c[ i ] : d[ i ] ]; a[ k ] b[ k ] c[ k ] d[ k ] 15
22 for(i=0;i<num_procs;i++) key_buff2[ a[ i ] : b[ i ] ] : [ i ] = key_buff1[ c[ i ] : d[ i ] ]; a[ k ] b[ k ] c[ k ] d[ k ] 15
23 16
24 Performance(Mop/s) XMP MPI Number of Node XMP 10% XMP MPI 17
25 CG 共役勾配法 のXMP化 2次元疎行列 a[ ] CG 共役勾配法 4プロセスの例 プロセスは2次元に配置 #pragma xmp template t(0:n-1,0:n -1) #pragma xmp distribute t(block,block) on n double x[n], z[n], p[n], q[n], r[n], w[n]; 最小固有値 x[], z[], p[], q[], r[] n(1,1) n(2,1) n(1,2) n(2,2) w[] #pragma xmp align [i] with t(i,*):: x,z,p,q,r #pragma xmp align [i] with t(*,i):: w template t SWoPP2010 金沢 18
26 CG 共役勾配法 のXMP化 2次元疎行列 a[ ] CG 共役勾配法 最小固有値 4プロセスの例 プロセスは2次元に配置 #pragma xmp template t(0:n-1,0:n -1) #pragma xmp distribute t(block,block) on n double x[n], z[n], p[n], q[n], r[n], w[n]; x[], z[], p[], q[], r[] x[0:n/2-1] x[n/2:n-1] n(1,1) n(2,1) x[0:n/2-1] x[n/2:n-1] n(1,2) n(2,2) w[] #pragma xmp align [i] with t(i,*):: x,z,p,q,r #pragma xmp align [i] with t(*,i):: w template t SWoPP2010 金沢 19
27 CG 共役勾配法 のXMP化 2次元疎行列 a[ ] CG 共役勾配法 最小固有値 4プロセスの例 プロセスは2次元に配置 #pragma xmp template t(0:n-1,0:n -1) #pragma xmp distribute t(block,block) on n double x[n], z[n], p[n], q[n], r[n], w[n]; x[], z[], p[], q[], r[] w[0:n/2-1] w[0:n/2-1] n(1,1) n(2,1) w[n/2:n-1] w[n/2:n-1] n(1,2) n(2,2) w[] #pragma xmp align [i] with t(i,*):: x,z,p,q,r #pragma xmp align [i] with t(*,i):: w template t SWoPP2010 金沢 20
28 CG 共役勾配法 のXMP化 2次元疎行列 a[ ] CG 共役勾配法 4プロセスの例 プロセスは2次元に配置 #pragma xmp template t(0:n-1,0:n -1) #pragma xmp distribute t(block,block) on n double x[n], z[n], p[n], q[n], r[n], w[n]; #pragma xmp align [i] with t(i,*):: x,z,p,q,r #pragma xmp align [i] with t(*,i):: w n(*,1) x[], z[], p[], q[], r[] n(1,1) n(2,1) n(1,2) n(2,2) w[] n(*,2) *は重複の意味 最小固有値 SWoPP2010 金沢 template t 21
29 #pragma xmp loop on t(*, j) for(j = 0; j < lastrow-firstrow+1; j++) { sum = 0.0; for(k = rowstr[j]; k <= rowstr[j+1]; k++) { sum = sum + a[k]*p[colidx[k]]; } w[j] += sum; } #pragma xmp reduction(+:w) on n(*,:) #pragma xmp gmove q[:] = w[:]; p[ j ], q[ j ] with t (j, *) w[ j ] with t (*, j) 22
30 #pragma xmp loop on t(*, j) for(j = 0; j < lastrow-firstrow+1; j++) { sum = 0.0; for(k = rowstr[j]; k <= rowstr[j+1]; k++) { sum = sum + a[k]*p[colidx[k]]; } w[j] += sum; } #pragma xmp reduction(+:w) on n(*,:) #pragma xmp gmove q[:] = w[:]; p[ j ], q[ j ] with t (j, *) w[ j ] with t (*, j) 22
31 #pragma xmp gmove q[:] = w[:]; q[] w[0:n/2-1] w[0:n/2-1] q[0:n/2-1] q[n/2:n-1] n(1,1) n(2,1) n(1,1) n(2,1) w[] w[n/2:n-1] w[n/2:n-1] q[0:n/2-1] q[n/2:n-1] n(1,2) n(2,2) n(1,2) n(2,2) 23
32 #pragma xmp gmove q[:] = w[:]; q[] w[0:n/2-1] w[0:n/2-1] q[0:n/2-1] q[n/2:n-1] n(1,1) n(2,1) n(1,1) n(2,1) w[] w[n/2:n-1] w[n/2:n-1] q[0:n/2-1] q[n/2:n-1] n(1,2) n(2,2) n(1,2) n(2,2) 23
33 #pragma xmp gmove q[:] = w[:]; q[] w[0:n/2-1] w[0:n/2-1] q[0:n/2-1] q[n/2:n-1] n(1,1) n(2,1) n(1,1) n(2,1) w[] w[n/2:n-1] w[n/2:n-1] q[0:n/2-1] q[n/2:n-1] n(1,2) n(2,2) n(1,2) n(2,2) 23
34 #pragma xmp gmove q[:] = w[:]; q[] w[0:n/2-1] w[0:n/2-1] q[0:n/2-1] q[n/2:n-1] n(1,1) n(2,1) n(1,1) n(2,1) w[] w[n/2:n-1] w[n/2:n-1] q[0:n/2-1] q[n/2:n-1] n(1,2) n(2,2) n(1,2) n(2,2) 23
35 #pragma xmp gmove q[:] = w[:]; q[] w[0:n/2-1] w[0:n/2-1] w[0:n/2-1] q[0:n/2-1] q[n/2:n-1] n(1,1) n(2,1) n(1,1) n(2,1) w[] w[n/2:n-1] w[n/2:n-1] q[0:n/2-1] q[n/2:n-1] n(1,2) n(2,2) n(1,2) n(2,2) 23
36 #pragma xmp gmove q[:] = w[:]; q[] w[0:n/2-1] w[0:n/2-1] w[0:n/2-1] q[0:n/2-1] q[n/2:n-1] n(1,1) n(2,1) n(1,1) n(2,1) w[] w[n/2:n-1] w[n/2:n-1] w[0:n/2-1] q[0:n/2-1] q[n/2:n-1] n(1,2) n(2,2) n(2,1) n(1,2) n(2,2) 23
37 #pragma xmp gmove q[:] = w[:]; q[] w[0:n/2-1] w[0:n/2-1] w[0:n/2-1] q[0:n/2-1] w[n/2:n-1] q[n/2:n-1] n(1,1) n(2,1) n(1,1) n(1,2) n(2,1) w[] w[n/2:n-1] w[n/2:n-1] w[0:n/2-1] q[0:n/2-1] q[n/2:n-1] n(1,2) n(2,2) n(2,1) n(1,2) n(2,2) 23
38 #pragma xmp gmove q[:] = w[:]; q[] w[0:n/2-1] w[0:n/2-1] w[0:n/2-1] q[0:n/2-1] w[n/2:n-1] q[n/2:n-1] n(1,1) n(2,1) n(1,1) n(1,2) n(2,1) w[] w[n/2:n-1] w[n/2:n-1] w[0:n/2-1] q[0:n/2-1] w[n/2:n-1] q[n/2:n-1] n(1,2) n(2,2) n(2,1) n(1,2) n(2,2) 23
39 Performance(Mop/s) XMP MPI Number of Node 1, 4, 16 XMP MPI 24
40 Performance(Mop/s) XMP MPI Number of Node 1, 4, 16 XMP MPI 24
41 CGの考察 2と8プロセスの場合 縦と横の分割数が異なる では同じ reduction後のgmove wとqの要素数は同じ q[] n(1,1) n(2,1) n(3,1) n(4,1) w[] n(1,1) n(2,1) n(3,1) n(4,1) n(1,2) n(2,2) n(3,2) n(4,2) n(1,2) n(2,2) n(3,2) n(4,2) 2分割 4コピー 4分割 2コピー XMP版ではすべての要素をリダクションにしているのに対し MPI版は計算に必要な要素のみをリダクションしているため SWoPP2010 金沢 25
42 CGの考察 2と8プロセスの場合 縦と横の分割数が異なる では同じ reduction後のgmove wとqの要素数は同じ q[] w[] n(1,1) n(1,1) n(2,1) n(3,1) n(4,1) n(1,1) n(2,1) n(3,1) n(4,1) n(1,2) n(2,2) n(3,2) n(4,2) n(1,2) n(2,2) n(3,2) n(4,2) 2分割 4コピー 4分割 2コピー XMP版ではすべての要素をリダクションにしているのに対し MPI版は計算に必要な要素のみをリダクションしているため SWoPP2010 金沢 25
43 CGの考察 2と8プロセスの場合 縦と横の分割数が異なる では同じ reduction後のgmove wとqの要素数は同じ q[] w[] n(1,1) n(2,1) n(1,1) n(2,1) n(3,1) n(4,1) n(1,1) n(2,1) n(3,1) n(4,1) n(1,2) n(2,2) n(3,2) n(4,2) n(1,2) n(2,2) n(3,2) n(4,2) 2分割 4コピー 4分割 2コピー XMP版ではすべての要素をリダクションにしているのに対し MPI版は計算に必要な要素のみをリダクションしているため SWoPP2010 金沢 25
44 CGの考察 2と8プロセスの場合 縦と横の分割数が異なる では同じ reduction後のgmove wとqの要素数は同じ q[] n(1,2) w[] n(1,1) n(2,1) n(1,1) n(2,1) n(3,1) n(4,1) n(1,1) n(2,1) n(3,1) n(4,1) n(1,2) n(2,2) n(3,2) n(4,2) n(1,2) n(2,2) n(3,2) n(4,2) 2分割 4コピー 4分割 2コピー XMP版ではすべての要素をリダクションにしているのに対し MPI版は計算に必要な要素のみをリダクションしているため SWoPP2010 金沢 25
45 CGの考察 2と8プロセスの場合 縦と横の分割数が異なる では同じ reduction後のgmove wとqの要素数は同じ q[] n(1,2) n(2,2) w[] n(1,1) n(2,1) n(1,1) n(2,1) n(3,1) n(4,1) n(1,1) n(2,1) n(3,1) n(4,1) n(1,2) n(2,2) n(3,2) n(4,2) n(1,2) n(2,2) n(3,2) n(4,2) 2分割 4コピー 4分割 2コピー XMP版ではすべての要素をリダクションにしているのに対し MPI版は計算に必要な要素のみをリダクションしているため SWoPP2010 金沢 25
46 CGの考察 2と8プロセスの場合 縦と横の分割数が異なる では同じ reduction後のgmove wとqの要素数は同じ q[] n(1,2) n(2,2) w[] n(1,1) n(2,1) n(1,1) n(2,1) n(3,1) n(4,1) n(1,1) n(2,1) n(3,1) n(4,1) n(1,2) n(2,2) n(3,2) n(4,2) n(1,2) n(2,2) n(3,2) n(4,2) 利用されない 2分割 4コピー 4分割 2コピー XMP版ではすべての要素をリダクションにしているのに対し MPI版は計算に必要な要素のみをリダクションしているため SWoPP2010 金沢 25
47 まとめと今後の課題 分散メモリシステム用の新しいプログラミングモデルで あるXMPの性能評価 本発表では NPBのCGとISをXMPの実装を紹介 MPI版のNPBとの性能比較した結果 ほぼ同等の性能 今後の課題 マルチコア対応XMPの評価 ノード数とプロセス数を増やして性能評価 並列化をサポートするための プロファイリングツールの 開発 SWoPP2010 金沢 26
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)
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
新しい並列プログラミング言語である 分散メモリ環境において OpenMPのようにMPI とは異なるシンプルな言語構文と指示文による並列化を目指している ベース言語は Fortran 言語とC 言語となっており 2011 年 6 月に発足したPC クラスタコンソーシアム XcalableMP 規格部会
高性能並列プログラミング言語 XcalableMP の紹介 IntroductionofaPGASparalelprogramminglanguage XcalableMP 一般財団法人高度情報科学技術研究機構原山卓也 井上孝洋 手島正吾国立研究開発法人理化学研究所計算科学研究機構村井均 現在の京を中核とするHPCI におけるスーパーコンピュータやPC クラスタでは CPU に多くの計算コアを搭載している
Microsoft PowerPoint - 演習1:並列化と評価.pptx
講義 2& 演習 1 プログラム並列化と性能評価 神戸大学大学院システム情報学研究科横川三津夫 [email protected] 2014/3/5 RIKEN AICS HPC Spring School 2014: プログラム並列化と性能評価 1 2014/3/5 RIKEN AICS HPC Spring School 2014: プログラム並列化と性能評価 2 2 次元温度分布の計算
PowerPoint プレゼンテーション
1 Omni XcalableMP Compiler の概要 下坂健則理化学研究所計算科学研究機構 2011/11/01 2 目次 開発概要 Omni XcalableMP Compilerの構造 Omni XcalableMP Compilerの特徴 インストール方法 講習会活動 課題 まとめ 3 開発概要 筑波大 CCS と理研 AICS で開発中 オープンソースプロジェクト XMP/C, XMP/Fortran
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
演習1: 演習準備
演習 1: 演習準備 2013 年 8 月 6 日神戸大学大学院システム情報学研究科森下浩二 1 演習 1 の内容 神戸大 X10(π-omputer) について システム概要 ログイン方法 コンパイルとジョブ実行方法 OpenMP の演習 ( 入門編 ) 1. parallel 構文 実行時ライブラリ関数 2. ループ構文 3. shared 節 private 節 4. reduction 節
並列計算導入.pptx
並列計算の基礎 MPI を用いた並列計算 並列計算の環境 並列計算 複数の計算ユニット(PU, ore, Pなど を使用して 一つの問題 計算 を行わせる 近年 並列計算を手軽に使用できる環境が急速に整いつつある >通常のP PU(entral Processing Unit)上に計算装置であるoreが 複数含まれている Intel ore i7 シリーズ: 4つの計算装置(ore) 通常のプログラム
WinHPC ppt
MPI.NET C# 2 2009 1 20 MPI.NET MPI.NET C# MPI.NET C# MPI MPI.NET 1 1 MPI.NET C# Hello World MPI.NET.NET Framework.NET C# API C# Microsoft.NET java.net (Visual Basic.NET Visual C++) C# class Helloworld
MPI usage
MPI (Version 0.99 2006 11 8 ) 1 1 MPI ( Message Passing Interface ) 1 1.1 MPI................................. 1 1.2............................... 2 1.2.1 MPI GATHER.......................... 2 1.2.2
コードのチューニング
OpenMP による並列化実装 八木学 ( 理化学研究所計算科学研究センター ) KOBE HPC Spring School 2019 2019 年 3 月 14 日 スレッド並列とプロセス並列 スレッド並列 OpenMP 自動並列化 プロセス並列 MPI プロセス プロセス プロセス スレッドスレッドスレッドスレッド メモリ メモリ プロセス間通信 Private Private Private
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];
MPI MPI MPI.NET C# MPI Version2
MPI.NET C# 2 2009 2 27 MPI MPI MPI.NET C# MPI Version2 MPI (Message Passing Interface) MPI MPI Version 1 1994 1 1 1 1 ID MPI MPI_Send MPI_Recv if(rank == 0){ // 0 MPI_Send(); } else if(rank == 1){ // 1
(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 共有メモリマルチプロセッサシステムの普及 共有メモリマルチプロセッサシステムのための並列化指示文を共通化する必要性 各社で仕様が異なり 移植性がない そして いまやマルチコア プロセッサが主流となり
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
スパコンに通じる並列プログラミングの基礎
2018.09.10 [email protected] ( ) 2018.09.10 1 / 59 [email protected] ( ) 2018.09.10 2 / 59 Windows, Mac Unix 0444-J [email protected] ( ) 2018.09.10 3 / 59 Part I Unix GUI CUI:
スパコンに通じる並列プログラミングの基礎
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
2007年度 計算機システム演習 第3回
2014 年度 実践的並列コンピューティング 第 10 回 MPI による分散メモリ並列プログラミング (3) 遠藤敏夫 [email protected] 1 MPI プログラムの性能を考える 前回までは MPI プログラムの挙動の正しさを議論 今回は速度性能に注目 MPIプログラムの実行時間 = プロセス内計算時間 + プロセス間通信時間 計算量 ( プロセス内 ) ボトルネック有無メモリアクセス量
Microsoft PowerPoint - program.ppt [互換モード]
プログラミング演習 バージョン 1 担当教員 : 綴木馴 プログラムの決まりについて学ぶ おすすめする参考書 ザ C 戸川隼人サイエンス社 本日の予定 1. 授業の説明. 2. コンパイラーのインストール. プログラムの決まりについて学ぶ,P31 /* The most in C */ /* hello.c */ printf("hello,world n"); プログラムの決まり ( コメント )
演習準備
演習準備 2014 年 3 月 5 日神戸大学大学院システム情報学研究科森下浩二 1 演習準備の内容 神戸大 FX10(π-Computer) 利用準備 システム概要 ログイン方法 コンパイルとジョブ実行方法 MPI 復習 1. MPIプログラムの基本構成 2. 並列実行 3. 1 対 1 通信 集団通信 4. データ 処理分割 5. 計算時間計測 2 神戸大 FX10(π-Computer) 利用準備
Microsoft Word ●IntelクアッドコアCPUでのベンチマーク_吉岡_ _更新__ doc
2.3. アプリ性能 2.3.1. Intel クアッドコア CPU でのベンチマーク 東京海洋大学吉岡諭 1. はじめにこの数年でマルチコア CPU の普及が進んできた x86 系の CPU でも Intel と AD がデュアルコア クアッドコアの CPU を次々と市場に送り出していて それらが PC クラスタの CPU として採用され HPC に活用されている ここでは Intel クアッドコア
memo
数理情報工学演習第一 C プログラミング演習 ( 第 5 回 ) 2015/05/11 DEPARTMENT OF MATHEMATICAL INFORMATICS 1 今日の内容 : プロトタイプ宣言 ヘッダーファイル, プログラムの分割 課題 : 疎行列 2 プロトタイプ宣言 3 C 言語では, 関数や変数は使用する前 ( ソースの上のほう ) に定義されている必要がある. double sub(int
GeoFEM開発の経験から
FrontISTR における並列計算のしくみ < 領域分割に基づく並列 FEM> メッシュ分割 領域分割 領域分割 ( パーティショニングツール ) 全体制御 解析制御 メッシュ hecmw_ctrl.dat 境界条件 材料物性 計算制御パラメータ 可視化パラメータ 領域分割ツール 逐次計算 並列計算 Front ISTR FEM の主な演算 FrontISTR における並列計算のしくみ < 領域分割に基づく並列
情報処理概論(第二日目)
情報処理概論 工学部物質科学工学科応用化学コース機能物質化学クラス 第 8 回 2005 年 6 月 9 日 前回の演習の解答例 多項式の計算 ( 前半 ): program poly implicit none integer, parameter :: number = 5 real(8), dimension(0:number) :: a real(8) :: x, total integer
最新の並列計算事情とCAE
1 大島聡史 ( 東京大学情報基盤センター助教 / 並列計算分科会主査 ) 最新の並列計算事情と CAE アウトライン 最新の並列計算機事情と CAE 世界一の性能を達成した 京 について マルチコア メニーコア GPU クラスタ 最新の並列計算事情と CAE MPI OpenMP CUDA OpenCL etc. 京 については 仕分けやら予算やら計画やらの面で問題視する意見もあるかと思いますが
スパコンに通じる並列プログラミングの基礎
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
cp-7. 配列
cp-7. 配列 (C プログラムの書き方を, パソコン演習で学ぶシリーズ ) https://www.kkaneko.jp/cc/adp/index.html 金子邦彦 1 本日の内容 例題 1. 月の日数配列とは. 配列の宣言. 配列の添え字. 例題 2. ベクトルの内積例題 3. 合計点と平均点例題 4. 棒グラフを描く配列と繰り返し計算の関係例題 5. 行列の和 2 次元配列 2 今日の到達目標
2 T 1 N n T n α = T 1 nt n (1) α = 1 100% OpenMP MPI OpenMP OpenMP MPI (Message Passing Interface) MPI MPICH OpenMPI 1 OpenMP MPI MPI (trivial p
22 6 22 MPI MPI 1 1 2 2 3 MPI 3 4 7 4.1.................................. 7 4.2 ( )................................ 10 4.3 (Allreduce )................................. 12 5 14 5.1........................................
2012年度HPCサマーセミナー_多田野.pptx
! CCS HPC! I " [email protected]" " 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
Microsoft PowerPoint - 講義:片方向通信.pptx
MPI( 片方向通信 ) 09 年 3 月 5 日 神戸大学大学院システム情報学研究科計算科学専攻横川三津夫 09/3/5 KOBE HPC Spring School 09 分散メモリ型並列計算機 複数のプロセッサがネットワークで接続されており, れぞれのプロセッサ (PE) が, メモリを持っている. 各 PE が自分のメモリ領域のみアクセス可能 特徴数千から数万 PE 規模の並列システムが可能
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
第9回 配列(array)型の変数
第 12 回 配列型の変数 情報処理演習 ( テキスト : 第 4 章, 第 8 章 ) 今日の内容 1. 配列の必要性 2. 配列の宣言 3. 配列変数のイメージ 4. 配列変数を使用した例 5. 範囲を超えた添字を使うと? 6. 多次元配列変数 7. 多次元配列変数を使用した例 8. データのソーティング 9. 今日の練習問題 多数のデータ処理 1. 配列の必要性 ( テキスト 31 ページ )
C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ
C プログラミング演習 1( 再 ) 2 講義では C プログラミングの基本を学び 演習では やや実践的なプログラミングを通して学ぶ 今回のプログラミングの課題 次のステップによって 徐々に難易度の高いプログラムを作成する ( 参照用の番号は よくわかる C 言語 のページ番号 ) 1. キーボード入力された整数 10 個の中から最大のものを答える 2. 整数を要素とする配列 (p.57-59) に初期値を与えておき
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
CCS HPCサマーセミナー 並列数値計算アルゴリズム
大規模系での高速フーリエ変換 2 高橋大介 [email protected] 筑波大学計算科学研究センター 2016/6/2 計算科学技術特論 B 1 講義内容 並列三次元 FFT における自動チューニング 二次元分割を用いた並列三次元 FFT アルゴリズム GPU クラスタにおける並列三次元 FFT 2016/6/2 計算科学技術特論 B 2 並列三次元 FFT における 自動チューニング
OpenMPプログラミング
OpenMP 基礎 岩下武史 ( 学術情報メディアセンター ) 1 2013/9/13 並列処理とは 逐次処理 CPU1 並列処理 CPU1 CPU2 CPU3 CPU4 処理 1 処理 1 処理 2 処理 3 処理 4 処理 2 処理 3 処理 4 時間 2 2 種類の並列処理方法 プロセス並列 スレッド並列 並列プログラム 並列プログラム プロセス プロセス 0 プロセス 1 プロセス間通信 スレッド
スライド 1
GPU クラスタによる格子 QCD 計算 広大理尾崎裕介 石川健一 1.1 Introduction Graphic Processing Units 1 チップに数百個の演算器 多数の演算器による並列計算 ~TFLOPS ( 単精度 ) CPU 数十 GFLOPS バンド幅 ~100GB/s コストパフォーマンス ~$400 GPU の開発環境 NVIDIA CUDA http://www.nvidia.co.jp/object/cuda_home_new_jp.html
C/C++ FORTRAN FORTRAN MPI MPI MPI UNIX Windows (SIMD Single Instruction Multipule Data) SMP(Symmetric Multi Processor) MPI (thread) OpenMP[5]
MPI ( ) [email protected] 1 ( ) MPI MPI Message Passing Interface[2] MPI MPICH[3],LAM/MPI[4] (MIMDMultiple Instruction Multipule Data) Message Passing ( ) (MPI (rank) PE(Processing Element)
4 月 東京都立蔵前工業高等学校平成 30 年度教科 ( 工業 ) 科目 ( プログラミング技術 ) 年間授業計画 教科 :( 工業 ) 科目 :( プログラミング技術 ) 単位数 : 2 単位 対象学年組 :( 第 3 学年電気科 ) 教科担当者 :( 高橋寛 三枝明夫 ) 使用教科書 :( プロ
4 東京都立蔵前工業高等学校平成 30 年度教科 ( 工業 ) 科目 ( プログラミング技術 ) 年間授業計画 教科 :( 工業 ) 科目 :( プログラミング技術 ) 単位数 : 2 単位 対象学年組 :( 第 3 学年電気科 ) 教科担当者 :( 高橋寛 三枝明夫 ) 使用教科書 :( プログラミング技術 工業 333 実教出版 ) 共通 : 科目 プログラミング技術 のオリエンテーション プログラミング技術は
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]
