I I / 47

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

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

openmp1_Yaguchi_version_170530

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

ÊÂÎó·×»»¤È¤Ï/OpenMP¤Î½éÊâ¡Ê£±¡Ë

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

2 I I / 61

演習1: 演習準備

untitled

演習準備

01_OpenMP_osx.indd

¥Ñ¥Ã¥±¡¼¥¸ Rhpc ¤Î¾õ¶·

XcalableMP入門

コードのチューニング

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

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

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

2

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

MATLAB® における並列・分散コンピューティング ~ Parallel Computing Toolbox™ & MATLAB Distributed Computing Server™ ~

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

FFTSS Library Version 3.0 User's Guide

A : kerl kerl Erlang/OTP Erlang/OTP 2 2 Elixir/Phoenix URL 2 PDF A.2 Bash macos.bash_profile exp

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

120802_MPI.ppt

3. :, c, ν. 4. Burgers : t + c x = ν 2 u x 2, (3), ν. 5. : t + u x = ν 2 u x 2, (4), c. 2 u t 2 = c2 2 u x 2, (5) (1) (4), (1 Navier Stokes,., ν. t +

新スーパーコンピュータ 「ITOシステム」利用講習会

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

hotspot の特定と最適化

超初心者用

Introduction Purpose This training course demonstrates the use of the High-performance Embedded Workshop (HEW), a key tool for developing software for

flex06_01_28

3. :, c, ν. 4. Burgers : u t + c u x = ν 2 u x 2, (3), ν. 5. : u t + u u x = ν 2 u x 2, (4), c. 2 u t 2 = c2 2 u x 2, (5) (1) (4), (1 Navier Stokes,.,

OpenMPプログラミング

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

Compiled MODELSでのDFT位相検出装置のモデル化と評価

NL-20取扱説明書_操作編

040312研究会HPC2500.ppt

WATCH

WATCH

PowerPoint プレゼンテーション

NL-22/NL-32取扱説明書_操作編

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

XJTAG

C

DocuWide 2051/2051MF 補足説明書

NGGAUM_特別対談_再.indd

文庫●注文一覧表2016c(7月)/岩波文庫

PowerPoint プレゼンテーション

スライド 1

西川町広報誌NETWORKにしかわ2011年1月号

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

橡00horse.PDF

Microsoft Word - TORQUE利用の手引きver1.1.doc

nakao

GROMACS実習

Answers Practice 08 JFD1


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

gnuplot.dvi

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

strtok-count.eps

gnuplot gnuplot 1 3 y = x 3 + 3x 2 2 y = sin x sin(x) x*x*x+3*x*x

tebiki00.dvi

Intel® Compilers Professional Editions

Transcription:

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 large 2 2 large I 2013.07.18 4 / 47

I 2013.07.18 5 / 47

MPI + OpenMP = MPI MPI OpenMP do-loop OpenMP 3 fork 3 π-computer 1 16 I 2013.07.18 6 / 47

3 I 2013.07.18 7 / 47

プロセッサ 0 プロセッサ 1 プロセッサ 0 コア 00 コア 01 コア 15 プロセッサ 1 コア 00 コア 01 コア 15 プロセッサ N-1 コア 00 コア 01 コア 15 MPI プロセス 0 プロセッサ 2 MPI プロセス 1 プロセッサ N-1 MPI プロセス N-1 Fork & Join Fork & Join Fork & Join OpenMP スレッド 00 OpenMP スレッド 01 OpenMP スレッド 15 プロセッサ 1 OpenMP スレッド 00 OpenMP スレッド 01 OpenMP スレッド 15 プロセッサ N-1 OpenMP スレッド 00 OpenMP スレッド 01 OpenMP スレッド 15 I 2013.07.18 8 / 47

I 2013.07.18 9 / 47

CPU Fortran95 cpu time() (wall clock time) MPI MPI WTIME() OpenMP omp get wtime() Fortran90 system clock() I 2013.07.18 10 / 47

heat5.f90 heat4...f90 system clock() stopwatch m!! heat5.f90! + module stopwatch, to monitor time.! + many calls to stopwatch stt and.. stp.! - data output calls for profile 1d and 2d (commented out.)!! usage (on pi-computer)!! 1) mkdir../data (unless there is already.)!! 2) mpifrtpx -O3 heat5.f90 (copy un to u is slow in default.)!! 3) pjsub heat5.sh I 2013.07.18 11 / 47

heat5.f90 4 -O3 5 u(1:ngrid,jj%stt:jj%end)=un(1:ngrid,jj%stt:jj%end) 4 usage 5 stopwatch copy un to u I 2013.07.18 12 / 47

################################################## job start at Tue Jul 16 21:07:29 JST 2013 ################################################## # myrank= 3 jj%stt & jj%end = 751 1001 # myrank= 0 jj%stt & jj%end = 1 250 # myrank= 2 jj%stt & jj%end = 501 750 # myrank= 1 jj%stt & jj%end = 251 500 //=============<stop watch>===============\\ profile 1d: 0.000 sec main loop: 8.334 sec mpi sendrecv: 0.409 sec jacobi: 4.103 sec copy un to u: 3.799 sec --------------------------------------- Total: 8.386 sec \\=============<stop watch>===============// ################################################## job end at Tue Jul 16 21:07:39 JST 2013 I 2013.07.18 13 / 47

