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

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

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

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

openmp1_Yaguchi_version_170530

I I / 47

01_OpenMP_osx.indd

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

02_C-C++_osx.indd

コードのチューニング

OpenMPプログラミング

演習1: 演習準備

untitled

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

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

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

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

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

05 I I / 56

XcalableMP入門

untitled

untitled

PowerPoint プレゼンテーション

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

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

I

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

nakao

MPI usage

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

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

120802_MPI.ppt

2 A I / 58

並列プログラミング入門(OpenMP編)

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

2 I I / 61

03_Fortran_osx.indd

PowerPoint プレゼンテーション

C

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

all.dvi

XMPによる並列化実装2

040312研究会HPC2500.ppt

Microsoft Word - Live Meeting Help.docx

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 +

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

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

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

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,.,

. (.8.). t + t m ü(t + t) + c u(t + t) + k u(t + t) = f(t + t) () m ü f. () c u k u t + t u Taylor t 3 u(t + t) = u(t) + t! u(t) + ( t)! = u(t) + t u(

Microsoft Word - 資料 docx

演習2

Microsoft PowerPoint - 03_What is OpenMP 4.0 other_Jan18

Microsoft PowerPoint _MPI-01.pptx

1F90/kouhou_hf90.dvi

Microsoft Word - openmp-txt.doc

(2-1) x, m, 2 N(m, 2 ) x REAL*8 FUNCTION NRMDST (X, M, V) X,M,V REAL*8 x, m, 2 X X N(0,1) f(x) standard-norm.txt normdist1.f x=0, 0.31, 0.5

MPI MPI MPI.NET C# MPI Version2

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

untitled

( ) 1 Windows HTML ( ) ( ) ( ) WWW 10 ( )

Microsoft Word - 資料 (テイラー級数と数値積分).docx

GridEngineユーザーマニュアル

VT SoftWare Users Guide

untitled

演習準備

情報活用資料

Fortran90/95 2. (p 74) f g h x y z f x h x = f x + g x h y = f y + g y h z = f z + g z f x f y f y f h = f + g Fortran 1 3 a b c c(1) = a(1) + b(1) c(

num2.dvi

フカシギおねえさん問題の高速計算アルゴリズム

情報活用資料

2 2.1 Mac OS CPU Mac OS tar zxf zpares_0.9.6.tar.gz cd zpares_0.9.6 Mac Makefile Mekefile.inc cp Makefile.inc/make.inc.gfortran.seq.macosx make

Microsoft PowerPoint _MPI-03.pptx

pbs-new.dvi

プラズマ核融合学会誌5月号【81-5】/内外情報_ソフト【注:欧フォント特殊!】

Torqueユーザーマニュアル

enshu5_4.key

2.2 Sage I 11 factor Sage Sage exit quit 1 sage : exit 2 Exiting Sage ( CPU time 0m0.06s, Wall time 2m8.71 s). 2.2 Sage Python Sage 1. Sage.sage 2. sa

NUMAの構成

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

Microsoft Word - 03-数値計算の基礎.docx

演習1

和佐田 裕昭P indd

GPU CUDA CUDA 2010/06/28 1

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

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

sp8ct : 2 (1-3) UNIX Linux sp8ct/src make install sp8ct/bin SPring-8 pr47 /home/image/bin sp8ct/src Makefile Intel-C compiler Makefile GNU-C compiler

hotspot の特定と最適化

28 Docker Design and Implementation of Program Evaluation System Using Docker Virtualized Environment

Intel® Compilers Professional Editions

卒業論文

利用の手引き (VOS3)

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

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

Fortran90/95 [9]! (1 ) " " 5 "Hello!"! 3. (line) Fortran Fortran 1 2 * (1 ) 132 ( ) * 2 ( Fortran ) Fortran ,6 (continuation line) 1

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

Microsoft PowerPoint - OpenMP入門.pptx

~~~~~~~~~~~~~~~~~~ wait Call CPU time 1, latch: library cache 7, latch: library cache lock 4, job scheduler co

Microsoft PowerPoint - sales2.ppt

最適化手法 第1回 [3mm] 整数計画法 (1) [3mm]

Transcription:

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 Ver 2.0 API 2002 C/C++ Ver 2.0 API 2005 FORTRAN C/C++ Ver 2.5 API 2008 FORTRAN C/C++ Ver 3.0 API

OpenMP Fork Join Fork Join

OpenMP FORTRAN/C/C++ FORTRAN!$omp! $omp parallel omp get num threads() OMP NUM THREADS

Hello World 48 enshu-openmp1 mkdir enshu openmp1 cd enshu openmp1 emacs hello.f90 program hello world i m p l i c i t none p r i n t, Hello World! end program

TORQUE Resource Manager 1 2 3 4. / a. out PU./a.out

PU default 48 1 64 OpenMP #!/bin/bash #PBS -N jobname #PBS -l nodes=1 l #PBS -l ncpus=1 #PBS -q default #PBS -j oe cd /home/ username / enshu openmp1 / export OMP NUM THREADS=1 ncpus. / a. out hello.sh

qsub qstat RequestID R: Q: Job id Name User Time Use S Queue 5.localhost hello world yaguchi 0 R default qdel qstat RequestID Hello World qsub hello. sh 168.magny-cours.localdomain 168 RequestID.o?? RequestID Hello World! cat

OpenMP Hello World Hollow World program hello world i m p l i c i t none integer :: omp get thread num!$omp parallel p r i n t, My id is, omp get thread num(), Hello World!!$omp end parallel end program pgf95 -mp hello. f90 hello.sh ncpus, OMP NUM THREADS qsub hello. sh

!$omp parallel!$omp end parallel OMP NUM THREADS omp get thread num() program hello i m p l i c i t none!$omp parallel!$omp end parallel end program OK

program main i m p l i c i t none!$omp parallel!$omp end parallel end program

PARALLEL ID 0 OMP NUM THREADS 1 END PARALLEL

Work-Sharing Work Share Work-Sharing DO!$OMP DO,!$OMP END DO!$OMP SECTIONS,!$OMP END SECTIONS FORTRAN!$OMP WORKSHARE,!$OMP END WORKSHARE a ( 1 : n ) = a ( 1 : n ) + 1!$OMP SINGLE,!$OMP END SINGLE Work-Sharing Work-Sharing!$OMP MASTER,!$OMP END MASTER

DO!$omp do program main implicit none integer, parameter :: SP = kind(1.0) integer, parameter :: DP = selected real kind(2*precision(1.0 SP)) real(dp), dimension(100000) :: a, b integer :: i!$omp parallel!$omp do do i=1,100000 DO b(i) = a(i)!$omp!$omp!$omp end parallel end program do i=1,50000 b(i) = a(i) do i=50001,100000 b(i) = a(i)

omp do 1, 2 omp get wtime omp get wtime, time0, time1 time0=omp get wtime() time1=omp get wtime()!$omp parallel!$omp end parallel time1 - time0 time0=omp get wtime ( )! $omp parallel!! $omp end parallel time1=omp get wtime ( ) p r i n t, time1 time0

program axpy i m p l i c i t none integer, parameter : : SP = kind ( 1. 0 ) integer, parameter : : DP = selected real kind (2 precision ( 1. 0 SP ) ) real (DP), dimension (100000) : : x, y, z real (DP ) : : a integer : : i!! a x y!! $omp parallel! $omp do do i = 1, 100000 z ( i ) = a x ( i ) + y ( i ) z = a x + y! $omp! $omp end parallel!!! end program

#!/bin/bash #PBS -N jobname #PBS -l nodes=1 #PBS -l ncpus=2 #PBS -q default #PBS -j oe cd /home/username/enshu-openmp1/ for opn in 1 2 opn do do export OMP NUM THREADS=$opn opn. / a. out done /tmp/openmp1/jscript.sh cp /tmp/openmp1/jscript.sh./

!$omp parallel do do parallel do!$omp parallel!$omp do do i=1,100000 b(i) = a(i)!$omp!$omp end parallel!$omp end parallel do!$omp parallel do do i=1,100000 b(i) = a(i)!$omp end parallel do

omp do program i n v l i m p l i c i t none integer, parameter : : n = 100 integer, dimension ( n ) : : a integer : : i a ( 1 ) = 0! $omp parallel do do i =2,n a ( i ) = a ( i 1) + 1! $omp end parallel do p r i n t, a ( n ) end program do i=1,50 a(i) = a(i-1) + 1 do i=51,100 a(i) = a(i-1) + 1 a(50)

do do!$omp parallel do OMP NUM THREADS do i =1,100 x ( i ) = a x ( i 1) + b

omp workshare!$omp parallel!$omp do do i=1,100000 z(i) = a x(i) + y(i)!$omp!$omp end parallel!$omp parallel!$omp workshare z(:) = a x(:) + y(:)!$omp end workshare!$omp end parallel (!$omp end workshare ) FORTRAN matmul!$omp workshare C = matmul(a, B)!$omp end workshare workshare

do i=1,100! do something i i do i=1,50! do something do i=51,100! do something

! $omp parallel do do i=1,100 do j=1,100!! do something!! $omp end parallel do i j C FORTRAN shared private!$omp parallel do default(none) shared(a, b) private(i,j,k)

a b a 0 b private / shared 9 1 8 2 7 3 6 4 5 5 4 6 3 7 2 8 1 9 0 10 1 9 2 0 3 7 4 0 5 5 6 0 7 3 8 0 9 1 10 0 sum of b : 25

program swap i m p l i c i t none integer, parameter : : SP = kind ( 1. 0 ) integer, parameter : : DP = selected real kind (2 precision ( 1. 0 SP ) ) integer, parameter : : n = 10 integer : : i, tmp integer, dimension ( n ) : : a, b! do i =1,n a ( i ) = n i b ( i ) = i!! $omp parallel do shared, private do i =1,n tmp = a ( i ) i f (mod( i,2)==0) then tmp = 0 end i f a ( i ) = b ( i ) b ( i ) = tmp! $omp end parallel do! write ( 6, (2 i4 ) ) ( a ( i ), b ( i ), i =1,n ) write ( 6, ( a11, i4 ) ) sum of b :, sum( b ) end program /tmp/openmp1/swap.f90

c = 0.0 DP do i =1,n c = c + a ( i ) b ( i ) c c

+,,.and.,.or., max, min c = 0.0 DP! $omp parallel do reduction(+:c) do i =1,n c = c + a ( i ) b ( i )! $omp end parallel do c +

π omp parallel, omp do, omp parallel do shared, private, reduction result.txt yaguchi mail yaguchi < result. t x t

program pi i m p l i c i t none integer, parameter : : SP = kind ( 1. 0 ) integer, parameter : : DP = selected real kind (2 precision ( 1. 0 SP ) ) integer, parameter : : n = 1000000 integer : : i real (DP) : : x, dx, p dx = 1.0 DP / r eal ( n, DP) p = 0.0 DP do i = 1,n x = real ( i, DP) dx p = p + 4.0 DP / ( 1. 0 DP + x 2) dx p r i n t, p end program

jobname.o????,???? mail yaguchi < jobname.o???? #!/bin/bash #PBS -N jobname #PBS -l nodes=1 #PBS -l ncpus=4 #PBS -q default #PBS -j oe cd /home/ username / enshu openmp1 / for opn in 1 2 4 do export OMP NUM THREADS=$opn. / a. out done cat pi.f90 /tmp/openmp1/shukudai.sh

OpenMP (1), (2), (3) http://www.cc.kyushu-u.ac.jp/scp/system/library/openmp/openmp.html. C OpenMP http://www.cc.u-tokyo.ac.jp/publication/kosyu/03/kosyu-openmp c.pdf. OpenMP - CPU 2009. Barbara Chapman, Gabriele Jost and Ruud van der Pas (Foreword by David J. Kuck). Using OpenMP Portable Shared Memory Parallel Programming, The MIT Press, 2007.