03_Fortran_osx.indd

Size: px
Start display at page:

Download "03_Fortran_osx.indd"

Transcription

1 Fortran OpenMP*

2 Fortran OpenMP* OpenMP* OpenMP* OpenMP* OpenMP* OpenMP* OpenMP* OpenMP* OpenMP* PARALLEL / OpenMP* OpenMP* OpenMP* / 4 1 OpenMP* 2 C/C++ OpenMP* 3 Fortran OpenMP* 4 PC 1

3 bit 64bit Linux* 32bit 64bit Windows* OpenMP* OpenMP* 9.0 OpenMP* 2.5 OpenMP* OpenMP* 2

4 2. OpenMP* OS OS CPU Memory CPU CPU CPU OpenMP*.1 PC OS.2 3

5 3. OpenMP* OpenMP* APIApplication Programming Interface OpenMP* API 1997 Open MP Architecture Review Board Linux*UNIX* Windows* OpenMP* C/C++ Fortran OpenMP* OpenMP* 9.0 OpenMP* OpenMP* OpenMP* OpenMP* OpenMP* 2.5 C/C++ Fortran 1998 OpenMP* C/C OpenMP* C/C OpenMP* Fortran C/C OpenMP* Fortran 1.0 OpenMP* Fortran 1.1 OpenMP* Fortran OpenMP* 3.1 C/C++ Fortran API OpenMP* OpenMP* C/C++ Fortran OpenMP* OpenMP* OpenMP* /Qopenmp Windows*-openmp Linux* OpenMP* OpenMP* OpenMP* OpenMP* 4

6 OpenMP* OpenMP* OpenMP* OpenMP* OpenMP* OpenMP* 32bit 64bit Linux* 32bit 64bit Windows* OpenMP* 3.2 OpenMP* OpenMP* OpenMP* API OpenMP* /.4 OpenMP* OpenMP* API OpenMP* API OpenMP* API OpenMP* API 5

7 OpenMP* OpenMP* OpenMP* DO!$OMP PARALLEL IF (N.GT.LIMIT) DEFAULT(NON)!$OMP& SHARED(n,a,b,c,x,y,z) PRIVATE(f,i,scale) f = 1.0!$OMP DO NOWAIT do i = 1, n z(i) = x(i) + y(i) end do!$omp!$omp DO NOWAIT do i = 1, n a(i) = b(i) + c(i) end do!$omp!$omp BARRIER scale = sum(a, 0, n) + sum(z, 0, n) + f!$omp END PARALLEL Parallel Region.5 OpenMP* 6

8 OpenMP* OpenMP* Linux* $ cat -n pi.f90 1 program omp 2!$ use omp_lib 3 integer num_steps 4 real*8 step,x,pi,sum 5 6 num_steps = step = 1.0D0 / dble(num_steps) 8 sum = 0.0D0 9!$OMP PARALLEL PRIVATE(X) 10 nthread = OMP_GET_NUM_THREADS() 11!$OMP DO REDUCTION(+:SUM) OpenMP* 12 do i = 1, num_steps 13 x = (dble(i)-0.5d0)*step 14 sum = sum + 4.0D0 / (1.0D0 + x * x) OpenMP* 15 end do 16!$OMP 17!$OMP END PARALLEL 18 pi = step * sum 19 write (6,*) nthread,' Threads',' PI = ',pi 20 end program omp 21 $ ifort -O3 -openmp _openmp-report2 pi.f90 ifort: Command line warning: openmp requires C style preprocessing; using fpp to preprocess pi.f90(11) : (col. 6) remark: OpenMP DEFINED LOOP WAS PARALLELIZED. pi.f90(9) : (col. 6) remark: OpenMP DEFINED REGION WAS PARALLELIZED. $ setenv OMP_NUM_THREADS 2 $ time./a.out 2 Threads PI = u 0.003s 0: % 0+0k 0+0io 153pf+0w.6 OpenMP* OpenMP* OpenMP* /Qopenmp Windows*-openmp Linux* OpenMP* OpenMP* OpenMP* OpenMP* 7

9 3.3 OpenMP* OpenMP* OpenMP* OpenMP* C/C++ Fortran while DO I=1, N A[ 1] = = A[ 2]

10 4. OpenMP* 4.1 OpenMP* Fortran Fortran 77 f90 f F OpenMP* Fortran OpenMP* OpenMP*!$OMP 1!$OMP directive [clause[[,] clause] ] &!$OMP directive [clause[[,] clause] ]&!$OMP& [clause[[,] clause] ] Fortran77 OpenMP* c$omp directive [clause[[,] clause] ] *$OMP directive [clause[[,] clause] ] c$omp directive [clause[[,] clause] ] c$omp+ [clause[[,] clause] ] 1. clause 9

11 4.2 OpenMP* C C$ IAM = OMP_GET_THREAD_NUM() OpenMP* C$ 2!$!$ IAM = OMP_GET_THREAD_NUM() + &!$ index #ifdef #indef _OPENMP IAM = OMP_GET_THREAD_NUM() #endif 4.3 OpenMP* OpenMP* API OpenMP* call omp_set_num_threads(integer) integer omp_get_num_threads() 1 integer omp_get_max_threads() OMP_NUM_THREADS integer omp_get_thread_num() 0 0 integer omp_get_num_procs() CPU logical omp_in_parallel().false..true. call omp_set_dynamics (logical) logocal omp_get_dynamic() call omp_set_nested(logical) logical omp_get_nested().1 OpenMP* 10

12 OpenMP* OMP OpenMP* API omp_lib program omp!$ use omp_lib.!$omp parallel Iam = omp_get_thread_num()!$omp end parallel. end program omp OpenMP* OpenMP* Parallel Regions Worksharing Data Environment Synchronization / Runtime functions/environment variables Parallel Regions!$OMP PARALLEL Worksharing!$OMP DO!$OMP SECTIONS!$OMP SINGLE!$OMP WORKSHARE Data Environment : THREADPRIVATE : SHAREDPRIVATELASTPRIVATEREDUCTIONCOPYINCOPYPRIVATE Synchronization : CRITICALBARRIERATOMICFLUSHORDEREDMASTER / Runtime functions/environment variables 11