I 2013.07.18 14 / 47

OpenMP heat6.f90!! heat6.f90! + OpenMP (now this is a hybrid parallel code, with MPI.)! - array calc of u(:,:)=un(:,:). see below.! + double do-loops of u(i,j)=un(i,j), for OpenMP.! usage (on pi-computer)! 1) mkdir../data (unless there is already.)! 2) mpifrtpx -Kopenmp heat6.f90! 3) pjsub heat6.sh I 2013.07.18 15 / 47

OpenMP program main!$ use omp_lib!$omp parallel do do j = jj%stt, jj%end do i = 1, NGRID un(i,j)=(u(i-1,j)+u(i+1,j)+u(i,j-1)+u(i,j+1))*0.25_dp+heat_h end do end do!$omp end parallel do I 2013.07.18 16 / 47

OpenMP! u(1:ngrid,jj%stt:jj%end)=un(1:ngrid,jj%stt:jj%end)!$omp parallel do do j = jj%stt, jj%end do i = 1, NGRID u(i,j)=un(i,j) end do end do!$omp end parallel do I 2013.07.18 17 / 47

mpifrtpx -Kopenmp heat6.f90 heat6.sh school pjsub heat6.sh I 2013.07.18 18 / 47

heat6.sh #!/bin/bash #PJM -N "heat6" #PJM -L "rscgrp=small" #PJM -L "node=4" #PJM -L "elapse=02:00" #PJM -j export FLIB_CNTL_BARRIER_ERR=FALSE.. for opn in 1 2 4 8 16 do export OMP_NUM_THREADS=$opn echo "# omp_num_threads = " $opn mpiexec -n 4./a.out done.. I 2013.07.18 19 / 47

x x 2x = 0 x 0 6 x = 2 β β a: 0.293 b: 0.346 c: 0.432 6 gnuplot y = x x y = 2x x set xrange [xmin:xmax] I 2013.07.18 20 / 47

a b Emacs M-x animate 1st name M-x zone M-x zone c Emacs M-x dunnet 7 3 3 7 help get shovel, look shovel, e, e, dig, look, get cpu,... I 2013.07.18 21 / 47

heat6.f90 1 M ( 16) N ( 84) P (= M N) v.s. S 8 gnuplot 9 8 S stopwatch module Total 9 NGRID I 2013.07.18 22 / 47

(a) (b) NGRID, N, M =OMP NUM THREADS (c) gnuplot (d) (e) I 10 gmail kageyama.lecture@gmail.com pdf 130718 130718 120x227x Yamada 2013 7 25 24 10 (e) I 2013.07.18 23 / 47

A Flat MPI A Flat MPI I 2013.07.18 24 / 47

A Flat MPI Flat MPI 1 1 16 MPI OpenMP 15 1 1 16 MPI 4 4 16 = 64 MPI Flat MPI 11 11 OpenMP I 2013.07.18 25 / 47

A Flat MPI FLAT MPI プロセッサ 0 コア 00 コア 01 コア 15 プロセッサ 1 MPI プロセス 0 MPI プロセス 1 MPI プロセス 15 プロセッサ 1 コア 00 コア 01 コア 15 プロセッサ N-1 コア 00 コア 01 コア 15 プロセッサ 2 MPI プロセス 16 MPI プロセス 17 MPI プロセス 31 プロセッサ N-1 MPI プロセス 16*N-16 MPI プロセス 16*N-15 MPI プロセス 16*N-1 I 2013.07.18 26 / 47

B 1 2 B 1 2 I 2013.07.18 27 / 47

C: 2 C: 2 I 2013.07.18 28 / 47

C: 2 1 1 : 16 I 2013.07.18 29 / 47

C: 2 2 16 1 2 I 2013.07.18 30 / 47

C: 2 1 NGRID 61 100 1 2 3721 I 2013.07.18 31 / 47

C: 2 1 2 NGRID 1 2 I 2013.07.18 32 / 47

C: 2 1 MPI I 2013.07.18 33 / 47

C: 2 2 1. 2. MPI 2 I 2013.07.18 34 / 47

C: 2 2 400 I 2013.07.18 35 / 47

C: 2 2 4 MPI 1 46 I 2013.07.18 36 / 47

C: 2 2 2 4 MPI 38 I 2013.07.18 37 / 47

C: 2 2 I 2013.07.18 38 / 47

C: 2 2 I 2013.07.18 39 / 47

C: 2 2 I 2013.07.18 40 / 47

C: 2 2 MPI I 2013.07.18 41 / 47

C: 2 2 4 1,3,5,7 I 2013.07.18 42 / 47

C: 2 2 4 0,2,6,8 I 2013.07.18 43 / 47

C: 2 MPI CART CREATE MPI MPI CART CREATE 12 12 I 2013.07.18 44 / 47

C: 2 π-computer I 2013.07.18 45 / 47

C: 2 MPI I 2013.07.18 46 / 47

C: 2 1 2 I 2013.07.18 47 / 47