170
H. Sakagami
45 do iz = 1, lz
46 do iy = 1, ly
47 do ix = 1, lx
48
ram = max( ram, ... )
Listing 3 Typical XMP programs using the global-view programming model for all of X, Y, and
Z domain decomposition method
1 integer parameter :: lx=..., ly=..., lz=...
2 integer parameter :: nx=..., ny=..., nz=...
3 !$XMP NODES proc(nx,ny,nz)
4 !$XMP TEMPLATE t(lx,ly,lz)
5 !$XMP DISTRIBUTE t(BLOCK,BLOCK,BLOCK) ONTO proc
6 real * 8 :: physval(6,lx,ly,lz)
7 real * 8 :: ram
8 !$XMP ALIGN ( * ,i,j,k) WITH t(i,j,k) :: physval
9 !$XMP SHADOW (0,1,1,1) :: physval
10 ...
11 !$XMP REFLECT (physval) width(0,1,0,0)
12 !$XMP LOOP (ix,iy,iz) ON t(ix,iy,iz)
13 !$OMP PARALLEL DO PRIVATE(iy,ix)
14 do iz = 1, lz
15 do iy = 1, ly
16 do ix = 2, lx-1
17
...
18
physval(..,ix,iy,iz) = ... &
19
physval(..,ix-1,iy,iz) ... physval(..,ix+1,iy,iz)
20
...
21 ...
22 !$XMP REFLECT (physval) width(0,0,1,0)
23 !$XMP LOOP (ix,iy,iz) ON t(ix,iy,iz)
24 !$OMP PARALLEL DO PRIVATE(iy,ix)
25 do iz = 1, lz
26 do iy = 2, ly-1
27 do ix = 1, lx
28
...
29
physval(..,ix,iy,iz) = ... &
30
physval(..,ix,iy-1,iz) ... physval(..,ix,iy+1,iz)
31
...
32 ...
33 !$XMP REFLECT (physval) width(0,0,0,1)
34 !$XMP LOOP (ix,iy,iz) ON t(ix,iy,iz)
35 !$OMP PARALLEL DO PRIVATE(iy,ix)
36 do iz = 2, lz-1
37 do iy = 1, ly
38 do ix = 1, lx
39
...
40
physval(..,ix,iy,iz) = ... &
41
physval(..,ix,iy,iz-1) ... physval(..,ix,iy,iz+1)
42
...
43 ...
44 !$XMP LOOP (ix,iy,iz) ON t(ix,iy,iz) REDUCTION(max:ram)
Précédent

- 176/265

Suivant