GCC Code Coverage Report | |||||||||||||||||||||
|
|||||||||||||||||||||
Line | Branch | Exec | Source |
1 |
! |
||
2 |
!$Header$ |
||
3 |
! |
||
4 |
MODULE mod_phys_lmdz_omp_transfert |
||
5 |
|||
6 |
PRIVATE |
||
7 |
|||
8 |
INTEGER,PARAMETER :: grow_factor=1.5 |
||
9 |
INTEGER,PARAMETER :: size_min=1024 |
||
10 |
|||
11 |
CHARACTER(LEN=size_min),SAVE :: buffer_c |
||
12 |
! INTEGER,SAVE :: size_c=0 |
||
13 |
INTEGER,SAVE,ALLOCATABLE,DIMENSION(:) :: buffer_i |
||
14 |
INTEGER,SAVE :: size_i=0 |
||
15 |
REAL,SAVE,ALLOCATABLE,DIMENSION(:) :: buffer_r |
||
16 |
INTEGER,SAVE :: size_r=0 |
||
17 |
LOGICAL,SAVE,ALLOCATABLE,DIMENSION(:) :: buffer_l |
||
18 |
INTEGER,SAVE :: size_l=0 |
||
19 |
|||
20 |
|||
21 |
|||
22 |
|||
23 |
INTERFACE bcast_omp |
||
24 |
MODULE PROCEDURE bcast_omp_c, & |
||
25 |
bcast_omp_i,bcast_omp_i1,bcast_omp_i2,bcast_omp_i3,bcast_omp_i4, & |
||
26 |
bcast_omp_r,bcast_omp_r1,bcast_omp_r2,bcast_omp_r3,bcast_omp_r4, & |
||
27 |
bcast_omp_l,bcast_omp_l1,bcast_omp_l2,bcast_omp_l3,bcast_omp_l4 |
||
28 |
END INTERFACE |
||
29 |
|||
30 |
INTERFACE scatter_omp |
||
31 |
MODULE PROCEDURE scatter_omp_i,scatter_omp_i1,scatter_omp_i2,scatter_omp_i3, & |
||
32 |
scatter_omp_r,scatter_omp_r1,scatter_omp_r2,scatter_omp_r3, & |
||
33 |
scatter_omp_l,scatter_omp_l1,scatter_omp_l2,scatter_omp_l3 |
||
34 |
END INTERFACE |
||
35 |
|||
36 |
|||
37 |
INTERFACE gather_omp |
||
38 |
MODULE PROCEDURE gather_omp_i,gather_omp_i1,gather_omp_i2,gather_omp_i3, & |
||
39 |
gather_omp_r,gather_omp_r1,gather_omp_r2,gather_omp_r3, & |
||
40 |
gather_omp_l,gather_omp_l1,gather_omp_l2,gather_omp_l3 |
||
41 |
END INTERFACE |
||
42 |
|||
43 |
|||
44 |
INTERFACE reduce_sum_omp |
||
45 |
MODULE PROCEDURE reduce_sum_omp_i,reduce_sum_omp_i1,reduce_sum_omp_i2,reduce_sum_omp_i3,reduce_sum_omp_i4, & |
||
46 |
reduce_sum_omp_r,reduce_sum_omp_r1,reduce_sum_omp_r2,reduce_sum_omp_r3,reduce_sum_omp_r4 |
||
47 |
END INTERFACE |
||
48 |
|||
49 |
INTERFACE reduce_min_omp |
||
50 |
MODULE PROCEDURE reduce_min_omp_i,reduce_min_omp_i1,reduce_min_omp_i2,reduce_min_omp_i3,reduce_min_omp_i4, & |
||
51 |
reduce_min_omp_r,reduce_min_omp_r1,reduce_min_omp_r2,reduce_min_omp_r3,reduce_min_omp_r4 |
||
52 |
END INTERFACE |
||
53 |
|||
54 |
|||
55 |
PUBLIC bcast_omp,scatter_omp,gather_omp,reduce_sum_omp, reduce_min_omp, omp_barrier |
||
56 |
|||
57 |
CONTAINS |
||
58 |
|||
59 |
SUBROUTINE omp_barrier |
||
60 |
IMPLICIT NONE |
||
61 |
|||
62 |
!$OMP BARRIER |
||
63 |
|||
64 |
END SUBROUTINE omp_barrier |
||
65 |
|||
66 |
1058 |
SUBROUTINE check_buffer_i(buff_size) |
|
67 |
IMPLICIT NONE |
||
68 |
INTEGER :: buff_size |
||
69 |
|||
70 |
!$OMP BARRIER |
||
71 |
!$OMP MASTER |
||
72 |
✓✓ | 1058 |
IF (buff_size>size_i) THEN |
73 |
✗✓ | 1 |
IF (ALLOCATED(buffer_i)) DEALLOCATE(buffer_i) |
74 |
1 |
size_i=MAX(size_min,INT(grow_factor*buff_size)) |
|
75 |
✗✓✗✓ |
1 |
ALLOCATE(buffer_i(size_i)) |
76 |
ENDIF |
||
77 |
!$OMP END MASTER |
||
78 |
!$OMP BARRIER |
||
79 |
|||
80 |
1058 |
END SUBROUTINE check_buffer_i |
|
81 |
|||
82 |
748 |
SUBROUTINE check_buffer_r(buff_size) |
|
83 |
IMPLICIT NONE |
||
84 |
INTEGER :: buff_size |
||
85 |
|||
86 |
!$OMP BARRIER |
||
87 |
!$OMP MASTER |
||
88 |
✓✓ | 748 |
IF (buff_size>size_r) THEN |
89 |
✓✓ | 3 |
IF (ALLOCATED(buffer_r)) DEALLOCATE(buffer_r) |
90 |
3 |
size_r=MAX(size_min,INT(grow_factor*buff_size)) |
|
91 |
✗✓✗✓ |
3 |
ALLOCATE(buffer_r(size_r)) |
92 |
ENDIF |
||
93 |
!$OMP END MASTER |
||
94 |
!$OMP BARRIER |
||
95 |
|||
96 |
748 |
END SUBROUTINE check_buffer_r |
|
97 |
|||
98 |
3966 |
SUBROUTINE check_buffer_l(buff_size) |
|
99 |
IMPLICIT NONE |
||
100 |
INTEGER :: buff_size |
||
101 |
|||
102 |
!$OMP BARRIER |
||
103 |
!$OMP MASTER |
||
104 |
✓✓ | 3966 |
IF (buff_size>size_l) THEN |
105 |
✗✓ | 1 |
IF (ALLOCATED(buffer_l)) DEALLOCATE(buffer_l) |
106 |
1 |
size_l=MAX(size_min,INT(grow_factor*buff_size)) |
|
107 |
✗✓✗✓ |
1 |
ALLOCATE(buffer_l(size_l)) |
108 |
ENDIF |
||
109 |
!$OMP END MASTER |
||
110 |
!$OMP BARRIER |
||
111 |
|||
112 |
3966 |
END SUBROUTINE check_buffer_l |
|
113 |
|||
114 |
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
||
115 |
!! Definition des Broadcast --> 4D !! |
||
116 |
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
||
117 |
|||
118 |
!! -- Les chaine de charact�re -- !! |
||
119 |
|||
120 |
3 |
SUBROUTINE bcast_omp_c(var) |
|
121 |
IMPLICIT NONE |
||
122 |
CHARACTER(LEN=*),INTENT(INOUT) :: Var |
||
123 |
|||
124 |
3 |
CALL bcast_omp_cgen(Var,len(Var),buffer_c) |
|
125 |
|||
126 |
3 |
END SUBROUTINE bcast_omp_c |
|
127 |
|||
128 |
!! -- Les entiers -- !! |
||
129 |
|||
130 |
487 |
SUBROUTINE bcast_omp_i(var) |
|
131 |
IMPLICIT NONE |
||
132 |
INTEGER,INTENT(INOUT) :: Var |
||
133 |
INTEGER :: Var_tmp(1) |
||
134 |
|||
135 |
487 |
Var_tmp(1)=Var |
|
136 |
487 |
CALL check_buffer_i(1) |
|
137 |
487 |
CALL bcast_omp_igen(Var_tmp,1,buffer_i) |
|
138 |
487 |
Var=Var_tmp(1) |
|
139 |
|||
140 |
487 |
END SUBROUTINE bcast_omp_i |
|
141 |
|||
142 |
|||
143 |
SUBROUTINE bcast_omp_i1(var) |
||
144 |
IMPLICIT NONE |
||
145 |
INTEGER,INTENT(INOUT) :: Var(:) |
||
146 |
|||
147 |
CALL check_buffer_i(size(Var)) |
||
148 |
CALL bcast_omp_igen(Var,size(Var),buffer_i) |
||
149 |
|||
150 |
END SUBROUTINE bcast_omp_i1 |
||
151 |
|||
152 |
|||
153 |
SUBROUTINE bcast_omp_i2(var) |
||
154 |
IMPLICIT NONE |
||
155 |
INTEGER,INTENT(INOUT) :: Var(:,:) |
||
156 |
|||
157 |
CALL check_buffer_i(size(Var)) |
||
158 |
CALL bcast_omp_igen(Var,size(Var),buffer_i) |
||
159 |
|||
160 |
END SUBROUTINE bcast_omp_i2 |
||
161 |
|||
162 |
|||
163 |
SUBROUTINE bcast_omp_i3(var) |
||
164 |
IMPLICIT NONE |
||
165 |
INTEGER,INTENT(INOUT) :: Var(:,:,:) |
||
166 |
|||
167 |
CALL check_buffer_i(size(Var)) |
||
168 |
CALL bcast_omp_igen(Var,size(Var),buffer_i) |
||
169 |
|||
170 |
END SUBROUTINE bcast_omp_i3 |
||
171 |
|||
172 |
|||
173 |
SUBROUTINE bcast_omp_i4(var) |
||
174 |
IMPLICIT NONE |
||
175 |
INTEGER,INTENT(INOUT) :: Var(:,:,:,:) |
||
176 |
|||
177 |
CALL check_buffer_i(size(Var)) |
||
178 |
CALL bcast_omp_igen(Var,size(Var),buffer_i) |
||
179 |
|||
180 |
END SUBROUTINE bcast_omp_i4 |
||
181 |
|||
182 |
|||
183 |
!! -- Les reels -- !! |
||
184 |
|||
185 |
384 |
SUBROUTINE bcast_omp_r(var) |
|
186 |
IMPLICIT NONE |
||
187 |
REAL,INTENT(INOUT) :: Var |
||
188 |
REAL :: Var_tmp(1) |
||
189 |
|||
190 |
384 |
Var_tmp(1)=Var |
|
191 |
384 |
CALL check_buffer_r(1) |
|
192 |
384 |
CALL bcast_omp_rgen(Var_tmp,1,buffer_r) |
|
193 |
384 |
Var=Var_tmp(1) |
|
194 |
|||
195 |
384 |
END SUBROUTINE bcast_omp_r |
|
196 |
|||
197 |
|||
198 |
✗✓ | 5 |
SUBROUTINE bcast_omp_r1(var) |
199 |
IMPLICIT NONE |
||
200 |
REAL,INTENT(INOUT) :: Var(:) |
||
201 |
|||
202 |
5 |
CALL check_buffer_r(size(Var)) |
|
203 |
✗✓ | 10 |
CALL bcast_omp_rgen(Var,size(Var),buffer_r) |
204 |
|||
205 |
5 |
END SUBROUTINE bcast_omp_r1 |
|
206 |
|||
207 |
|||
208 |
SUBROUTINE bcast_omp_r2(var) |
||
209 |
IMPLICIT NONE |
||
210 |
REAL,INTENT(INOUT) :: Var(:,:) |
||
211 |
|||
212 |
CALL check_buffer_r(size(Var)) |
||
213 |
CALL bcast_omp_rgen(Var,size(Var),buffer_r) |
||
214 |
|||
215 |
END SUBROUTINE bcast_omp_r2 |
||
216 |
|||
217 |
|||
218 |
SUBROUTINE bcast_omp_r3(var) |
||
219 |
IMPLICIT NONE |
||
220 |
REAL,INTENT(INOUT) :: Var(:,:,:) |
||
221 |
|||
222 |
CALL check_buffer_r(size(Var)) |
||
223 |
CALL bcast_omp_rgen(Var,size(Var),buffer_r) |
||
224 |
|||
225 |
END SUBROUTINE bcast_omp_r3 |
||
226 |
|||
227 |
|||
228 |
SUBROUTINE bcast_omp_r4(var) |
||
229 |
IMPLICIT NONE |
||
230 |
REAL,INTENT(INOUT) :: Var(:,:,:,:) |
||
231 |
|||
232 |
CALL check_buffer_r(size(Var)) |
||
233 |
CALL bcast_omp_rgen(Var,size(Var),buffer_r) |
||
234 |
|||
235 |
END SUBROUTINE bcast_omp_r4 |
||
236 |
|||
237 |
|||
238 |
!! -- Les booleans -- !! |
||
239 |
|||
240 |
3966 |
SUBROUTINE bcast_omp_l(var) |
|
241 |
IMPLICIT NONE |
||
242 |
LOGICAL,INTENT(INOUT) :: Var |
||
243 |
LOGICAL :: Var_tmp(1) |
||
244 |
|||
245 |
3966 |
Var_tmp(1)=Var |
|
246 |
3966 |
CALL check_buffer_l(1) |
|
247 |
3966 |
CALL bcast_omp_lgen(Var_tmp,1,buffer_l) |
|
248 |
3966 |
Var=Var_tmp(1) |
|
249 |
|||
250 |
3966 |
END SUBROUTINE bcast_omp_l |
|
251 |
|||
252 |
|||
253 |
SUBROUTINE bcast_omp_l1(var) |
||
254 |
IMPLICIT NONE |
||
255 |
LOGICAL,INTENT(INOUT) :: Var(:) |
||
256 |
|||
257 |
CALL check_buffer_l(size(Var)) |
||
258 |
CALL bcast_omp_lgen(Var,size(Var),buffer_l) |
||
259 |
|||
260 |
END SUBROUTINE bcast_omp_l1 |
||
261 |
|||
262 |
|||
263 |
SUBROUTINE bcast_omp_l2(var) |
||
264 |
IMPLICIT NONE |
||
265 |
LOGICAL,INTENT(INOUT) :: Var(:,:) |
||
266 |
|||
267 |
CALL check_buffer_l(size(Var)) |
||
268 |
CALL bcast_omp_lgen(Var,size(Var),buffer_l) |
||
269 |
|||
270 |
END SUBROUTINE bcast_omp_l2 |
||
271 |
|||
272 |
|||
273 |
SUBROUTINE bcast_omp_l3(var) |
||
274 |
IMPLICIT NONE |
||
275 |
LOGICAL,INTENT(INOUT) :: Var(:,:,:) |
||
276 |
|||
277 |
CALL check_buffer_l(size(Var)) |
||
278 |
CALL bcast_omp_lgen(Var,size(Var),buffer_l) |
||
279 |
|||
280 |
END SUBROUTINE bcast_omp_l3 |
||
281 |
|||
282 |
|||
283 |
SUBROUTINE bcast_omp_l4(var) |
||
284 |
IMPLICIT NONE |
||
285 |
LOGICAL,INTENT(INOUT) :: Var(:,:,:,:) |
||
286 |
|||
287 |
CALL check_buffer_l(size(Var)) |
||
288 |
CALL bcast_omp_lgen(Var,size(Var),buffer_l) |
||
289 |
|||
290 |
END SUBROUTINE bcast_omp_l4 |
||
291 |
|||
292 |
|||
293 |
|||
294 |
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
||
295 |
!! Definition des Scatter --> 4D !! |
||
296 |
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
||
297 |
|||
298 |
SUBROUTINE scatter_omp_i(VarIn, VarOut) |
||
299 |
IMPLICIT NONE |
||
300 |
|||
301 |
INTEGER,INTENT(IN),DIMENSION(:) :: VarIn |
||
302 |
INTEGER,INTENT(OUT),DIMENSION(:) :: VarOut |
||
303 |
|||
304 |
CALL Check_buffer_i(size(VarIn)) |
||
305 |
CALL scatter_omp_igen(VarIn,Varout,1,buffer_i) |
||
306 |
|||
307 |
END SUBROUTINE scatter_omp_i |
||
308 |
|||
309 |
|||
310 |
SUBROUTINE scatter_omp_i1(VarIn, VarOut) |
||
311 |
IMPLICIT NONE |
||
312 |
|||
313 |
INTEGER,INTENT(IN),DIMENSION(:,:) :: VarIn |
||
314 |
INTEGER,INTENT(OUT),DIMENSION(:,:) :: VarOut |
||
315 |
|||
316 |
CALL Check_buffer_i(size(VarIn)) |
||
317 |
CALL scatter_omp_igen(VarIn,Varout,Size(VarOut,2),buffer_i) |
||
318 |
|||
319 |
END SUBROUTINE scatter_omp_i1 |
||
320 |
|||
321 |
|||
322 |
SUBROUTINE scatter_omp_i2(VarIn, VarOut) |
||
323 |
IMPLICIT NONE |
||
324 |
|||
325 |
INTEGER,INTENT(IN),DIMENSION(:,:,:) :: VarIn |
||
326 |
INTEGER,INTENT(OUT),DIMENSION(:,:,:) :: VarOut |
||
327 |
|||
328 |
CALL Check_buffer_i(size(VarIn)) |
||
329 |
CALL scatter_omp_igen(VarIn,Varout,Size(VarOut,2)*Size(VarOut,3),buffer_i) |
||
330 |
|||
331 |
END SUBROUTINE scatter_omp_i2 |
||
332 |
|||
333 |
|||
334 |
SUBROUTINE scatter_omp_i3(VarIn, VarOut) |
||
335 |
IMPLICIT NONE |
||
336 |
|||
337 |
INTEGER,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn |
||
338 |
INTEGER,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut |
||
339 |
|||
340 |
CALL Check_buffer_i(size(VarIn)) |
||
341 |
CALL scatter_omp_igen(VarIn,Varout,Size(VarOut,2)*Size(VarOut,3)*Size(VarOut,4),buffer_i) |
||
342 |
|||
343 |
END SUBROUTINE scatter_omp_i3 |
||
344 |
|||
345 |
|||
346 |
|||
347 |
|||
348 |
✗✓✗✓ |
32 |
SUBROUTINE scatter_omp_r(VarIn, VarOut) |
349 |
IMPLICIT NONE |
||
350 |
|||
351 |
REAL,INTENT(IN),DIMENSION(:) :: VarIn |
||
352 |
REAL,INTENT(OUT),DIMENSION(:) :: VarOut |
||
353 |
|||
354 |
32 |
CALL Check_buffer_r(size(VarIn)) |
|
355 |
✗✓✗✓ |
32 |
CALL scatter_omp_rgen(VarIn,Varout,1,buffer_r) |
356 |
|||
357 |
32 |
END SUBROUTINE scatter_omp_r |
|
358 |
|||
359 |
|||
360 |
✗✓✗✓ |
326 |
SUBROUTINE scatter_omp_r1(VarIn, VarOut) |
361 |
IMPLICIT NONE |
||
362 |
|||
363 |
REAL,INTENT(IN),DIMENSION(:,:) :: VarIn |
||
364 |
REAL,INTENT(OUT),DIMENSION(:,:) :: VarOut |
||
365 |
|||
366 |
326 |
CALL Check_buffer_r(size(VarIn)) |
|
367 |
✗✓✗✓ |
326 |
CALL scatter_omp_rgen(VarIn,Varout,Size(VarOut,2),buffer_r) |
368 |
|||
369 |
326 |
END SUBROUTINE scatter_omp_r1 |
|
370 |
|||
371 |
|||
372 |
SUBROUTINE scatter_omp_r2(VarIn, VarOut) |
||
373 |
IMPLICIT NONE |
||
374 |
|||
375 |
REAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn |
||
376 |
REAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut |
||
377 |
|||
378 |
CALL Check_buffer_r(size(VarIn)) |
||
379 |
CALL scatter_omp_rgen(VarIn,Varout,Size(VarOut,2)*Size(VarOut,3),buffer_r) |
||
380 |
|||
381 |
END SUBROUTINE scatter_omp_r2 |
||
382 |
|||
383 |
|||
384 |
SUBROUTINE scatter_omp_r3(VarIn, VarOut) |
||
385 |
IMPLICIT NONE |
||
386 |
|||
387 |
REAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn |
||
388 |
REAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut |
||
389 |
|||
390 |
CALL Check_buffer_r(size(VarIn)) |
||
391 |
CALL scatter_omp_rgen(VarIn,Varout,Size(VarOut,2)*Size(VarOut,3)*Size(VarOut,4),buffer_r) |
||
392 |
|||
393 |
END SUBROUTINE scatter_omp_r3 |
||
394 |
|||
395 |
|||
396 |
|||
397 |
SUBROUTINE scatter_omp_l(VarIn, VarOut) |
||
398 |
IMPLICIT NONE |
||
399 |
|||
400 |
LOGICAL,INTENT(IN),DIMENSION(:) :: VarIn |
||
401 |
LOGICAL,INTENT(OUT),DIMENSION(:) :: VarOut |
||
402 |
|||
403 |
CALL Check_buffer_l(size(VarIn)) |
||
404 |
CALL scatter_omp_lgen(VarIn,Varout,1,buffer_l) |
||
405 |
|||
406 |
END SUBROUTINE scatter_omp_l |
||
407 |
|||
408 |
|||
409 |
SUBROUTINE scatter_omp_l1(VarIn, VarOut) |
||
410 |
IMPLICIT NONE |
||
411 |
|||
412 |
LOGICAL,INTENT(IN),DIMENSION(:,:) :: VarIn |
||
413 |
LOGICAL,INTENT(OUT),DIMENSION(:,:) :: VarOut |
||
414 |
|||
415 |
CALL Check_buffer_l(size(VarIn)) |
||
416 |
CALL scatter_omp_lgen(VarIn,Varout,Size(VarOut,2),buffer_l) |
||
417 |
|||
418 |
END SUBROUTINE scatter_omp_l1 |
||
419 |
|||
420 |
|||
421 |
SUBROUTINE scatter_omp_l2(VarIn, VarOut) |
||
422 |
IMPLICIT NONE |
||
423 |
|||
424 |
LOGICAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn |
||
425 |
LOGICAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut |
||
426 |
|||
427 |
CALL Check_buffer_l(size(VarIn)) |
||
428 |
CALL scatter_omp_lgen(VarIn,Varout,Size(VarOut,2)*Size(VarOut,3),buffer_l) |
||
429 |
|||
430 |
END SUBROUTINE scatter_omp_l2 |
||
431 |
|||
432 |
|||
433 |
SUBROUTINE scatter_omp_l3(VarIn, VarOut) |
||
434 |
IMPLICIT NONE |
||
435 |
|||
436 |
LOGICAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn |
||
437 |
LOGICAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut |
||
438 |
|||
439 |
CALL Check_buffer_l(size(VarIn)) |
||
440 |
CALL scatter_omp_lgen(VarIn,Varout,Size(VarOut,2)*Size(VarOut,3)*Size(VarOut,4),buffer_l) |
||
441 |
|||
442 |
END SUBROUTINE scatter_omp_l3 |
||
443 |
|||
444 |
|||
445 |
✗✓✗✓ |
569 |
SUBROUTINE gather_omp_i(VarIn, VarOut) |
446 |
IMPLICIT NONE |
||
447 |
|||
448 |
INTEGER,INTENT(IN),DIMENSION(:) :: VarIn |
||
449 |
INTEGER,INTENT(OUT),DIMENSION(:) :: VarOut |
||
450 |
|||
451 |
569 |
CALL Check_buffer_i(size(VarOut)) |
|
452 |
✗✓✗✓ |
569 |
CALL gather_omp_igen(VarIn,Varout,1,buffer_i) |
453 |
|||
454 |
569 |
END SUBROUTINE gather_omp_i |
|
455 |
|||
456 |
|||
457 |
SUBROUTINE gather_omp_i1(VarIn, VarOut) |
||
458 |
IMPLICIT NONE |
||
459 |
|||
460 |
INTEGER,INTENT(IN),DIMENSION(:,:) :: VarIn |
||
461 |
INTEGER,INTENT(OUT),DIMENSION(:,:) :: VarOut |
||
462 |
|||
463 |
CALL Check_buffer_i(size(VarOut)) |
||
464 |
CALL gather_omp_igen(VarIn,Varout,Size(VarIn,2),buffer_i) |
||
465 |
|||
466 |
END SUBROUTINE gather_omp_i1 |
||
467 |
|||
468 |
|||
469 |
SUBROUTINE gather_omp_i2(VarIn, VarOut) |
||
470 |
IMPLICIT NONE |
||
471 |
|||
472 |
INTEGER,INTENT(IN),DIMENSION(:,:,:) :: VarIn |
||
473 |
INTEGER,INTENT(OUT),DIMENSION(:,:,:) :: VarOut |
||
474 |
|||
475 |
CALL Check_buffer_i(size(VarOut)) |
||
476 |
CALL gather_omp_igen(VarIn,Varout,Size(VarIn,2)*Size(VarIn,3),buffer_i) |
||
477 |
|||
478 |
END SUBROUTINE gather_omp_i2 |
||
479 |
|||
480 |
|||
481 |
SUBROUTINE gather_omp_i3(VarIn, VarOut) |
||
482 |
IMPLICIT NONE |
||
483 |
|||
484 |
INTEGER,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn |
||
485 |
INTEGER,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut |
||
486 |
|||
487 |
CALL Check_buffer_i(size(VarOut)) |
||
488 |
CALL gather_omp_igen(VarIn,Varout,Size(VarIn,2)*Size(VarIn,3)*Size(VarIn,4),buffer_i) |
||
489 |
|||
490 |
END SUBROUTINE gather_omp_i3 |
||
491 |
|||
492 |
|||
493 |
|||
494 |
✗✓✗✓ |
218596 |
SUBROUTINE gather_omp_r(VarIn, VarOut) |
495 |
IMPLICIT NONE |
||
496 |
|||
497 |
REAL,INTENT(IN),DIMENSION(:) :: VarIn |
||
498 |
REAL,INTENT(OUT),DIMENSION(:) :: VarOut |
||
499 |
|||
500 |
✗✓✗✓ |
218596 |
CALL gather_omp_rgen(VarIn,Varout,1) |
501 |
|||
502 |
218596 |
END SUBROUTINE gather_omp_r |
|
503 |
|||
504 |
|||
505 |
✗✓✗✓ |
74807 |
SUBROUTINE gather_omp_r1(VarIn, VarOut) |
506 |
IMPLICIT NONE |
||
507 |
|||
508 |
REAL,INTENT(IN),DIMENSION(:,:) :: VarIn |
||
509 |
REAL,INTENT(OUT),DIMENSION(:,:) :: VarOut |
||
510 |
|||
511 |
✗✓✗✓ |
74807 |
CALL gather_omp_rgen(VarIn,Varout,Size(VarIn,2)) |
512 |
|||
513 |
74807 |
END SUBROUTINE gather_omp_r1 |
|
514 |
|||
515 |
|||
516 |
SUBROUTINE gather_omp_r2(VarIn, VarOut) |
||
517 |
IMPLICIT NONE |
||
518 |
|||
519 |
REAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn |
||
520 |
REAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut |
||
521 |
|||
522 |
CALL gather_omp_rgen(VarIn,Varout,Size(VarIn,2)*Size(VarIn,3)) |
||
523 |
|||
524 |
END SUBROUTINE gather_omp_r2 |
||
525 |
|||
526 |
|||
527 |
SUBROUTINE gather_omp_r3(VarIn, VarOut) |
||
528 |
IMPLICIT NONE |
||
529 |
|||
530 |
REAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn |
||
531 |
REAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut |
||
532 |
|||
533 |
CALL gather_omp_rgen(VarIn,Varout,Size(VarIn,2)*Size(VarIn,3)*Size(VarIn,4)) |
||
534 |
|||
535 |
END SUBROUTINE gather_omp_r3 |
||
536 |
|||
537 |
|||
538 |
SUBROUTINE gather_omp_l(VarIn, VarOut) |
||
539 |
IMPLICIT NONE |
||
540 |
|||
541 |
LOGICAL,INTENT(IN),DIMENSION(:) :: VarIn |
||
542 |
LOGICAL,INTENT(OUT),DIMENSION(:) :: VarOut |
||
543 |
|||
544 |
CALL Check_buffer_l(size(VarOut)) |
||
545 |
CALL gather_omp_lgen(VarIn,Varout,1,buffer_l) |
||
546 |
|||
547 |
END SUBROUTINE gather_omp_l |
||
548 |
|||
549 |
|||
550 |
SUBROUTINE gather_omp_l1(VarIn, VarOut) |
||
551 |
IMPLICIT NONE |
||
552 |
|||
553 |
LOGICAL,INTENT(IN),DIMENSION(:,:) :: VarIn |
||
554 |
LOGICAL,INTENT(OUT),DIMENSION(:,:) :: VarOut |
||
555 |
|||
556 |
CALL Check_buffer_l(size(VarOut)) |
||
557 |
CALL gather_omp_lgen(VarIn,Varout,Size(VarIn,2),buffer_l) |
||
558 |
|||
559 |
END SUBROUTINE gather_omp_l1 |
||
560 |
|||
561 |
|||
562 |
SUBROUTINE gather_omp_l2(VarIn, VarOut) |
||
563 |
IMPLICIT NONE |
||
564 |
|||
565 |
LOGICAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn |
||
566 |
LOGICAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut |
||
567 |
|||
568 |
CALL Check_buffer_l(size(VarOut)) |
||
569 |
CALL gather_omp_lgen(VarIn,Varout,Size(VarIn,2)*Size(VarIn,3),buffer_l) |
||
570 |
|||
571 |
END SUBROUTINE gather_omp_l2 |
||
572 |
|||
573 |
|||
574 |
SUBROUTINE gather_omp_l3(VarIn, VarOut) |
||
575 |
IMPLICIT NONE |
||
576 |
|||
577 |
LOGICAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn |
||
578 |
LOGICAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut |
||
579 |
|||
580 |
CALL Check_buffer_l(size(VarOut)) |
||
581 |
CALL gather_omp_lgen(VarIn,Varout,Size(VarIn,2)*Size(VarIn,3)*Size(VarIn,4),buffer_l) |
||
582 |
|||
583 |
END SUBROUTINE gather_omp_l3 |
||
584 |
|||
585 |
|||
586 |
|||
587 |
|||
588 |
2 |
SUBROUTINE reduce_sum_omp_i(VarIn, VarOut) |
|
589 |
IMPLICIT NONE |
||
590 |
|||
591 |
INTEGER,INTENT(IN) :: VarIn |
||
592 |
INTEGER,INTENT(OUT) :: VarOut |
||
593 |
INTEGER :: VarIn_tmp(1) |
||
594 |
INTEGER :: VarOut_tmp(1) |
||
595 |
|||
596 |
2 |
VarIn_tmp(1)=VarIn |
|
597 |
2 |
CALL Check_buffer_i(1) |
|
598 |
2 |
CALL reduce_sum_omp_igen(VarIn_tmp,Varout_tmp,1,buffer_i) |
|
599 |
2 |
VarOut=VarOut_tmp(1) |
|
600 |
|||
601 |
2 |
END SUBROUTINE reduce_sum_omp_i |
|
602 |
|||
603 |
SUBROUTINE reduce_sum_omp_i1(VarIn, VarOut) |
||
604 |
IMPLICIT NONE |
||
605 |
|||
606 |
INTEGER,INTENT(IN),DIMENSION(:) :: VarIn |
||
607 |
INTEGER,INTENT(OUT),DIMENSION(:) :: VarOut |
||
608 |
|||
609 |
CALL Check_buffer_i(size(VarIn)) |
||
610 |
CALL reduce_sum_omp_igen(VarIn,Varout,Size(VarIn),buffer_i) |
||
611 |
|||
612 |
END SUBROUTINE reduce_sum_omp_i1 |
||
613 |
|||
614 |
|||
615 |
SUBROUTINE reduce_sum_omp_i2(VarIn, VarOut) |
||
616 |
IMPLICIT NONE |
||
617 |
|||
618 |
INTEGER,INTENT(IN),DIMENSION(:,:) :: VarIn |
||
619 |
INTEGER,INTENT(OUT),DIMENSION(:,:) :: VarOut |
||
620 |
|||
621 |
CALL Check_buffer_i(size(VarIn)) |
||
622 |
CALL reduce_sum_omp_igen(VarIn,Varout,Size(VarIn),buffer_i) |
||
623 |
|||
624 |
END SUBROUTINE reduce_sum_omp_i2 |
||
625 |
|||
626 |
|||
627 |
SUBROUTINE reduce_sum_omp_i3(VarIn, VarOut) |
||
628 |
IMPLICIT NONE |
||
629 |
|||
630 |
INTEGER,INTENT(IN),DIMENSION(:,:,:) :: VarIn |
||
631 |
INTEGER,INTENT(OUT),DIMENSION(:,:,:) :: VarOut |
||
632 |
|||
633 |
CALL Check_buffer_i(size(VarIn)) |
||
634 |
CALL reduce_sum_omp_igen(VarIn,Varout,Size(VarIn),buffer_i) |
||
635 |
|||
636 |
END SUBROUTINE reduce_sum_omp_i3 |
||
637 |
|||
638 |
|||
639 |
SUBROUTINE reduce_sum_omp_i4(VarIn, VarOut) |
||
640 |
IMPLICIT NONE |
||
641 |
|||
642 |
INTEGER,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn |
||
643 |
INTEGER,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut |
||
644 |
|||
645 |
CALL Check_buffer_i(size(VarIn)) |
||
646 |
CALL reduce_sum_omp_igen(VarIn,Varout,Size(VarIn),buffer_i) |
||
647 |
|||
648 |
END SUBROUTINE reduce_sum_omp_i4 |
||
649 |
|||
650 |
|||
651 |
SUBROUTINE reduce_sum_omp_r(VarIn, VarOut) |
||
652 |
IMPLICIT NONE |
||
653 |
|||
654 |
REAL,INTENT(IN) :: VarIn |
||
655 |
REAL,INTENT(OUT) :: VarOut |
||
656 |
REAL :: VarIn_tmp(1) |
||
657 |
REAL :: VarOut_tmp(1) |
||
658 |
|||
659 |
VarIn_tmp(1)=VarIn |
||
660 |
CALL Check_buffer_r(1) |
||
661 |
CALL reduce_sum_omp_rgen(VarIn_tmp,Varout_tmp,1,buffer_r) |
||
662 |
VarOut=VarOut_tmp(1) |
||
663 |
|||
664 |
END SUBROUTINE reduce_sum_omp_r |
||
665 |
|||
666 |
SUBROUTINE reduce_sum_omp_r1(VarIn, VarOut) |
||
667 |
IMPLICIT NONE |
||
668 |
|||
669 |
REAL,INTENT(IN),DIMENSION(:) :: VarIn |
||
670 |
REAL,INTENT(OUT),DIMENSION(:) :: VarOut |
||
671 |
|||
672 |
CALL Check_buffer_r(size(VarIn)) |
||
673 |
CALL reduce_sum_omp_rgen(VarIn,Varout,Size(VarIn),buffer_r) |
||
674 |
|||
675 |
END SUBROUTINE reduce_sum_omp_r1 |
||
676 |
|||
677 |
|||
678 |
SUBROUTINE reduce_sum_omp_r2(VarIn, VarOut) |
||
679 |
IMPLICIT NONE |
||
680 |
|||
681 |
REAL,INTENT(IN),DIMENSION(:,:) :: VarIn |
||
682 |
REAL,INTENT(OUT),DIMENSION(:,:) :: VarOut |
||
683 |
|||
684 |
CALL Check_buffer_r(size(VarIn)) |
||
685 |
CALL reduce_sum_omp_rgen(VarIn,Varout,Size(VarIn),buffer_r) |
||
686 |
|||
687 |
END SUBROUTINE reduce_sum_omp_r2 |
||
688 |
|||
689 |
|||
690 |
SUBROUTINE reduce_sum_omp_r3(VarIn, VarOut) |
||
691 |
IMPLICIT NONE |
||
692 |
|||
693 |
REAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn |
||
694 |
REAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut |
||
695 |
|||
696 |
CALL Check_buffer_r(size(VarIn)) |
||
697 |
CALL reduce_sum_omp_rgen(VarIn,Varout,Size(VarIn),buffer_r) |
||
698 |
|||
699 |
END SUBROUTINE reduce_sum_omp_r3 |
||
700 |
|||
701 |
|||
702 |
SUBROUTINE reduce_sum_omp_r4(VarIn, VarOut) |
||
703 |
IMPLICIT NONE |
||
704 |
|||
705 |
REAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn |
||
706 |
REAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut |
||
707 |
|||
708 |
CALL Check_buffer_r(size(VarIn)) |
||
709 |
CALL reduce_sum_omp_rgen(VarIn,Varout,Size(VarIn),buffer_r) |
||
710 |
|||
711 |
END SUBROUTINE reduce_sum_omp_r4 |
||
712 |
|||
713 |
|||
714 |
|||
715 |
SUBROUTINE reduce_min_omp_i(VarIn, VarOut) |
||
716 |
IMPLICIT NONE |
||
717 |
|||
718 |
INTEGER,INTENT(IN) :: VarIn |
||
719 |
INTEGER,INTENT(OUT) :: VarOut |
||
720 |
INTEGER :: VarIn_tmp(1) |
||
721 |
INTEGER :: VarOut_tmp(1) |
||
722 |
|||
723 |
VarIn_tmp(1)=VarIn |
||
724 |
CALL Check_buffer_i(1) |
||
725 |
CALL reduce_min_omp_igen(VarIn_tmp,Varout_tmp,1,buffer_i) |
||
726 |
VarOut=VarOut_tmp(1) |
||
727 |
|||
728 |
END SUBROUTINE reduce_min_omp_i |
||
729 |
|||
730 |
SUBROUTINE reduce_min_omp_i1(VarIn, VarOut) |
||
731 |
IMPLICIT NONE |
||
732 |
|||
733 |
INTEGER,INTENT(IN),DIMENSION(:) :: VarIn |
||
734 |
INTEGER,INTENT(OUT),DIMENSION(:) :: VarOut |
||
735 |
|||
736 |
CALL Check_buffer_i(size(VarIn)) |
||
737 |
CALL reduce_min_omp_igen(VarIn,Varout,Size(VarIn),buffer_i) |
||
738 |
|||
739 |
END SUBROUTINE reduce_min_omp_i1 |
||
740 |
|||
741 |
|||
742 |
SUBROUTINE reduce_min_omp_i2(VarIn, VarOut) |
||
743 |
IMPLICIT NONE |
||
744 |
|||
745 |
INTEGER,INTENT(IN),DIMENSION(:,:) :: VarIn |
||
746 |
INTEGER,INTENT(OUT),DIMENSION(:,:) :: VarOut |
||
747 |
|||
748 |
CALL Check_buffer_i(size(VarIn)) |
||
749 |
CALL reduce_min_omp_igen(VarIn,Varout,Size(VarIn),buffer_i) |
||
750 |
|||
751 |
END SUBROUTINE reduce_min_omp_i2 |
||
752 |
|||
753 |
|||
754 |
SUBROUTINE reduce_min_omp_i3(VarIn, VarOut) |
||
755 |
IMPLICIT NONE |
||
756 |
|||
757 |
INTEGER,INTENT(IN),DIMENSION(:,:,:) :: VarIn |
||
758 |
INTEGER,INTENT(OUT),DIMENSION(:,:,:) :: VarOut |
||
759 |
|||
760 |
CALL Check_buffer_i(size(VarIn)) |
||
761 |
CALL reduce_min_omp_igen(VarIn,Varout,Size(VarIn),buffer_i) |
||
762 |
|||
763 |
END SUBROUTINE reduce_min_omp_i3 |
||
764 |
|||
765 |
|||
766 |
SUBROUTINE reduce_min_omp_i4(VarIn, VarOut) |
||
767 |
IMPLICIT NONE |
||
768 |
|||
769 |
INTEGER,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn |
||
770 |
INTEGER,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut |
||
771 |
|||
772 |
CALL Check_buffer_i(size(VarIn)) |
||
773 |
CALL reduce_min_omp_igen(VarIn,Varout,Size(VarIn),buffer_i) |
||
774 |
|||
775 |
END SUBROUTINE reduce_min_omp_i4 |
||
776 |
|||
777 |
|||
778 |
1 |
SUBROUTINE reduce_min_omp_r(VarIn, VarOut) |
|
779 |
IMPLICIT NONE |
||
780 |
|||
781 |
REAL,INTENT(IN) :: VarIn |
||
782 |
REAL,INTENT(OUT) :: VarOut |
||
783 |
REAL :: VarIn_tmp(1) |
||
784 |
REAL :: VarOut_tmp(1) |
||
785 |
|||
786 |
1 |
VarIn_tmp(1)=VarIn |
|
787 |
1 |
CALL Check_buffer_r(1) |
|
788 |
1 |
CALL reduce_min_omp_rgen(VarIn_tmp,Varout_tmp,1,buffer_r) |
|
789 |
1 |
VarOut=VarOut_tmp(1) |
|
790 |
|||
791 |
1 |
END SUBROUTINE reduce_min_omp_r |
|
792 |
|||
793 |
SUBROUTINE reduce_min_omp_r1(VarIn, VarOut) |
||
794 |
IMPLICIT NONE |
||
795 |
|||
796 |
REAL,INTENT(IN),DIMENSION(:) :: VarIn |
||
797 |
REAL,INTENT(OUT),DIMENSION(:) :: VarOut |
||
798 |
|||
799 |
CALL Check_buffer_r(size(VarIn)) |
||
800 |
CALL reduce_min_omp_rgen(VarIn,Varout,Size(VarIn),buffer_r) |
||
801 |
|||
802 |
END SUBROUTINE reduce_min_omp_r1 |
||
803 |
|||
804 |
|||
805 |
SUBROUTINE reduce_min_omp_r2(VarIn, VarOut) |
||
806 |
IMPLICIT NONE |
||
807 |
|||
808 |
REAL,INTENT(IN),DIMENSION(:,:) :: VarIn |
||
809 |
REAL,INTENT(OUT),DIMENSION(:,:) :: VarOut |
||
810 |
|||
811 |
CALL Check_buffer_r(size(VarIn)) |
||
812 |
CALL reduce_min_omp_rgen(VarIn,Varout,Size(VarIn),buffer_r) |
||
813 |
|||
814 |
END SUBROUTINE reduce_min_omp_r2 |
||
815 |
|||
816 |
|||
817 |
SUBROUTINE reduce_min_omp_r3(VarIn, VarOut) |
||
818 |
IMPLICIT NONE |
||
819 |
|||
820 |
REAL,INTENT(IN),DIMENSION(:,:,:) :: VarIn |
||
821 |
REAL,INTENT(OUT),DIMENSION(:,:,:) :: VarOut |
||
822 |
|||
823 |
CALL Check_buffer_r(size(VarIn)) |
||
824 |
CALL reduce_min_omp_rgen(VarIn,Varout,Size(VarIn),buffer_r) |
||
825 |
|||
826 |
END SUBROUTINE reduce_min_omp_r3 |
||
827 |
|||
828 |
|||
829 |
SUBROUTINE reduce_min_omp_r4(VarIn, VarOut) |
||
830 |
IMPLICIT NONE |
||
831 |
|||
832 |
REAL,INTENT(IN),DIMENSION(:,:,:,:) :: VarIn |
||
833 |
REAL,INTENT(OUT),DIMENSION(:,:,:,:) :: VarOut |
||
834 |
|||
835 |
CALL Check_buffer_r(size(VarIn)) |
||
836 |
CALL reduce_min_omp_rgen(VarIn,Varout,Size(VarIn),buffer_r) |
||
837 |
|||
838 |
END SUBROUTINE reduce_min_omp_r4 |
||
839 |
|||
840 |
|||
841 |
|||
842 |
|||
843 |
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
||
844 |
! LES ROUTINES GENERIQUES ! |
||
845 |
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
||
846 |
|||
847 |
3 |
SUBROUTINE bcast_omp_cgen(Var,Nb,Buff) |
|
848 |
IMPLICIT NONE |
||
849 |
|||
850 |
CHARACTER(LEN=*),INTENT(INOUT) :: Var |
||
851 |
CHARACTER(LEN=*),INTENT(INOUT) :: Buff |
||
852 |
INTEGER,INTENT(IN) :: Nb |
||
853 |
|||
854 |
INTEGER :: i |
||
855 |
|||
856 |
!$OMP MASTER |
||
857 |
✓✗ | 3 |
Buff=Var |
858 |
!$OMP END MASTER |
||
859 |
!$OMP BARRIER |
||
860 |
|||
861 |
✓✓ | 275 |
DO i=1,Nb |
862 |
✓✗✗✓ |
275 |
Var=Buff |
863 |
ENDDO |
||
864 |
!$OMP BARRIER |
||
865 |
|||
866 |
✓✗ | 3 |
END SUBROUTINE bcast_omp_cgen |
867 |
|||
868 |
|||
869 |
|||
870 |
SUBROUTINE bcast_omp_igen(Var,Nb,Buff) |
||
871 |
IMPLICIT NONE |
||
872 |
|||
873 |
INTEGER,INTENT(IN) :: Nb |
||
874 |
INTEGER,DIMENSION(Nb),INTENT(INOUT) :: Var |
||
875 |
INTEGER,DIMENSION(Nb),INTENT(INOUT) :: Buff |
||
876 |
|||
877 |
INTEGER :: i |
||
878 |
|||
879 |
!$OMP MASTER |
||
880 |
✓✓✗✗ ✗✗✗✗ ✗✗ |
974 |
DO i=1,Nb |
881 |
974 |
Buff(i)=Var(i) |
|
882 |
ENDDO |
||
883 |
!$OMP END MASTER |
||
884 |
!$OMP BARRIER |
||
885 |
|||
886 |
✓✓✗✗ ✗✗✗✗ ✗✗ |
974 |
DO i=1,Nb |
887 |
974 |
Var(i)=Buff(i) |
|
888 |
ENDDO |
||
889 |
!$OMP BARRIER |
||
890 |
|||
891 |
END SUBROUTINE bcast_omp_igen |
||
892 |
|||
893 |
|||
894 |
SUBROUTINE bcast_omp_rgen(Var,Nb,Buff) |
||
895 |
IMPLICIT NONE |
||
896 |
|||
897 |
INTEGER,INTENT(IN) :: Nb |
||
898 |
REAL,DIMENSION(Nb),INTENT(INOUT) :: Var |
||
899 |
REAL,DIMENSION(Nb),INTENT(INOUT) :: Buff |
||
900 |
|||
901 |
INTEGER :: i |
||
902 |
|||
903 |
!$OMP MASTER |
||
904 |
✓✓✓✓ ✗✗✗✗ ✗✗ |
4849 |
DO i=1,Nb |
905 |
4849 |
Buff(i)=Var(i) |
|
906 |
ENDDO |
||
907 |
!$OMP END MASTER |
||
908 |
!$OMP BARRIER |
||
909 |
|||
910 |
✓✓✓✓ ✗✗✗✗ ✗✗ |
4849 |
DO i=1,Nb |
911 |
4849 |
Var(i)=Buff(i) |
|
912 |
ENDDO |
||
913 |
!$OMP BARRIER |
||
914 |
|||
915 |
END SUBROUTINE bcast_omp_rgen |
||
916 |
|||
917 |
SUBROUTINE bcast_omp_lgen(Var,Nb,Buff) |
||
918 |
IMPLICIT NONE |
||
919 |
|||
920 |
INTEGER,INTENT(IN) :: Nb |
||
921 |
LOGICAL,DIMENSION(Nb),INTENT(INOUT) :: Var |
||
922 |
LOGICAL,DIMENSION(Nb),INTENT(INOUT) :: Buff |
||
923 |
|||
924 |
INTEGER :: i |
||
925 |
|||
926 |
!$OMP MASTER |
||
927 |
✓✓✗✗ ✗✗✗✗ ✗✗ |
7932 |
DO i=1,Nb |
928 |
7932 |
Buff(i)=Var(i) |
|
929 |
ENDDO |
||
930 |
!$OMP END MASTER |
||
931 |
!$OMP BARRIER |
||
932 |
|||
933 |
✓✓✗✗ ✗✗✗✗ ✗✗ |
7932 |
DO i=1,Nb |
934 |
7932 |
Var(i)=Buff(i) |
|
935 |
ENDDO |
||
936 |
!$OMP BARRIER |
||
937 |
|||
938 |
END SUBROUTINE bcast_omp_lgen |
||
939 |
|||
940 |
|||
941 |
SUBROUTINE scatter_omp_igen(VarIn,VarOut,dimsize,Buff) |
||
942 |
USE mod_phys_lmdz_omp_data |
||
943 |
USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi |
||
944 |
IMPLICIT NONE |
||
945 |
|||
946 |
INTEGER,INTENT(IN) :: dimsize |
||
947 |
INTEGER,INTENT(IN),DIMENSION(klon_mpi,dimsize) :: VarIn |
||
948 |
INTEGER,INTENT(OUT),DIMENSION(klon_omp,dimsize) :: VarOut |
||
949 |
INTEGER,INTENT(INOUT),DIMENSION(klon_mpi,dimsize) :: Buff |
||
950 |
|||
951 |
INTEGER :: i,ij |
||
952 |
|||
953 |
!$OMP MASTER |
||
954 |
DO i=1,dimsize |
||
955 |
DO ij=1,klon_mpi |
||
956 |
Buff(ij,i)=VarIn(ij,i) |
||
957 |
ENDDO |
||
958 |
ENDDO |
||
959 |
!$OMP END MASTER |
||
960 |
!$OMP BARRIER |
||
961 |
|||
962 |
DO i=1,dimsize |
||
963 |
DO ij=1,klon_omp |
||
964 |
VarOut(ij,i)=Buff(klon_omp_begin-1+ij,i) |
||
965 |
ENDDO |
||
966 |
ENDDO |
||
967 |
!$OMP BARRIER |
||
968 |
|||
969 |
END SUBROUTINE scatter_omp_igen |
||
970 |
|||
971 |
|||
972 |
358 |
SUBROUTINE scatter_omp_rgen(VarIn,VarOut,dimsize,Buff) |
|
973 |
USE mod_phys_lmdz_omp_data |
||
974 |
USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi |
||
975 |
IMPLICIT NONE |
||
976 |
|||
977 |
INTEGER,INTENT(IN) :: dimsize |
||
978 |
REAL,INTENT(IN),DIMENSION(klon_mpi,dimsize) :: VarIn |
||
979 |
REAL,INTENT(OUT),DIMENSION(klon_omp,dimsize) :: VarOut |
||
980 |
REAL,INTENT(INOUT),DIMENSION(klon_mpi,dimsize) :: Buff |
||
981 |
|||
982 |
INTEGER :: i,ij |
||
983 |
|||
984 |
!$OMP MASTER |
||
985 |
✓✓ | 1639 |
DO i=1,dimsize |
986 |
✓✓ | 1274953 |
DO ij=1,klon_mpi |
987 |
1274595 |
Buff(ij,i)=VarIn(ij,i) |
|
988 |
ENDDO |
||
989 |
ENDDO |
||
990 |
!$OMP END MASTER |
||
991 |
!$OMP BARRIER |
||
992 |
|||
993 |
✓✓ | 1639 |
DO i=1,dimsize |
994 |
✓✓ | 1274953 |
DO ij=1,klon_omp |
995 |
1274595 |
VarOut(ij,i)=Buff(klon_omp_begin-1+ij,i) |
|
996 |
ENDDO |
||
997 |
ENDDO |
||
998 |
!$OMP BARRIER |
||
999 |
|||
1000 |
358 |
END SUBROUTINE scatter_omp_rgen |
|
1001 |
|||
1002 |
|||
1003 |
SUBROUTINE scatter_omp_lgen(VarIn,VarOut,dimsize,Buff) |
||
1004 |
USE mod_phys_lmdz_omp_data |
||
1005 |
USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi |
||
1006 |
IMPLICIT NONE |
||
1007 |
|||
1008 |
INTEGER,INTENT(IN) :: dimsize |
||
1009 |
LOGICAL,INTENT(IN),DIMENSION(klon_mpi,dimsize) :: VarIn |
||
1010 |
LOGICAL,INTENT(OUT),DIMENSION(klon_omp,dimsize) :: VarOut |
||
1011 |
LOGICAL,INTENT(INOUT),DIMENSION(klon_mpi,dimsize) :: Buff |
||
1012 |
|||
1013 |
INTEGER :: i,ij |
||
1014 |
|||
1015 |
!$OMP MASTER |
||
1016 |
DO i=1,dimsize |
||
1017 |
DO ij=1,klon_mpi |
||
1018 |
Buff(ij,i)=VarIn(ij,i) |
||
1019 |
ENDDO |
||
1020 |
ENDDO |
||
1021 |
!$OMP END MASTER |
||
1022 |
!$OMP BARRIER |
||
1023 |
|||
1024 |
DO i=1,dimsize |
||
1025 |
DO ij=1,klon_omp |
||
1026 |
VarOut(ij,i)=Buff(klon_omp_begin-1+ij,i) |
||
1027 |
ENDDO |
||
1028 |
ENDDO |
||
1029 |
!$OMP BARRIER |
||
1030 |
|||
1031 |
END SUBROUTINE scatter_omp_lgen |
||
1032 |
|||
1033 |
|||
1034 |
|||
1035 |
|||
1036 |
|||
1037 |
569 |
SUBROUTINE gather_omp_igen(VarIn,VarOut,dimsize,Buff) |
|
1038 |
USE mod_phys_lmdz_omp_data |
||
1039 |
USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi |
||
1040 |
IMPLICIT NONE |
||
1041 |
|||
1042 |
INTEGER,INTENT(IN) :: dimsize |
||
1043 |
INTEGER,INTENT(IN),DIMENSION(klon_omp,dimsize) :: VarIn |
||
1044 |
INTEGER,INTENT(OUT),DIMENSION(klon_mpi,dimsize) :: VarOut |
||
1045 |
INTEGER,INTENT(INOUT),DIMENSION(klon_mpi,dimsize) :: Buff |
||
1046 |
|||
1047 |
INTEGER :: i,ij |
||
1048 |
|||
1049 |
✓✓ | 1138 |
DO i=1,dimsize |
1050 |
✓✓ | 566724 |
DO ij=1,klon_omp |
1051 |
566155 |
Buff(klon_omp_begin-1+ij,i)=VarIn(ij,i) |
|
1052 |
ENDDO |
||
1053 |
ENDDO |
||
1054 |
!$OMP BARRIER |
||
1055 |
|||
1056 |
|||
1057 |
!$OMP MASTER |
||
1058 |
✓✓ | 1138 |
DO i=1,dimsize |
1059 |
✓✓ | 566724 |
DO ij=1,klon_mpi |
1060 |
566155 |
VarOut(ij,i)=Buff(ij,i) |
|
1061 |
ENDDO |
||
1062 |
ENDDO |
||
1063 |
!$OMP END MASTER |
||
1064 |
!$OMP BARRIER |
||
1065 |
|||
1066 |
569 |
END SUBROUTINE gather_omp_igen |
|
1067 |
|||
1068 |
|||
1069 |
293403 |
SUBROUTINE gather_omp_rgen(VarIn,VarOut,dimsize) |
|
1070 |
USE mod_phys_lmdz_omp_data |
||
1071 |
USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi |
||
1072 |
IMPLICIT NONE |
||
1073 |
|||
1074 |
INTEGER,INTENT(IN) :: dimsize |
||
1075 |
REAL,INTENT(IN),DIMENSION(klon_omp,dimsize) :: VarIn |
||
1076 |
REAL,INTENT(OUT),DIMENSION(klon_mpi,dimsize),TARGET :: VarOut |
||
1077 |
|||
1078 |
REAL, POINTER, SAVE :: Varout_ptr(:,:) ! Shared between threads NOT THREADPRIVATE |
||
1079 |
|||
1080 |
INTEGER :: i,ij |
||
1081 |
|||
1082 |
!$omp master |
||
1083 |
293403 |
Varout_ptr => VarOut |
|
1084 |
!$omp end master |
||
1085 |
!$omp barrier |
||
1086 |
|||
1087 |
✓✓ | 3066311 |
DO i=1,dimsize |
1088 |
✓✓ | 2759336863 |
DO ij=1,klon_omp |
1089 |
2759043460 |
Varout_ptr(klon_omp_begin-1+ij,i)=VarIn(ij,i) |
|
1090 |
ENDDO |
||
1091 |
ENDDO |
||
1092 |
!$omp barrier |
||
1093 |
293403 |
END SUBROUTINE gather_omp_rgen |
|
1094 |
|||
1095 |
|||
1096 |
SUBROUTINE gather_omp_lgen(VarIn,VarOut,dimsize,Buff) |
||
1097 |
USE mod_phys_lmdz_omp_data |
||
1098 |
USE mod_phys_lmdz_mpi_data, ONLY : klon_mpi |
||
1099 |
IMPLICIT NONE |
||
1100 |
|||
1101 |
INTEGER,INTENT(IN) :: dimsize |
||
1102 |
LOGICAL,INTENT(IN),DIMENSION(klon_omp,dimsize) :: VarIn |
||
1103 |
LOGICAL,INTENT(OUT),DIMENSION(klon_mpi,dimsize) :: VarOut |
||
1104 |
LOGICAL,INTENT(INOUT),DIMENSION(klon_mpi,dimsize) :: Buff |
||
1105 |
|||
1106 |
INTEGER :: i,ij |
||
1107 |
|||
1108 |
DO i=1,dimsize |
||
1109 |
DO ij=1,klon_omp |
||
1110 |
Buff(klon_omp_begin-1+ij,i)=VarIn(ij,i) |
||
1111 |
ENDDO |
||
1112 |
ENDDO |
||
1113 |
!$OMP BARRIER |
||
1114 |
|||
1115 |
|||
1116 |
!$OMP MASTER |
||
1117 |
DO i=1,dimsize |
||
1118 |
DO ij=1,klon_mpi |
||
1119 |
VarOut(ij,i)=Buff(ij,i) |
||
1120 |
ENDDO |
||
1121 |
ENDDO |
||
1122 |
!$OMP END MASTER |
||
1123 |
!$OMP BARRIER |
||
1124 |
|||
1125 |
END SUBROUTINE gather_omp_lgen |
||
1126 |
|||
1127 |
|||
1128 |
SUBROUTINE reduce_sum_omp_igen(VarIn,VarOut,dimsize,Buff) |
||
1129 |
IMPLICIT NONE |
||
1130 |
|||
1131 |
INTEGER,INTENT(IN) :: dimsize |
||
1132 |
INTEGER,INTENT(IN),DIMENSION(dimsize) :: VarIn |
||
1133 |
INTEGER,INTENT(OUT),DIMENSION(dimsize) :: VarOut |
||
1134 |
INTEGER,INTENT(INOUT),DIMENSION(dimsize) :: Buff |
||
1135 |
|||
1136 |
INTEGER :: i |
||
1137 |
|||
1138 |
!$OMP MASTER |
||
1139 |
✓✓✗✗ ✗✗✗✗ ✗✗ |
4 |
Buff(:)=0 |
1140 |
!$OMP END MASTER |
||
1141 |
!$OMP BARRIER |
||
1142 |
|||
1143 |
!$OMP CRITICAL |
||
1144 |
✓✓✗✗ ✗✗✗✗ ✗✗ |
4 |
DO i=1,dimsize |
1145 |
4 |
Buff(i)=Buff(i)+VarIn(i) |
|
1146 |
ENDDO |
||
1147 |
!$OMP END CRITICAL |
||
1148 |
!$OMP BARRIER |
||
1149 |
|||
1150 |
!$OMP MASTER |
||
1151 |
✓✓✗✗ ✗✗✗✗ ✗✗ |
4 |
DO i=1,dimsize |
1152 |
4 |
VarOut(i)=Buff(i) |
|
1153 |
ENDDO |
||
1154 |
!$OMP END MASTER |
||
1155 |
!$OMP BARRIER |
||
1156 |
|||
1157 |
END SUBROUTINE reduce_sum_omp_igen |
||
1158 |
|||
1159 |
SUBROUTINE reduce_sum_omp_rgen(VarIn,VarOut,dimsize,Buff) |
||
1160 |
IMPLICIT NONE |
||
1161 |
|||
1162 |
INTEGER,INTENT(IN) :: dimsize |
||
1163 |
REAL,INTENT(IN),DIMENSION(dimsize) :: VarIn |
||
1164 |
REAL,INTENT(OUT),DIMENSION(dimsize) :: VarOut |
||
1165 |
REAL,INTENT(INOUT),DIMENSION(dimsize) :: Buff |
||
1166 |
|||
1167 |
INTEGER :: i |
||
1168 |
|||
1169 |
!$OMP MASTER |
||
1170 |
Buff(:)=0 |
||
1171 |
!$OMP END MASTER |
||
1172 |
!$OMP BARRIER |
||
1173 |
|||
1174 |
!$OMP CRITICAL |
||
1175 |
DO i=1,dimsize |
||
1176 |
Buff(i)=Buff(i)+VarIn(i) |
||
1177 |
ENDDO |
||
1178 |
!$OMP END CRITICAL |
||
1179 |
!$OMP BARRIER |
||
1180 |
|||
1181 |
!$OMP MASTER |
||
1182 |
DO i=1,dimsize |
||
1183 |
VarOut(i)=Buff(i) |
||
1184 |
ENDDO |
||
1185 |
!$OMP END MASTER |
||
1186 |
!$OMP BARRIER |
||
1187 |
|||
1188 |
END SUBROUTINE reduce_sum_omp_rgen |
||
1189 |
|||
1190 |
|||
1191 |
SUBROUTINE reduce_min_omp_igen(VarIn,VarOut,dimsize,Buff) |
||
1192 |
IMPLICIT NONE |
||
1193 |
|||
1194 |
INTEGER,INTENT(IN) :: dimsize |
||
1195 |
INTEGER,INTENT(IN),DIMENSION(dimsize) :: VarIn |
||
1196 |
INTEGER,INTENT(OUT),DIMENSION(dimsize) :: VarOut |
||
1197 |
INTEGER,INTENT(INOUT),DIMENSION(dimsize) :: Buff |
||
1198 |
|||
1199 |
INTEGER :: i |
||
1200 |
INTEGER :: var |
||
1201 |
|||
1202 |
!$OMP MASTER |
||
1203 |
Buff(:)=HUGE(var) |
||
1204 |
!$OMP END MASTER |
||
1205 |
!$OMP BARRIER |
||
1206 |
|||
1207 |
!$OMP CRITICAL |
||
1208 |
DO i=1,dimsize |
||
1209 |
Buff(i)=MIN(Buff(i),VarIn(i)) |
||
1210 |
ENDDO |
||
1211 |
!$OMP END CRITICAL |
||
1212 |
!$OMP BARRIER |
||
1213 |
|||
1214 |
!$OMP MASTER |
||
1215 |
DO i=1,dimsize |
||
1216 |
VarOut(i)=Buff(i) |
||
1217 |
ENDDO |
||
1218 |
!$OMP END MASTER |
||
1219 |
!$OMP BARRIER |
||
1220 |
|||
1221 |
END SUBROUTINE reduce_min_omp_igen |
||
1222 |
|||
1223 |
SUBROUTINE reduce_min_omp_rgen(VarIn,VarOut,dimsize,Buff) |
||
1224 |
IMPLICIT NONE |
||
1225 |
|||
1226 |
INTEGER,INTENT(IN) :: dimsize |
||
1227 |
REAL,INTENT(IN),DIMENSION(dimsize) :: VarIn |
||
1228 |
REAL,INTENT(OUT),DIMENSION(dimsize) :: VarOut |
||
1229 |
REAL,INTENT(INOUT),DIMENSION(dimsize) :: Buff |
||
1230 |
|||
1231 |
INTEGER :: i |
||
1232 |
REAL :: var |
||
1233 |
|||
1234 |
!$OMP MASTER |
||
1235 |
✓✓✗✗ ✗✗✗✗ ✗✗ |
2 |
Buff(:)=HUGE(var) |
1236 |
!$OMP END MASTER |
||
1237 |
!$OMP BARRIER |
||
1238 |
|||
1239 |
!$OMP CRITICAL |
||
1240 |
✓✓✗✗ ✗✗✗✗ ✗✗ |
2 |
DO i=1,dimsize |
1241 |
2 |
Buff(i)=MIN(Buff(i),VarIn(i)) |
|
1242 |
ENDDO |
||
1243 |
!$OMP END CRITICAL |
||
1244 |
!$OMP BARRIER |
||
1245 |
|||
1246 |
!$OMP MASTER |
||
1247 |
✓✓✗✗ ✗✗✗✗ ✗✗ |
2 |
DO i=1,dimsize |
1248 |
2 |
VarOut(i)=Buff(i) |
|
1249 |
ENDDO |
||
1250 |
!$OMP END MASTER |
||
1251 |
!$OMP BARRIER |
||
1252 |
|||
1253 |
END SUBROUTINE reduce_min_omp_rgen |
||
1254 |
|||
1255 |
|||
1256 |
END MODULE mod_phys_lmdz_omp_transfert |
Generated by: GCOVR (Version 4.2) |