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

Similar documents
untitled

Microsoft PowerPoint - KHPCSS pptx

Microsoft PowerPoint _MPI-03.pptx

Microsoft PowerPoint - 演習2:MPI初歩.pptx

演習準備

(Microsoft PowerPoint \211\211\217K3_4\201i\216R\226{_\211\272\215\342\201j.ppt [\214\335\212\267\203\202\201[\203h])

Microsoft PowerPoint - 講義:片方向通信.pptx

Microsoft PowerPoint - 講義:コミュニケータ.pptx

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

スライド 1

±é½¬£²¡§£Í£Ð£É½éÊâ

コードのチューニング

コードのチューニング

Microsoft PowerPoint MPI.v...O...~...O.e.L.X.g(...Q..)

NUMAの構成

MPI コミュニケータ操作

Microsoft PowerPoint _MPI-01.pptx

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

para02-2.dvi

演習 II 2 つの講義の演習 奇数回 : 連続系アルゴリズム 部分 偶数回 : 計算量理論 部分 連続系アルゴリズム部分は全 8 回を予定 前半 2 回 高性能計算 後半 6 回 数値計算 4 回以上の課題提出 ( プログラム + 考察レポート ) で単位

MPI usage

about MPI

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

CS

並列計算導入.pptx

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

PowerPoint プレゼンテーション

C/C++ FORTRAN FORTRAN MPI MPI MPI UNIX Windows (SIMD Single Instruction Multipule Data) SMP(Symmetric Multi Processor) MPI (thread) OpenMP[5]

PowerPoint プレゼンテーション

<4D F736F F F696E74202D C097F B A E B93C782DD8EE682E890EA97705D>

演習1: 演習準備

4th XcalableMP workshop 目的 n XcalableMPのローカルビューモデルであるXMPのCoarray機能を用 いて Fiberミニアプリ集への実装と評価を行う PGAS(Pertitioned Global Address Space)言語であるCoarrayのベ ンチマ

目 目 用方 用 用 方

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

MPI () MPIMessage Passing Interface MPI MPI OpenMP 7 ( ) 1

スライド 1

WinHPC ppt

スライド 1

untitled

コードのチューニング

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

86


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

2 /83

講義の流れ 並列プログラムの概要 通常のプログラムと並列プログラムの違い 並列プログラム作成手段と並列計算機の構造 OpenMP による並列プログラム作成 処理を複数コアに分割して並列実行する方法 MPI による並列プログラム作成 ( 午後 ) プロセス間通信による並列処理 処理の分割 + データの

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

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

NUMAの構成

Microsoft PowerPoint 並列アルゴリズム04.ppt

Microsoft PowerPoint - OpenMP入門.pptx

enshu5_6.key

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

enshu5_4.key

HPC143

120802_MPI.ppt

スライド 1

I I / 47

<4D F736F F F696E74202D C097F B A E B93C782DD8EE682E890EA97705D>

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

Microsoft PowerPoint - 09.pptx

Microsoft PowerPoint - scls_biogrid_lecture_v2.pptx


Microsoft PowerPoint - 講義1:離散化と並列化.pptx

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

Microsoft PowerPoint - 第10回講義(2015年12月22日)-1 .pptx

Microsoft Word - openmp-txt.doc

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

Page 2 本資料は, 東北大学サイバーサイエンスセンターと NEC の共同により作成され, 大阪大学サイバーメディアセンターの環境で実行確認を行い, 修正を加えたものです. 無断転載等は, ご遠慮下さい.

GeoFEM開発の経験から

Microsoft PowerPoint - 03_What is OpenMP 4.0 other_Jan18

Microsoft PowerPoint - 11.pptx

openmp1_Yaguchi_version_170530

スライド 1

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

Fundamental MPI 1 概要 MPI とは MPI の基礎 :Hello World 全体データと局所データタ グループ通信 (Collective Communication) 1 対 1 通信 (Point-to-Point Communication)

MPI 超 入門 (FORTRAN 編 ) 東京大学情報基盤センター C 言語編は以下 /ohshima/seminars/t2k201111/ (MPI による並列アプリケーション開発入門 2)

Fundamental MPI 1 概要 MPI とは MPI の基礎 :Hello World 全体データと局所データ グループ通信 (Collective Communication) 1 対 1 通信 (Point-to-Point Communication)

7 ポインタ (P.61) ポインタを使うと, メモリ上のデータを直接操作することができる. 例えばデータの変更 やコピーなどが簡単にできる. また処理が高速になる. 7.1 ポインタの概念 変数を次のように宣言すると, int num; メモリにその領域が確保される. 仮にその開始のアドレスを 1

Microsoft PowerPoint - exp2-02_intro.ppt [互換モード]

chap2.ppt

mpi-report-j.dvi

かし, 異なったプロセス間でデータを共有するためには, プロセス間通信や特殊な共有メモリ領域を 利用する必要がある. このためマルチプロセッサマシンの利点を最大に引き出すことができない. こ の問題はマルチスレッドを用いることで解決できる. マルチスレッドとは,1 つのプロセスの中に複 数のスレッド

2007年度 計算機システム演習 第3回

Fujitsu Standard Tool

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

PowerPoint Presentation

Fundamental MPI 1 概要 MPI とは MPI の基礎 :Hello World 全体データと局所データタ グループ通信 (Collective Communication) 1 対 1 通信 (Point-to-Point Communication)

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

GNU開発ツール

Microsoft PowerPoint - 5Chap15.ppt

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

The Parallel Universe 1 インテル MPI ライブラリーのマルチ EP によりハイブリッド アプリケーションのパフォーマンスを向上 最小限のコード変更でエクサスケール時代に備える Rama Kishan Malladi インテルコーポレーショングラフィックス パフォーマンス モ

program7app.ppt

I

memo

Microsoft PowerPoint - MPIprog-F [互換モード]

Microsoft PowerPoint - lec10.ppt

Sae x Sae x 1: 1. {x (i) 0 0 }N i=1 (x (i) 0 0 p(x 0) ) 2. = 1,, T a d (a) i (i = 1,, N) I, II I. v (i) II. x (i) 1 = f (x (i) 1 1, v(i) (b) i (i = 1,

Microsoft PowerPoint - MPIprog-C [互換モード]

Transcription:

講義 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 次元温度分布の計算 ( 定常問題 ) 問題 2 次元正方形領域 [0,1] [0,1] での熱伝導問題 0 境界条件 u(0, y) = 0 u(1, y) = 0 u(x, 0) = 0 u(x, 1) = sin(πx) 十分な時間が経った後での温度分布はどうなるか? 演習用のプログラムファイルは, 以下のディレクトリに置いてありますので, 利用して下さい. Fortran 言語版 /tmp/school/ex1/heat2d.f90 c 言語版 /tmp/school/ex1/heat2d.c

2014/3/5 RIKEN AICS HPC Spring School 2014: プログラム並列化と性能評価 3 演習 : ヤコビ法の並列化と性能評価 OpenMPによる並列化 弱スケーリング 実行時間計測 強スケーリング 実行時間計測 MPI による並列化 mpi_sendrecv 関数強スケーリング, 弱スケーリング 実行時間計測 Hybrid(MPI+OpenMP) による並列化強スケーリング, 弱スケーリング 実行時間計測 強スケーリング並列化では反復回数が変わらないことを確認すること

2014/3/5 RIKEN AICS HPC Spring School 2014: プログラム並列化と性能評価 4 OpenMP による並列化 緩和ループ内部のループに,OpenMP 指示行を挿入して並列化する.!$omp parallel do, または #pragma omp parallel for reduction 変数があることに注意!! 緩和ループ部分の実行時間を計測する. omp_get_wtime() 関数 強スケーリングの評価環境変数 OMP_NUM_THREADS を 1,2,4,8,16 と変化させて実行時間を計測し, 実行時間が短縮されていることを確認する. 弱スケーリングの評価一つのスレッドの担当するデータの大きさを同じにして, スレッド数を 1, 2,4,8,16 と変化させて実行時間を計測する. 緩和ループの回数が変化することに注意!!

2014/3/5 RIKEN AICS HPC Spring School 2014: プログラム並列化と性能評価 5 MPI による並列化 領域分割により MPI 並列化 ( プロセス並列化 ) を行う. 各プロセスは, 部分の計算を担当する. 境界は条件として与えられているので, 計算しないことに注意

2014/3/5 RIKEN AICS HPC Spring School 2014: プログラム並列化と性能評価 6 MPI による並列化 各プロセスでの計算には, 上下の部分の値あることに注意. 上下部分の値は,mpi_sendrecv 関数で転送する. が必要で

2014/3/5 RIKEN AICS HPC Spring School 2014: プログラム並列化と性能評価 7 mpi_sendrecv 関数の使い方 (1/3) 2 次元配列がブロック分割されているとする. このとき, 自分の要素に隣接する隣プロセスの要素を持ってくるようなプログラムを作る. 2 次元配列 プロセス 0 プロセス 1 プロセス 2 プロセス 3 ブロック分割 両隣のプロセスから 1 列を受信 ( 受信用の領域を確保しておく )

2014/3/5 RIKEN AICS HPC Spring School 2014: プログラム並列化と性能評価 8 mpi_sendrecv 関数の使い方 (2/3) 配列の確保自プロセスの担当範囲は jstart ~ jend 列受信領域を考慮し,jstart-1 ~ jend+1 列の領域を確保 mpi_sendrecv による送受信まず, 上隣に jend 列を送り, 下隣から jstart-1 列に受信次に, 下隣に jstart 列を送り, 上隣から jend+1 列に受信両端のプロセスは, ダミープロセス (MPI_PROC_NULL) と送受信するようにする. MPI_sendrecv で同じように記述できる. 第 1 の sendrecv 第 2 の sendrecv

2014/3/5 RIKEN AICS HPC Spring School 2014: プログラム並列化と性能評価 9 mpi_sendrecv 関数の使い方 (3/3) 上下のプロセスのプロセス番号を計算 ( 存在しない場合は MPI_PROC_NULL とする ) bottom = myrank 1 if( myrank == 0) bottom = MPI_PROC_NULL top = myrank+1 if( myrank == nprocs 1) top = MPI_PROC_NULL call mpi_sendrecv( sendbuf, count, MPI_type, bottom, tag, & & redvbuf, count, MPI_type, top, tag, & & MPI_COMM_WORLD, istat, ierr) call mpi_sendrecv( sendbuf, count, MPI_type, top, tag, & & redvbuf, count, MPI_type, bottom, tag, & & MPI_COMM_WORLD, istat, ierr)

2013/8/6 RIKEN AICS HPC Summer School 2013:MPI 初歩 10 Fortran mpi_sendrecv 関数 mpi_sendrecv( sendbuf, sendcount, sendtype, dest, sendtag, & recvbuf, recvcount, recvtype, source, recvtag, & comm, status, ierr ) sendbuf: 送信するデータのための変数名 ( 先頭アドレス ) sendcount: 送信するデータの数 ( 整数型 ) sendtype: 送信するデータの型 MPI_INTEGER, MPI_REAL8, MPI_CHARACTER など dest: 送信する相手のプロセス番号 sendtag: メッセージ識別番号. 送られて来たデータを区別するための番号 recvbuf: 受信するデータのための変数名 ( 先頭アドレス ) recvcount: 受信するデータの数 ( 整数型 ) recvtype: 受信するデータの型 source: 送信してくる相手のプロセス番号 recvtag: メッセージ識別番号. 送られて来たデータを区別するための番号 comm: コミュニケータ ( 例えば,MPI_COMM_WORLD) status: 受信の状態を格納するサイズMPI_STATUS_SIZEの配列 ( 整数型 ) ierr: 戻りコード ( 整数型 )

2013/8/6 RIKEN AICS HPC Summer School 2013:MPI 初歩 11 c MPI_Sendrecv 関数 int MPI_Sendrecv(const void *sendbuf, int sendcount, MPI_Datatype sendtype, int dest, int sendtag, void *recvbuf, int recvcount, MPI_Datatype recvtype, int source, int recvtag, MPI_Comm comm, MPI_Status *status) sendbuf: 送信するデータのための変数名 ( 先頭アドレス ) sendcount: 送信するデータの数 ( 整数型 ) sendtype: 送信するデータの型 MPI_INTEGER, MPI_REAL8, MPI_CHARACTER など dest: 送信する相手のプロセス番号 sendtag: メッセージ識別番号. 送られて来たデータを区別するための番号 recvbuf: 受信するデータのための変数名 ( 先頭アドレス ) recvcount: 受信するデータの数 ( 整数型 ) recvtype: 受信するデータの型 source: 送信してくる相手のプロセス番号 recvtag: メッセージ識別番号. 送られて来たデータを区別するための番号 comm: コミュニケータ ( 例えば,MPI_COMM_WORLD) status: 受信の状態を格納するサイズMPI_STATUS_SIZEの配列 ( 整数型 )

2014/3/5 RIKEN AICS HPC Spring School 2014: プログラム並列化と性能評価 12 MPI による並列化 ( 続き ) 強スケーリングの評価プロセス数 2,4,8 (,16) と変化させて, 実行時間を計測し, 実行時間が短縮されていることを確認する. mpi_wtime() 関数 弱スケーリングの評価一つのプロセスが担当するデータサイズを同じにして, プロセス数を 2,4,8(,16) と変化させて実行時間を計測する. 緩和ループの回数が変化することに注意!!

2014/3/5 RIKEN AICS HPC Spring School 2014: プログラム並列化と性能評価 13 Hybrid(MPI+OpenMP) による並列化 MPI 化したプログラムに対し, 緩和ループ内部のループに OpenMP 指示行を挿入して並列化する. OpenMP の評価と同じことをする.