13 4.5 OpenMP* Fortran OpenMP* stop Fortran!$OMP PARALLEL 10 wrk(id) = garbage(id) res(id) = wrk(id)**2 if(conv(res(id)) goto 10!$OMP END PARALLEL print *,id!$omp PARALLEL 10 wrk(id) = garbage(id) 30 res(id)=wrk(id)**2 if(conv(res(id))goto 20 go to 10!$OMP END PARALLEL if(not_done) goto print *, id.7 12

14 5. OpenMP* 5.1 PARALLEL OpenMP* Parallel Region DO PARALLEL GOTO Fortran PARALLEL!$OMP PARALLEL / $OMP END PARALLEL!$OMP PARALLEL [clause [[,] clause]!$omp END PARALLEL clause OpenMP* OpenMP* Fork-Join Fork!$OMP PARALLEL DO [clause[[,]clause]] DO I = 1, N DO!$OMP END PARALLEL DO!$OMP PARALLEL DO [clause[[,]clause]] DO I = 1, N DO!$OMP END PARALLEL DO ForkJoin Join.8 Fork-Join 13

15 1OpenMP* 2 OpenMP*!$OMP PARALLEL Fork 3!$omp end parallel 4 Join Fork-Join PROGRAM OMP!$ USE OMP_LIB REAL*8 A(4,1000) CALL OMP_SET_NUM_THREADS(4) N=1000!$OMP PARALLEL ID = OMP_GET_THREAD_NUM()+1 CALL POOH(ID, A,N)!$OMP END PARALLEL WRITE (*,*) 'all done' END SUBROUTINE POOH(ID,A,N) REAL*8 A(4,*) DO I= 1, N A(ID,J) = 1.0 RETURN END REAL*8 A(4,1000) OMP_SET_NUM_THREADS(4) POOH(0,A,N) WRITE (*,*) 'all done' A DO POOH(1,A,N) POOH(2,A,N) POOH(3,A,N).9 OpenMP* PARALLEL OpenMP* 14

16 main.f PROGRAM OMP INTEGER OMP_GET_THREAD_NUM!$OMP PARALLEL CALL WHOAMI!$OMP END PARALLEL WRITE (6,*) 'All Done' CALL WHOAMI!$OMP PARALLEL IF (OMP_GET_THREAD_NUM().EQ.1) &CALL WHOAMI!$OMP END PARALLEL STOP END PROGRAM OMP whoami.f SUBROUTINE WHOAMI EXTERNAL OMP_GET_THREAD_NUM INTEGER IAM, OMP_GET_THREAD_NUM IAM = OMP_GET_THREAD_NUM()!$OMP CRITICAL WRITE (6,*) 'Hello from',iam!$omp END CRITICAL RETURN END m a i n. f 2 WHOAMI whoami.f.10 OpenMP* main.f 2 WHOAMI whoami.f 15

17 5.2 Fortran PARALLEL OpenMP* API 1 do i = 1, n ; a(i) = a(i) + b(i) ; end do 2OpenMP*!$OMP PARALLEL PRIVATE (id,i,istart,iend) id = omp_get_thread_num(); Nthrds = omp_get_num_threads(); istart = id * n / Nthrds; iend = (id+1) * n / Nthrds; do i=istart,iend ; a(i)=a(i)+b(i) ; end do!$omp END PARALLEL 3OpenMP*!$OMP PARALLEL!$OMP DO SCHEDULE(STATIC) do i = 1, n ; a(i) = a(i) + b(i) ; end do!$omp PARALLEL DO SCHEDULE(static) do i = 1, n ; a(i) = a(i) + b(i) ; end do.11 OpenMP* 1 DO 2 OpenMP* 3 DO DO DO!$OMP DO [clause [[,] clause]..] DO [!$OMP [NOWAIT]] 16

18 Fork!$OMP PARALLEL DO [clause[[,]clause]] DO I = 1, N DO!$OMP END PARALLEL DO!$OMP PARALLEL DO [clause[[,]clause]] DO I = 1, N DO!$OMP END PARALLEL DO ForkJoin Join.12 DO OpenMP* PROGRAM OMP!$ USE OMP_LIB REAL*8 A(100) CALL OMP_SET_NUM_THREADS(4)!$OMP PARALLEL DO DO I = 1, 100 CALL POOH(I,A)!$OMP END PARALLEL DO WRITE (*,*) 'all done' END SUBROUTINE POOH(I,A) REAL*8 A(*) A(I) = 1.0 RETURN END / ADO REAL*8 A(100) OMP_SET_NUM_THREADS(4) POOH(I,A) POOH(I,A) POOH(I,A) POOH(I,A) I=1,2,3.. I=26,27,.. I=51,52.. i=76,77.. WRITE (*,*) 'all done'.13 DO DO SCHEDULE!$OMP DO SCHEDULE(type[,chunk]) [clause [[,] clause]..] DO [!$OMP [NOWAIT]] 17

19 TYPE STATIC chunk chunk DYNAMIC chunk chunk1 GUIDED guidedchunk chunk chunk1 RUNTIME typechunk OMP_SCHEDULEOMP_SCHEDULE SCHEDULESTATIC.2 4 SCHEDULESTATIC,6 4 SCHEDULESTATIC, DO SCHEDULESTATIC,6 4 DO WHILE NOWAIT DO NOWAIT DO 18

20 SECTIONS SECTIONS Fortran 90 SELECT SECTIONS SECTION!$OMP SECTIONS [clause [[,] clause]..] [!$OMP SECTION] [!$OMP SECTION!$OMP END SECTIONS [NOWAIT] NOWAIT SECTIONS NOWAIT SECTIONS SECTION SECTIONS/END SECTIONS SECTION SECTION!$OMP PARALLEL [clause[[,]clause]]!$omp SECTIONS!$OMP SECTION idle idle!$omp SECTION.15 SECTIONS SECTION SECTION SINGLE SINGLE SINGLE NOWAIT END SINGLE!$OMP SINGLE [clause [[,] clause]..]!$omp END SINGLE [NOWAIT] 19

21 !$OMP PARALLEL!$OMP SINGLE idle idle idle idle!$omp END SINGLE!$OMP END PARALLEL.16 SINGLE SINGLE SECTIONS SECTION WORKSHARE WORKSHARE Fortran FORALLWHERE MATMUL WORKSHARE!$OMP WORKSHARE!$OMP END WORKSHARE [NOWAIT] WORKSHARE SCHEDULE REAL A(100,200), B(100,200), C(100,200)...!$OMP PARALLEL!$OMP WORKSHARE A=B+C!$OMP END WORKSHARE!$OMP END PARALLEL OpenMP* PARALLEL PARALLEL DO PARALLEL SECTIONS PARALLEL WORKSHARE PARALLEL 20

22 5.3 OpenMP* clauseopenmp* OpenMP* PARALLEL DO SECTIONS WORKSHARE SINGLE PARALLEL DO PARALLEL SECTIONS PARALLEL WORKSHAPE IF SCHEDULE PRIVATE SHARE DEFAULT FIRSTPRIVATE LASTPRIVATE COPYIN COPYPRIVATE REDUCTION ORDERED NOWAIT NUM_THREADS.3 OpenMP* SHARED PRIVATE COMMON OpenMP* MODULE THREADPRIVATE SAVE COMMON MODULE OpenMP* OpenMP* PRIVATE OpenMP* SHARED.4 21

23 main.f PROGRAM OMP COMMON /WORK/ A(10) REAL*8 A INTEGER INDEX(10)!$OMP PARALLEL CALL SORT(INDEX)!$OMP END PARALLEL WRITE (6,*) INDEX(1) STOP END PROGRAM OMP sort.f A INDEX COUNT TEMP A, INDEX, COUNT SUBROUTINE SORT(INDEX) COMMON /WORK/ A(10) REAL*8 A INTEGER INDEX(*) REAL*8 TEMP(10) INTEGER COUNT SAVE COUNT.. RETURN END TEMP A, INDEX, COUNT TEMP TEMP.17 THREADPRIVATE COMMON COMMON COMMON MASTER THREADPRIVATE COMMON COMMON THREADPRIVATE COPYIN PARALLEL COMMON DATA 1 THREADPRIVATE!$OMP THREADPRIVATElist list COMMON / 22

24 COMMON /JUNK/ NX COMMON /STUFF/ A,B,C!$OMP THREADPRIVATE (/JUNK/,/STUFF/) NX = 32 C = !$OMP PARALLEL PRIVATE(NX2,CSQ) COPYIN(/JUNK/,C) NX2 = NX * 2 CSQ = C*C... THREADPRIVATE THREADPRIVATE PRIVATElist DO PRIVATE list PRIVATE Fork DO FORALL OpenMP* PRIVATE SHAREDlist OpenMP* SHARED DEFAULTSHAREDPRIVATENONE DEFAULT PRIVATE SHARED DEFAULTPRIVATETHREADPRIVATE COMMON COMMON PRIVATE DEFAULTSHARED default DEFAULTSHARED DEFAULTNONEPRIVATE SHARED PRIVATESHAREDFIRSTPRIVATE LASTPRIVATE REDUCTION PRIVATESHAREDFIRSTPRIVATELASTPRIVATEREDUCTION 23

25 !$OMP PARALLEL DO DEFAULT(PRIVATE),!$OMP& FIRSTPRIVATE(I), SHARED(X),!$OMP& SHARED(R), LASTPRIVATE(I) FIRSTPRIVATElist FIRSTPRIVATE PRIVATE list PRIVATE PRIVATE LASTPRIVATElist PRIVATE LASTPRIVATE PRIVATE list PRIVATE SECTION SECTION PROGRAM TEST IS = 0 C$OMP PARALLEL DO FIRSTPRIVATE(IS) C$OMP+ LASTPRIVATE(IS) DO J=1,1000 IS = IS + J 1000 CONTINUE print *, IS is=0 print is j=1000 COPYINlist COPYIN THREADPRIVATE FIRSTPRIVATE list THREADPRIVATE 24

26 COPYPRIVATElist COPYPRIVATE PRIVATE!$OMP PARALLEL PRIVATE(A,B)...!$OMP SINGLE READ(24) A!$OMP END SINGLE COPYPRIVATE(A) B = A*A...!$OMP END PARALLEL 25

27 5.4 MASTERCRITICALBARRIERATOMICFLUSHORDERED 6 MASTER MASTER / END MASTER!$OMP MASTER!$OMP END MASTER MASTER CRITICAL 1 CRITICAL!$OMP CRITICAL [(name)]!$omp END CRITICAL!$OMP PARALLEL!$OMP DO DO I = 1, N!$OMP!$OMP CRITICAL!$OMP END CRITICAL!$OMP DO DO I = 1, N!$OMP!$OMP END PARALLEL.18 26

28 BARRIER BARRIER!$OMP BARRIER ATOMIC ATOMIC!$OMP ATOMIC Expression-statement 1 x = x op expr, x = expr op x, x = intr (x, expr), x = intr(expr, x) x expr x INTR MAX, MIN, IAND, IOR, IEOR op +, *, -, /,.AND.,.OR.,.EQV.,.NEQV.!$OMP PARALLEL!$OMP DO DO I = 1, N!$OMP!$OMP ATOMIC!$OMP DO DO I = 1, N!$OMP!$OMP END PARALLEL x ATOMIC ATOMIC CRITICAL ATOMIC CRITICAL.19 ATOMIC 27

29 C$OMP PARALLEL PRIVATE(B) B = DOIT(I) C$OMP ATOMIC X = X + FOO(B) C$OMP END PARALLEL!$OMP PARALLEL PRIVATE(B, tmp) B = DOIT(I) TMP = FOO(B)!$OMP CRITICAL X = X + tmp!$omp END CRITICAL!$OMP END PARALLEL 2 X ATOMIC CRITICAL foo 2 FLUSH flush!$omp FLUSH [(list)] list, COMMON SAVE SAVE SHARED list,list ORDERD ORDERD / END ORDERED!$OMP ORDERED!$OMP END ORDERED ORDERED DO PARALLEL DO DO ORDERED 28

30 REDUCTION REDUCTION DO REDUCTION REDUCTION( {op intr }: list ) list SHARED list intr MAX, MIN, IAND, IOR, IEOR op +, *, -, /,.AND.,.OR.,.EQV.,.NEQV. REDUCTION op REDUCTION NOWAIT REDUCTION BARRIER REDUCTION ASUM = 0.0 APROD = 1.0!$OMP PARALLEL DO REDUCTION(+:ASUM) REDUCTION(*:APROD) DO I = 1, n ASUM = ASUM + A(I) APROD = APROD * A(I)!$OMP END PARALLEL DO + 0.OR. 0 * 1 MAX 1-0 MIN 0.AND. 1 // 1.5 REDUCTION REDUCTION REDUCTION!$OMP DO REDUCTION(+: A, Y) REDUCTION(.OR.: AM) 29

31 5.5 IF IF PARALLEL IF TRUE NUM_THREADS NUM_THREADS PARALLEL NOWAIT OpenMP* END SECTIONSEND SINGLE NOWAIT!$OMP PARALLEL!$OMP DO DO I = 1, N!$OMP!$OMP CRITICAL!$OMP END CRITICAL!$OMP DO DO I = 1, N!$OMP!$OMP END PARALLEL.20 NOWAIT NOWAIT!$OMP DO DO J=1,N A(J) = B(J) + C(J)!$OMP DO DO J=1,N D(J) = E(J) * f!$omp DO DO J=1,n Z(J) = (A(J)+A(J+1)) *

32 5.6 / OpenMP* OMP_NUM_THREADS OMP_SCHEDULE OMP_DYNAMIC OMP_NESTED setenv OMP_NUM_THREADS 4Linux* set OMP_NUM_THREADS=4Windows* type[,chunk] type static/dynamic/guided chunk chunk static 1 static chunk setenv OMP_SCHEDULE "DYNAMIC"Linux* set OMP_SCHEDULE=DYNAMICWindows* true false setenv OMP_DYNAMIC TRUELinux* set OMP_DYNAMIC=TRUEWindows* true false false setenv OMP_NESTED TRUELinux* set OMP_NESTED=TRUEWindows*.6 OpenMP* 31

33 6. OpenMP* OpenMP* OpenMP* OpenMP* OpenMP* OpenMP* OpenMP*.21 OpenMP* OpenMP* 1. VTune TM 2. OpenMP* 3. MKL OpenMP* 32

34 7. OpenMP* 33

35 OpenMP* OpenMP* OpenMP* md.f OpenMP* OpenMP* SGI Altix / Itanium GHz $ IFORT -O3 -PARALLEL -PAR_THRESHOLD0 md.f md.f(35) : (COL. 6) REMARK: LOOP WAS AUTO-PARALLELIZED. md.f(98) : (COL. 8) REMARK: LOOP WAS AUTO-PARALLELIZED. md.f(161) : (COL. 6) REMARK: LOOP WAS AUTO-PARALLELIZED. md.f(181) : (COL. 6) REMARK: LOOP WAS AUTO-PARALLELIZED. md.f(212) : (COL. 6) REMARK: LOOP WAS AUTO-PARALLELIZED. dist 34

36 96 DO I=1,NP 97! COMPUTE POTENTIAL ENERGY AND FORCES 98 F(1:ND,I) = DO J=1,NP 100 IF (I.NE. J) THEN 101 CALL DIST(ND,BOX,POS(1,I),POS(1,J),RIJ,D) 102! ATTRIBUTE HALF OF THE POTENTIAL ENERGY TO PARTICLE 'J' 103 POT = POT + 0.5*V(D) 104 DO K=1,ND 105 F(K,I) = F(K,I) - RIJ(K)*DV(D)/D 106 ENDDO 107 ENDIF 108 ENDDO 109! COMPUTE KINETIC ENERGY 110 KIN = KIN + DOTR8(ND,VEL(1,I),VEL(1,I)) 111 ENDDO 148 SUBROUTINE DIST(ND,BOX,R1,R2,DR,D) 160 D = DO I=1,ND 162 DR(I) = R1(I) - R2(I) 163 D = D + DR(i)** ENDDO 165 D = SQRT(D) RETURN 168 END 35

37 OpenMP*!$OMP PARALLEL DO!$OMP& DEFAULT(SHARED)!$OMP& PRIVATE(I,J,K,RIJ,D)!$OMP& REDUCTION(+ : POT, KIN) DO I=1,NP! COMPUTE POTENTIAL ENERGY AND FORCES F(1:ND,I) = 0.0 DO J=1,NP IF (I.NE. J) THEN CALL DIST(ND,BOX,POS(1,I),POS(1,J),RIJ,D)! ATTRIBUTE HALF OF THE POTENTIAL ENERGY TO PARTICLE 'J' POT = POT + 0.5*V(D) DO K=1,ND F(K,I) = F(K,I) - RIJ(K)*DV(D)/D ENDDO ENDIF ENDDO! COMPUTE KINETIC ENERGY KIN = KIN + DOTR8(ND,VEL(1,I),VEL(1,I)) ENDDO!$OMP END PARALLEL DO KIN = KIN*0.5*MASS OpenMP* 36

38 OpenMP* PROGRAM OMP INTEGER NUM_STEPS REAL*8 STEP,X,PI,SUM NUM_STEPS = STEP = 1.0D0 / DBLE(NUM_STEPS) SUM = 0.0D0!$OMP PARALLEL DO REDUCTION(+:SUM) PRIVATE(X) DO I = 1, NUM_STEPS X = (DBLE(I)-0.5D0)*STEP SUM = SUM + 4.0D0 / (1.0D0 + X * X) PI = STEP * SUM WRITE (6,*) 'PI = ',PI END PROGRAM OMP PROGRAM OMP!$ USE OMP_LIB PARAMETER (NUM_THREADS=4) INTEGER NUM_STEPS REAL*8 STEP,X,PI,SUM(0:NUM_THREADS-1) NUM_STEPS = STEP = 1.0D0 / DBLE(NUM_STEPS) CALL OMP_SET_NUM_THREADS(NUM_THREADS)!$OMP PARALLEL PRIVATE(X) ID = OMP_GET_THREAD_NUM() SUM(ID) = 0.0D0 ISTART = ID * NUM_STEPS / NUM_THREADS + 1 IEND = (ID+1) * NUM_STEPS / NUM_THREADS DO I = ISTART, IEND X = (DBLE(I)-0.5D0)*STEP SUM(ID) = SUM(ID) + 4.0D0 / (1.0D0 + X * X)!$OMP END PARALLEL PI = 0.0D0 DO I = 0, NUM_THREADS-1 PI = PI + STEP * SUM(I) WRITE (6,*) 'PI = ',PI END PROGRAM OMP 37

39 HPC IntelIntel PentiumXeonItaniumVTune Intel Corporation * 2006 Intel Corporation J-001 JPN/0605/PDF/SE/DEG/KS

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

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

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

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

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

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション OpenMP 並列解説 1 人が共同作業を行うわけ 田植えの例 重いものを持ち上げる 田おこし 代かき 苗の準備 植付 共同作業する理由 1. 短時間で作業を行うため 2. 一人ではできない作業を行うため 3. 得意分野が異なる人が協力し合うため ポイント 1. 全員が最大限働く 2. タイミングよく 3. 作業順序に注意 4. オーバーヘッドをなくす 2 倍率 効率 並列化率と並列加速率 並列化効率の関係

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

The 3 key challenges in programming for MC

The 3 key challenges in programming for MC コンパイラーによる並列化機能 ソフトウェア & ソリューションズ統括部 ソフトウェア製品部 Rev 12/26/2006 コースの内容 並列計算 なぜ使用するのか? OpenMP* 入門 宣言子と使用方法 演習 : Hello world と円周率の計算 並列プログラミング : ヒントとテクニック コード開発で避けるべきこと 2 並列計算なぜ並列処理を使用するのか? 計算をより短い時間で処理 一定の所要時間でより大きな計算を処理

More information

OpenMPプログラミング

OpenMPプログラミング OpenMP プログラミング入門 (Part 2) 講習の内容 :Part 2 OpenMP の概要について OpenMP API のご紹介 1. 並列実行領域 (Parallel Regions) 構文 2. ワークシェアリング (Worksharing) 構文 3. データ環境 (Data Environment) 構文 4. 同期 (Synchronization) 構文 5. 実行時関数 /

More information

コードのチューニング

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

More information

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

並列プログラミング入門(OpenMP編) 登録施設利用促進機関 / 文科省委託事業 HPCI の運営 代表機関一般財団法人高度情報科学技術研究機構 (RIST) 1 並列プログラミング入門 (OpenMP 編 ) 2019 年 1 月 17 日 高度情報科学技術研究機構 (RIST) 山本秀喜 RIST 主催の講習会等 2 HPC プログラミングセミナー 一般 初心者向け : チューニング 並列化 (OpenMP MPI) 京 初中級者向け講習会

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

2. OpenMP におけるキーワード一覧 OpenMP の全体像を理解するために 指示文 指示節 実行時ライブラリ関数 環境変数にそれぞれどうようなものがあるのかを最初に示します 各詳細については第 4 章以降で説明します 2.1 OpenMP の指示文 OpenMPの指示文は プログラム内で並列

2. OpenMP におけるキーワード一覧 OpenMP の全体像を理解するために 指示文 指示節 実行時ライブラリ関数 環境変数にそれぞれどうようなものがあるのかを最初に示します 各詳細については第 4 章以降で説明します 2.1 OpenMP の指示文 OpenMPの指示文は プログラム内で並列 C 言語による OpenMP 入門 東京大学情報基盤センタープログラミング講習会資料 担当黒田久泰 1. はじめに OpenMP は非営利団体 OpenMP Architecture Review Board(ARB) によって規定されている業界標準規格です 共有メモリ型並列計算機用のプログラムの並列化を記述するための指示文 ライブラリ関数 環境変数などが規定されています OpenMP を利用するには

More information

OpenMP 3.0 C/C++ 構文の概要

OpenMP 3.0 C/C++ 構文の概要 OpenMP 3.0 C/C++ 構文の概要 OpenMP API 仕様については www.openmp.org でダウンロードしてください OpenMP 実行宣言子は 後続の構造化ブロックや OpenMP 構文に適用されます 構造化ブロック () とは 単文または先頭に入口が 1 つ 末尾に出口が 1 つの複合文です parallel 構文はスレッドのチームを形成し 並列実行を開始します #pragma

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

(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

Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, California 95054, U.S.A. All rights reserved. U.S. Government Rights - Commer

Copyright 2004 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, California 95054, U.S.A. All rights reserved. U.S. Government Rights - Commer OpenMP API ユーザーズガイド Sun TM Studio 8 Sun Microsystems, Inc. 4150 Network Circle Santa Clara, CA 95054 U.S.A. 650-960-1300 Part No. 817-5813-10 2004 年 3 月, Revision A Copyright 2004 Sun Microsystems, Inc.,

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

Intel® Compilers Professional Editions

Intel® Compilers Professional Editions 2007 6 10.0 * 10.0 6 5 Software &Solutions group 10.0 (SV) C++ Fortran OpenMP* OpenMP API / : 200 C/C++ Fortran : OpenMP : : : $ cat -n main.cpp 1 #include 2 int foo(const char *); 3 int main()

More information

C

C C 1 2 1.1........................... 2 1.2........................ 2 1.3 make................................................ 3 1.4....................................... 5 1.4.1 strip................................................

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

演習1: 演習準備

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

More information

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

ÊÂÎó·×»»¤È¤Ï/OpenMP¤Î½éÊâ¡Ê£±¡Ë 2015 5 21 OpenMP Hello World Do (omp do) Fortran (omp workshare) CPU Richardson s Forecast Factory 64,000 L.F. Richardson, Weather Prediction by Numerical Process, Cambridge, University Press (1922) Drawing

More information

untitled

untitled OpenMP (Message Passing) (shared memory) DSMon MPI,PVM pthread, solaris thread, NT thread OpenMP annotation thread HPF annotation, distribution hint Fancy parallel programming languages for(i=0;i

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

(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

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

スライド 1

スライド 1 High Performance and Productivity 並列プログラミング課題と挑戦 HPC システムの利用の拡大の背景 シュミレーションへの要求 より複雑な問題をより精度良くシュミレーションすることが求められている HPC システムでの並列処理の要求の拡大 1. モデル アルゴリズム 解析対象は何れもより複雑で 規模の大きなものになっている 2. マイクロプロセッサのマルチコア化 3.

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

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

040312研究会HPC2500.ppt

040312研究会HPC2500.ppt 2004312 e-mail : m-aoki@jp.fujitsu.com 1 2 PRIMEPOWER VX/VPP300 VPP700 GP7000 AP3000 VPP5000 PRIMEPOWER 2000 PRIMEPOWER HPC2500 1998 1999 2000 2001 2002 2003 3 VPP5000 PRIMEPOWER ( 1 VU 9.6 GF 16GB 1 VU

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

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

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

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

インテル(R) Visual Fortran Composer XE

インテル(R) Visual Fortran Composer XE Visual Fortran Composer XE 1. 2. 3. 4. 5. Visual Studio 6. Visual Studio 7. 8. Compaq Visual Fortran 9. Visual Studio 10. 2 https://registrationcenter.intel.com/regcenter/ w_fcompxe_all_jp_2013_sp1.1.139.exe

More information

1F90/kouhou_hf90.dvi

1F90/kouhou_hf90.dvi Fortran90 3 33 1 2 Fortran90 FORTRAN 1956 IBM IBM704 FORTRAN(FORmula TRANslation ) 1965 FORTRAN66 1978 FORTRAN77 1991 Fortran90 Fortran90 Fortran Fortran90 6 Fortran90 77 90 90 Fortran90 [ ] Fortran90

More information

2 /83

2 /83 1 /83 2 /83 3 /83, 4 /83 ( ) myrank ), FX10, Blue Gene, Anton : MPI. : ( ). MPICH, OpenMPI ( ) MPI 1 MPI NIC memory CPU 0 (myrank=0) 5 nprocs=2 /83 NIC memory CPU 1 (myrank=1) 6 /83 hello_mpi.f: include

More information

Microsoft PowerPoint - 阪大CMSI pptx

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

More information

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

プラズマ核融合学会誌5月号【81-5】/内外情報_ソフト【注:欧フォント特殊!】 PROGRAM PLOTDATA USE NUM_KINDS, ONLY : wp=>dp, i4b USE MYLIB, ONLY : GET_SIZE, GET_DATA INTEGER(i4b) :: ntime, nx REAL(wp), ALLOCATABLE :: time(:), x(:), Temp(:,:) Fortran Temp, temp, TEMP temporal REAL(wp)

More information

MPI usage

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

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

11042 計算機言語7回目 サポートページ:

11042 計算機言語7回目  サポートページ: 11042 7 :https://goo.gl/678wgm November 27, 2017 10/2 1(print, ) 10/16 2(2, ) 10/23 (3 ) 10/31( ),11/6 (4 ) 11/13,, 1 (5 6 ) 11/20,, 2 (5 6 ) 11/27 (7 12/4 (9 ) 12/11 1 (10 ) 12/18 2 (10 ) 12/25 3 (11

More information

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

フカシギおねえさん問題の高速計算アルゴリズム JST ERATO 2013/7/26 Joint work with 1 / 37 1 2 3 4 5 6 2 / 37 1 2 3 4 5 6 3 / 37 : 4 / 37 9 9 6 10 10 25 5 / 37 9 9 6 10 10 25 Bousquet-Mélou (2005) 19 19 3 1GHz Alpha 8 Iwashita (Sep 2012) 21 21 3 2.67GHz

More information

NUMAの構成

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

More information

OpenMP の概要

OpenMP の概要 OpenMP プログラミング ワークショップ 平成 13 年 3 月 22 日 日本 SGI 株式会社製品技術本部スケーラブルシステムテクノロジーセンター芦澤芳夫 OpenMP の概要 共有メモリ型並列化 API の必要性 標準化による利点 利用者 異機種間の移行が容易 ソフトウェアベンダ 移植性 保守性 品質向上 API の標準化が遅れた理由 各ベンダが独自の API を提案 同様の機能を各社各様の指示行で実現

More information

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(

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( Fortran90/95 4.1 1. n n = 5 x1,x2,x3,,x4,x5 5 average = ( x1 + x2 + x3 + x4 + x5 )/5.0 n n x (subscript) x 1 x 2 average = 1 n n x i i=1 Fortran ( ) x(1) x(2) x(n) Fortran ( ) average = sum(x(1:n))/real(n)

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

卒業論文

卒業論文 PC OpenMP SCore PC OpenMP PC PC PC Myrinet PC PC 1 OpenMP 2 1 3 3 PC 8 OpenMP 11 15 15 16 16 18 19 19 19 20 20 21 21 23 26 29 30 31 32 33 4 5 6 7 SCore 9 PC 10 OpenMP 14 16 17 10 17 11 19 12 19 13 20 1421

More information

Excel97関数編

Excel97関数編 Excel97 SUM Microsoft Excel 97... 1... 1... 1... 2... 3... 3... 4... 5... 6... 6... 7 SUM... 8... 11 Microsoft Excel 97 AVERAGE MIN MAX SUM IF 2 RANK TODAY ROUND COUNT INT VLOOKUP 1/15 Excel A B C A B

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

コンピュータ概論

コンピュータ概論 4.1 For Check Point 1. For 2. 4.1.1 For (For) For = To Step (Next) 4.1.1 Next 4.1.1 4.1.2 1 i 10 For Next Cells(i,1) Cells(1, 1) Cells(2, 1) Cells(10, 1) 4.1.2 50 1. 2 1 10 3. 0 360 10 sin() 4.1.2 For

More information

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

¥Ñ¥Ã¥±¡¼¥¸ Rhpc ¤Î¾õ¶· Rhpc COM-ONE 2015 R 27 12 5 1 / 29 1 2 Rhpc 3 forign MPI 4 Windows 5 2 / 29 1 2 Rhpc 3 forign MPI 4 Windows 5 3 / 29 Rhpc, R HPC Rhpc, ( ), snow..., Rhpc worker call Rhpc lapply 4 / 29 1 2 Rhpc 3 forign

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

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

スパコンに通じる並列プログラミングの基礎 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

XMPによる並列化実装2

XMPによる並列化実装2 2 3 C Fortran Exercise 1 Exercise 2 Serial init.c init.f90 XMP xmp_init.c xmp_init.f90 Serial laplace.c laplace.f90 XMP xmp_laplace.c xmp_laplace.f90 #include int a[10]; program init integer

More information

n 第1章 章立ての部分は、書式(PC入門大見出し)を使います

n 第1章 章立ての部分は、書式(PC入門大見出し)を使います FORTRAN FORTRAN FORTRAN ) DO DO IF IF FORTRAN FORTRAN(FORmula TRANslator)1956 IBM FORTRAN IV FORTRAN77 Fortran90 FORTRAN77 FORTRAN FORTARN IF, DO C UNIX FORTRAN PASCAL COBOL PL/I BASIC Lisp PROLOG Lisp

More information

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

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 I 2017 11 1 SageMath SageMath( Sage ) Sage Python Sage Python Sage Maxima Maxima Sage Sage Sage Linux, Mac, Windows *1 2 Sage Sage 4 1. ( sage CUI) 2. Sage ( sage.sage ) 3. Sage ( notebook() ) 4. Sage

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

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

C/C++ FORTRAN FORTRAN MPI MPI MPI UNIX Windows (SIMD Single Instruction Multipule Data) SMP(Symmetric Multi Processor) MPI (thread) OpenMP[5] MPI ( ) snozawa@env.sci.ibaraki.ac.jp 1 ( ) MPI MPI Message Passing Interface[2] MPI MPICH[3],LAM/MPI[4] (MIMDMultiple Instruction Multipule Data) Message Passing ( ) (MPI (rank) PE(Processing Element)

More information

インテル(R) C++ Composer XE 2011 Windows版 入門ガイド

インテル(R) C++ Composer XE 2011 Windows版 入門ガイド C++ Composer XE 2011 Windows* エクセルソフト株式会社 www.xlsoft.com Rev. 1.2 (2011/05/03) Copyright 1998-2011 XLsoft Corporation. All Rights Reserved. 1 / 70 ... 4... 5... 6... 8 /... 8... 10 /... 11... 11 /... 13

More information

AJAN IO制御コマンド コマンドリファレンス

AJAN IO制御コマンド コマンドリファレンス - 1 - Interface Corporation 1 3 2 4 2.1...4 2.2...8 2.3...9 2.4...19 2.5...20 3 21 3.1...21 3.2...23 3.3...24 3.4...28 3.5...29 30 31 Interface Corporation - 2 - 1 AJANI/O Linux Web site GPG-2000 http://www.interface.co.jp/catalog/soft/prdc_soft_all.asp?name=gpg-2000

More information

¥×¥í¥°¥é¥ß¥ó¥°±é½¬I Exercise on Programming I [1zh] ` `%%%`#`&12_`__~~~ alse

¥×¥í¥°¥é¥ß¥ó¥°±é½¬I  Exercise on Programming I [1zh] ` `%%%`#`&12_`__~~~alse I Exercise on Programming I http://bit.ly/oitprog1 1, 2 of 14 ( RD S ) I 1, 2 of 14 1 / 44 Ruby Ruby ( RD S ) I 1, 2 of 14 2 / 44 7 5 9 2 9 3 3 2 6 5 1 3 2 5 6 4 7 8 4 5 2 7 9 6 4 7 1 3 ( RD S ) I 1, 2

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

I

I I 1 2016.07.21 MPI OpenMP 84 1344 gnuplot Xming Tera term cp -r /tmp/160721 chmod 0 L x L y 0 k T (x, t) k: T t = k 2 T x 2 T t = s s : heat source 1D T (x, t) t = k 2 T (x, t) x 2 + s(x) 2D T (x,

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

Java updated

Java updated Java 2003.07.14 updated 3 1 Java 5 1.1 Java................................. 5 1.2 Java..................................... 5 1.3 Java................................ 6 1.3.1 Java.......................

More information

Microsoft PowerPoint - sales2.ppt

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

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

PBASIC 2.5 PBASIC 2.5 $PBASIC directive PIN type New DEBUG control characters DEBUGIN Line continuation for comma-delimited lists IF THEN ELSE * SELEC

PBASIC 2.5 PBASIC 2.5 $PBASIC directive PIN type New DEBUG control characters DEBUGIN Line continuation for comma-delimited lists IF THEN ELSE * SELEC PBASIC 2.5 PBASIC 2.5 BASIC Stamp Editor / Development System Version 2.0 Beta Release 2 2.0 PBASIC BASIC StampR PBASIC PBASIC PBASIC 2.5 Parallax, Inc. PBASIC 2.5 PBASIC 2.5 support@microbot-ed.com 1

More information

hotspot の特定と最適化

hotspot の特定と最適化 1 1? 1 1 2 1. hotspot : hotspot hotspot Parallel Amplifier 1? 2. hotspot : (1 ) Parallel Composer 1 Microsoft* Ticker Tape Smoke 1.0 PiSolver 66 / 64 / 2.76 ** 84 / 27% ** 75 / 17% ** 1.46 89% Microsoft*

More information

生物情報実験法 (オンライン, 4/20)

生物情報実験法 (オンライン, 4/20) 生物情報実験法 (7/23) 笠原雅弘 (mkasa@cb.k.u-tokyo.ac.jp) Table of Contents スレッドの使い方 OpenMP プログラミング Deadline The deadline is Aug 5 23:59 Your e-mail must have reached my e-mail box at the deadline time. It may take

More information

(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

(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 2007/5/14 II II agata@k.u-tokyo.a.jp 0. 1. x i x i 1 x i x i x i x x+dx f(x)dx f(x) f(x) + 0 f ( x) dx = 1 (Probability Density Funtion 2 ) (normal distribution) 3 1 2 2 ( x m) / 2σ f ( x) = e 2πσ x m

More information

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

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 Sakurai-Sugiura z-pares 26 9 5 1 1 2 2 2.1 Mac OS CPU......................................... 2 2.2 Linux MPI............................................ 2 3 3 4 6 4.1 MUMPS....................................

More information

main.dvi

main.dvi 20 II 7. 1 409, 3255 e-mail: namba@faculty.chiba-u.jp 2 1 1 1 4 2 203 2 1 1 1 5 503 1 3 1 2 2 Web http://www.icsd2.tj.chiba-u.jp/~namba/lecture/ 1 2 1 5 501 1,, \,", 2000 7. : 1 1 CPU CPU 1 Intel Pentium

More information

untitled

untitled I 9 MPI (II) 2012 6 14 .. MPI. 1-3 sum100.f90 4 istart=myrank*25+1 iend=(myrank+1)*25 0 1 2 3 mpi_recv 3 isum1 1 isum /tmp/120614/sum100_4.f90 program sum100_4 use mpi implicit none integer :: i,istart,iend,isum,isum1,ip

More information

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

. (.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( 3 8. (.8.)............................................................................................3.............................................4 Nermark β..........................................

More information

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

~~~~~~~~~~~~~~~~~~ wait Call CPU time 1, latch: library cache 7, latch: library cache lock 4, job scheduler co 072 DB Magazine 2007 September ~~~~~~~~~~~~~~~~~~ wait Call CPU time 1,055 34.7 latch: library cache 7,278 750 103 24.7 latch: library cache lock 4,194 465 111 15.3 job scheduler coordinator slave wait

More information

Pentium 4

Pentium 4 Pentium 4 Pentium 4... 2... 2... 2... 3... 3... 3... 3... 4 TMPGEnc Plus2.5 Ver.2.59... 5... 8... 9... 9 VTune TM... 9 C++/Fortran... 9 1 Pentium 4 HT Xeon TM Pentium 4 3.06GHz HT Pentium 4 NetBurst TM

More information

Microsoft Word - w_mkl_build_howto.doc

Microsoft Word - w_mkl_build_howto.doc MKL 10.0 2007/12/18 XLsoft - 2 - 1....- 4-2. MKL...- 4-3....- 5-3-1....- 5-3-1-1. Microsoft Visual C++ 2005...- 5-3-1-2. C/C++...- 9-3-1-3. Fortran...- 11-3-2. Microsoft Visual Studio...- 13-3-2-1. Microsoft

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

syspro-0405.ppt

syspro-0405.ppt 3 4, 5 1 UNIX csh 2.1 bash X Window 2 grep l POSIX * more POSIX 3 UNIX. 4 first.sh #!bin/sh #first.sh #This file looks through all the files in the current #directory for the string yamada, and then prints

More information

C言語によるアルゴリズムとデータ構造

C言語によるアルゴリズムとデータ構造 Algorithms and Data Structures in C 4 algorithm List - /* */ #include List - int main(void) { int a, b, c; int max; /* */ Ÿ 3Ÿ 2Ÿ 3 printf(""); printf(""); printf(""); scanf("%d", &a); scanf("%d",

More information

listings-ext

listings-ext (6) Python (2) ( ) ohsaki@kwansei.ac.jp 5 Python (2) 1 5.1 (statement)........................... 1 5.2 (scope)......................... 11 5.3 (subroutine).................... 14 5 Python (2) Python 5.1

More information

内容 イントロダクション スカラチューニング OpenMPによる並列化 最近のHPC分野の動向 まとめ

内容 イントロダクション スカラチューニング OpenMPによる並列化 最近のHPC分野の動向 まとめ スカラチューニングと OpenMPによるコードの高速化 松本洋介 千葉大学 謝辞 C言語への対応 簑島敬 JAMSTEC 宇宙磁気流体 プラズマシミュレーションサマースクール 2013年8月6日 千葉大学統合情報センター 内容 イントロダクション スカラチューニング OpenMPによる並列化 最近のHPC分野の動向 まとめ イントロダクション CPUの作り \ Fujitsu SPARC64TM VIIIfx

More information

all.dvi

all.dvi fortran 1996 4 18 2007 6 11 2012 11 12 1 3 1.1..................................... 3 1.2.............................. 3 2 fortran I 5 2.1 write................................ 5 2.2.................................

More information

PowerPoint Presentation

PowerPoint Presentation AI Programming data mining ( Plug in Weka to Eclipse) Review of Identification Tree Run bouncing ball in Weka Run bouncing ball in Eclipse How about color? weight? rubber? Please write down their formulae.

More information

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

Fortran90/95 [9]! (1 )   5 Hello!! 3. (line) Fortran Fortran 1 2 * (1 ) 132 ( ) * 2 ( Fortran ) Fortran ,6 (continuation line) 1 Fortran90/95 2.1 Fortran 2-1 Hello! 1 program example2_01! end program 2! first test program ( ) 3 implicit none! 4 5 write(*,*) "Hello!"! write Hello! 6 7 stop! 8 end program example2_01 1 program 1!

More information

main.dvi

main.dvi PC 1 1 [1][2] [3][4] ( ) GPU(Graphics Processing Unit) GPU PC GPU PC ( 2 GPU ) GPU Harris Corner Detector[5] CPU ( ) ( ) CPU GPU 2 3 GPU 4 5 6 7 1 toyohiro@isc.kyutech.ac.jp 45 2 ( ) CPU ( ) ( ) () 2.1

More information

ohp1.dvi

ohp1.dvi 2008 1 2008.10.10 1 ( 2 ) ( ) ( ) 1 2 1.5 3 2 ( ) 50:50 Ruby ( ) Ruby http://www.ruby-lang.org/ja/ Windows Windows 3 Web Web http://lecture.ecc.u-tokyo.ac.jp/~kuno/is08/ / ( / ) / @@@ ( 3 ) @@@ :!! ( )

More information

ex01.dvi

ex01.dvi ,. 0. 0.0. C () /******************************* * $Id: ex_0_0.c,v.2 2006-04-0 3:37:00+09 naito Exp $ * * 0. 0.0 *******************************/ #include int main(int argc, char **argv) double

More information

tutorial_lc.dvi

tutorial_lc.dvi 00 Linux v.s. RT Linux v.s. ART-Linux Linux RT-Linux ART-Linux Linux kumagai@emura.mech.tohoku.ac.jp 1 1.1 Linux Yes, No.,. OS., Yes. Linux,.,, Linux., Linux.,, Linux. Linux.,,. Linux,.,, 0..,. RT-Linux

More information

Pascal Pascal Free Pascal CPad for Pascal Microsoft Windows OS Pascal

Pascal Pascal Free Pascal CPad for Pascal Microsoft Windows OS Pascal Pascal Pascal Pascal Free Pascal CPad for Pascal Microsoft Windows OS 2010 10 1 Pascal 2 1.1.......................... 2 1.2.................. 2 1.3........................ 3 2 4 2.1................................

More information

MPI MPI MPI.NET C# MPI Version2

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

More information

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

Compiled MODELSでのDFT位相検出装置のモデル化と評価 listsize TPBIG.EXE /Mingw32 ATP (Alternative Transients Program)- EMTP ATP ATP ATP ATP(TPBIG.EXE) EMTP (ATP)FORTAN77 DIMENSION C malloc listsize TACS DIMENSIONEMTP ATP(TPBIG.EXE) listsize (CPU ) RL 4040

More information

Microsoft PowerPoint _MPI-03.pptx

Microsoft PowerPoint _MPI-03.pptx 計算科学演習 Ⅰ ( 第 11 回 ) MPI を いた並列計算 (III) 神戸大学大学院システム情報学研究科横川三津夫 yokokawa@port.kobe-u.ac.jp 2014/07/03 計算科学演習 Ⅰ:MPI を用いた並列計算 (III) 1 2014/07/03 計算科学演習 Ⅰ:MPI を用いた並列計算 (III) 2 今週の講義の概要 1. 前回課題の解説 2. 部分配列とローカルインデックス

More information

次世代スーパーコンピュータのシステム構成案について

次世代スーパーコンピュータのシステム構成案について 6 19 4 27 1. 2. 3. 3.1 3.2 A 3.3 B 4. 5. 2007/4/27 4 1 1. 2007/4/27 4 2 NEC NHF2 18 9 19 19 2 28 10PFLOPS2.5PB 30MW 3,200 18 12 12 SimFold, GAMESS, Modylas, RSDFT, NICAM, LatticeQCD, LANS HPL, NPB-FT 19

More information

< 中略 > 24 0 NNE 次に 指定した日時の時間降水量と気温を 観測地点の一覧表に載っているすべての地点について出力するプログラムを作成してみます 観測地点の一覧表は index.txt というファイルで与えられています このファイルを読みこむためのサブルーチンが AMD

< 中略 > 24 0 NNE 次に 指定した日時の時間降水量と気温を 観測地点の一覧表に載っているすべての地点について出力するプログラムを作成してみます 観測地点の一覧表は index.txt というファイルで与えられています このファイルを読みこむためのサブルーチンが AMD 地上気象観測データの解析 1 AMeDAS データの解析 研究を進めるにあたって データ解析用のプログラムを自分で作成する必要が生じることがあります ここでは 自分で FORTRAN または C でプログラムを作成し CD-ROM に入った気象観測データ ( 気象庁による AMeDAS の観測データ ) を読みこんで解析します データを読みこむためのサブルーチンや関数はあらかじめ作成してあります それらのサブルーチンや関数を使って自分でプログラムを書いてデータを解析していきます

More information

Platypus-QM β ( )

Platypus-QM β ( ) Platypus-QM β (2012.11.12) 1 1 1.1...................................... 1 1.1.1...................................... 1 1.1.2................................... 1 1.1.3..........................................

More information

Microsoft Word - Meta70_Preferences.doc

Microsoft Word - Meta70_Preferences.doc Image Windows Preferences Edit, Preferences MetaMorph, MetaVue Image Windows Preferences Edit, Preferences Image Windows Preferences 1. Windows Image Placement: Acquire Overlay at Top Left Corner: 1 Acquire

More information