ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-1.0/libmdtools/oopseMPI_module.F90
Revision: 1334
Committed: Fri Jul 16 18:58:03 2004 UTC (19 years, 11 months ago) by gezelter
File size: 24818 byte(s)
Log Message:
Initial import of OOPSE-1.0 source tree

File Contents

# Content
1 !! Wrapper interfaces for mpi.
2 !! This wrapper should work independently of mpi implimentation.
3 !! We only provide an explicit interface for routines we use.
4 !! Access to other functions is external
5 module oopseMPI
6 use definitions, ONLY : dp
7 #ifdef IS_MPI
8 implicit none
9 PUBLIC !WARNING everything in this module is public
10
11
12 include "mpif.h"
13
14 private :: dp
15
16
17 ! interfaces for things that we use
18 ! These routines are not overloaded and only include one argument type.
19 interface
20 SUBROUTINE MPI_INIT(IERROR)
21 INTEGER IERROR
22 END SUBROUTINE MPI_INIT
23
24 SUBROUTINE MPI_FINALIZE(IERROR)
25 INTEGER IERROR
26 END SUBROUTINE MPI_FINALIZE
27
28 SUBROUTINE MPI_BARRIER(COMM, IERROR)
29 INTEGER COMM, IERROR
30 END SUBROUTINE MPI_BARRIER
31
32 SUBROUTINE MPI_COMM_RANK(COMM, RANK, IERROR)
33 INTEGER COMM, RANK, IERROR
34 END SUBROUTINE MPI_COMM_RANK
35
36 SUBROUTINE MPI_COMM_SIZE(COMM, SIZE, IERROR)
37 INTEGER COMM, SIZE, IERROR
38 END SUBROUTINE MPI_COMM_SIZE
39 !
40 SUBROUTINE MPI_COMM_SPLIT(COMM, COLOR, KEY, NEWCOMM, IERROR)
41 INTEGER COMM, COLOR, KEY, NEWCOMM, IERROR
42 END SUBROUTINE MPI_COMM_SPLIT
43
44 SUBROUTINE MPI_GET_PROCESSOR_NAME( NAME, RESULTLEN, IERROR)
45 CHARACTER(len=*) :: NAME
46 INTEGER RESULTLEN,IERROR
47 END SUBROUTINE MPI_GET_PROCESSOR_NAME
48
49 ! FUNCTION MPI_WTICK()
50 ! DOUBLE PRECISION MPI_WTICK
51 ! END FUNCTION MPI_WTICK
52 end interface
53
54 !! These routines are overloaded and require multiple argument types
55 interface mpi_allreduce
56 module procedure mpi_allreduce_int
57 module procedure mpi_allreduce_int_1d
58 module procedure mpi_allreduce_int_2d
59 module procedure mpi_allreduce_dp
60 module procedure mpi_allreduce_dp_1d
61 module procedure mpi_allreduce_dp_2d
62 end interface
63
64 ! interface mpi_reduce
65 ! module procedure mpi_reduce_int
66 ! module procedure mpi_reduce_int_1d
67 ! module procedure mpi_reduce_int_2d
68 ! module procedure mpi_reduce_dp
69 ! module procedure mpi_reduce_dp_1d
70 ! module procedure mpi_reduce_dp_2d
71 ! end interface
72
73 interface mpi_reduce_scatter
74 module procedure mpi_reduce_scatter_int
75 module procedure mpi_reduce_scatter_int_1d
76 module procedure mpi_reduce_scatter_int_2d
77 module procedure mpi_reduce_scatter_dp
78 module procedure mpi_reduce_scatter_dp_1d
79 module procedure mpi_reduce_scatter_dp_2d
80 end interface
81
82 interface mpi_allgatherv
83 module procedure mpi_allgatherv_int
84 module procedure mpi_allgatherv_int_1d
85 module procedure mpi_allgatherv_int_2d
86 module procedure mpi_allgatherv_dp
87 module procedure mpi_allgatherv_dp_1d
88 module procedure mpi_allgatherv_dp_2d
89 end interface
90
91 interface mpi_allgather
92 module procedure mpi_allgather_int
93 module procedure mpi_allgather_int_1d
94 module procedure mpi_allgather_int_2d
95 module procedure mpi_allgather_dp
96 module procedure mpi_allgather_dp_1d
97 module procedure mpi_allgather_dp_2d
98 end interface
99
100 interface mpi_send
101 module procedure mpi_send_dp
102 module procedure mpi_send_dp_1d
103 module procedure mpi_send_dp_2d
104 module procedure mpi_send_int
105 module procedure mpi_send_int_1d
106 module procedure mpi_send_int_2d
107 module procedure mpi_send_logical
108 module procedure mpi_send_logical_1d
109 module procedure mpi_send_t
110 module procedure mpi_send_char
111 end interface
112
113 interface mpi_bcast
114 module procedure mpi_bcast_dp
115 module procedure mpi_bcast_dp_1d
116 module procedure mpi_bcast_dp_2d
117 module procedure mpi_bcast_int
118 module procedure mpi_bcast_int_1d
119 module procedure mpi_bcast_int_2d
120 module procedure mpi_bcast_t
121 module procedure mpi_bcast_char
122 module procedure mpi_bcast_logical
123 module procedure mpi_bcast_logical_1d
124 end interface
125
126 interface mpi_recv
127 module procedure mpi_recv_int
128 module procedure mpi_recv_int_1d
129 module procedure mpi_recv_int_2d
130 module procedure mpi_recv_dp
131 module procedure mpi_recv_dp_1d
132 module procedure mpi_recv_dp_2d
133 module procedure mpi_recv_t
134 module procedure mpi_recv_char
135 module procedure mpi_recv_logical
136 module procedure mpi_recv_logical_1d
137 end interface
138
139
140
141 contains
142
143
144
145 !! MPI BCAST FUNCTIONS
146 subroutine mpi_bcast_t(BUFFER, COUNT, DATATYPE, ROOT, COMM, &
147 IERROR)
148 character (len=*),dimension(:) :: BUFFER
149 integer :: COUNT, DATATYPE, ROOT, COMM, IERROR
150 external MPI_BCAST
151 call MPI_BCAST(BUFFER, COUNT, DATATYPE, ROOT, COMM, IERROR)
152 end subroutine mpi_bcast_t
153
154 subroutine mpi_bcast_char(BUFFER, COUNT, DATATYPE, ROOT, COMM, &
155 IERROR)
156 character (len=*) :: BUFFER
157 integer :: COUNT, DATATYPE, ROOT, COMM, IERROR
158 external MPI_BCAST
159 call MPI_BCAST(BUFFER, COUNT, DATATYPE, ROOT, COMM, IERROR)
160 end subroutine mpi_bcast_char
161
162 subroutine mpi_bcast_int(BUFFER, COUNT, DATATYPE, ROOT, COMM, &
163 IERROR)
164 integer :: BUFFER
165 integer :: COUNT, DATATYPE, ROOT, COMM, IERROR
166 external MPI_BCAST
167 call MPI_BCAST(BUFFER, COUNT, DATATYPE, ROOT, COMM, IERROR)
168 end subroutine mpi_bcast_int
169
170 subroutine mpi_bcast_int_1d(BUFFER, COUNT, DATATYPE, ROOT, COMM, &
171 IERROR)
172 integer, dimension(:) :: BUFFER
173 integer :: COUNT, DATATYPE, ROOT, COMM, IERROR
174 external MPI_BCAST
175 call MPI_BCAST(BUFFER, COUNT, DATATYPE, ROOT, COMM, IERROR)
176 end subroutine mpi_bcast_int_1d
177
178 subroutine mpi_bcast_int_2d(BUFFER, COUNT, DATATYPE, ROOT, COMM, &
179 IERROR)
180 integer, dimension(:,:) :: BUFFER
181 integer :: COUNT, DATATYPE, ROOT, COMM, IERROR
182 external MPI_BCAST
183 call MPI_BCAST(BUFFER, COUNT, DATATYPE, ROOT, COMM, IERROR)
184 end subroutine mpi_bcast_int_2d
185
186 subroutine mpi_bcast_dp(BUFFER, COUNT, DATATYPE, ROOT, COMM, &
187 IERROR)
188 real(kind = dp) :: BUFFER
189 integer :: COUNT, DATATYPE, ROOT, COMM, IERROR
190 external MPI_BCAST
191 call MPI_BCAST(BUFFER, COUNT, DATATYPE, ROOT, COMM, IERROR)
192 end subroutine mpi_bcast_dp
193
194 subroutine mpi_bcast_dp_1d(BUFFER, COUNT, DATATYPE, ROOT, COMM, &
195 IERROR)
196 real(kind = dp),dimension(:) :: BUFFER
197 integer :: COUNT, DATATYPE, ROOT, COMM, IERROR
198 external MPI_BCAST
199 call MPI_BCAST(BUFFER, COUNT, DATATYPE, ROOT, COMM, IERROR)
200 end subroutine mpi_bcast_dp_1d
201
202 subroutine mpi_bcast_dp_2d(BUFFER, COUNT, DATATYPE, ROOT, COMM, &
203 IERROR)
204 real(kind = dp),dimension(:,:) :: BUFFER
205 integer :: COUNT, DATATYPE, ROOT, COMM, IERROR
206 external MPI_BCAST
207 call MPI_BCAST(BUFFER, COUNT, DATATYPE, ROOT, COMM, IERROR)
208 end subroutine mpi_bcast_dp_2d
209
210 subroutine mpi_bcast_logical(BUFFER, COUNT, DATATYPE, ROOT, COMM, &
211 IERROR)
212 logical :: BUFFER
213 integer :: COUNT, DATATYPE, ROOT, COMM, IERROR
214 external MPI_BCAST
215 call MPI_BCAST(BUFFER, COUNT, DATATYPE, ROOT, COMM, IERROR)
216 end subroutine mpi_bcast_logical
217
218 subroutine mpi_bcast_logical_1d(BUFFER, COUNT, DATATYPE, ROOT, COMM, &
219 IERROR)
220 logical,dimension(:) :: BUFFER
221 integer :: COUNT, DATATYPE, ROOT, COMM, IERROR
222 external MPI_BCAST
223 call MPI_BCAST(BUFFER, COUNT, DATATYPE, ROOT, COMM, IERROR)
224 end subroutine mpi_bcast_logical_1d
225
226
227
228 !---------------------END MPIBCAST---------------------------------
229
230
231 !--------------------MPISEND-------------------------------------
232 SUBROUTINE MPI_SEND_T(BUF, COUNT, DATATYPE, DEST, TAG, COMM, &
233 IERROR)
234 character(len=*), dimension(:) :: BUF
235 INTEGER COUNT, DATATYPE, DEST, TAG, COMM, IERROR
236 EXTERNAL MPI_SEND
237 CALL MPI_SEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, IERROR)
238 END SUBROUTINE MPI_SEND_T
239 SUBROUTINE MPI_SEND_CHAR(BUF, COUNT, DATATYPE, DEST, TAG, COMM, &
240 IERROR)
241 character(len=*) :: BUF
242 INTEGER COUNT, DATATYPE, DEST, TAG, COMM, IERROR
243 EXTERNAL MPI_SEND
244 CALL MPI_SEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, IERROR)
245 END SUBROUTINE MPI_SEND_CHAR
246
247 SUBROUTINE MPI_SEND_DP(BUF, COUNT, DATATYPE, DEST, TAG, COMM, &
248 IERROR)
249 real(kind=dp) :: BUF
250 INTEGER COUNT, DATATYPE, DEST, TAG, COMM, IERROR
251 EXTERNAL MPI_SEND
252 CALL MPI_SEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, IERROR)
253 END SUBROUTINE MPI_SEND_DP
254
255 SUBROUTINE MPI_SEND_DP_1D(BUF, COUNT, DATATYPE, DEST, TAG, COMM, &
256 IERROR)
257 real(kind=dp), dimension(:) :: BUF
258 INTEGER COUNT, DATATYPE, DEST, TAG, COMM, IERROR
259 EXTERNAL MPI_SEND
260 CALL MPI_SEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, IERROR)
261 END SUBROUTINE MPI_SEND_DP_1D
262
263 SUBROUTINE MPI_SEND_DP_2D(BUF, COUNT, DATATYPE, DEST, TAG, COMM, &
264 IERROR)
265 real(kind=dp), dimension(:,:) :: BUF
266 INTEGER COUNT, DATATYPE, DEST, TAG, COMM, IERROR
267 EXTERNAL MPI_SEND
268 CALL MPI_SEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, IERROR)
269 END SUBROUTINE MPI_SEND_DP_2D
270
271 SUBROUTINE MPI_SEND_INT(BUF, COUNT, DATATYPE, DEST, TAG, COMM, &
272 IERROR)
273 INTEGER :: BUF
274 INTEGER :: COUNT, DATATYPE, DEST, TAG, COMM, IERROR
275 EXTERNAL MPI_SEND
276 CALL MPI_SEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, IERROR)
277 END SUBROUTINE MPI_SEND_INT
278
279 SUBROUTINE MPI_SEND_INT_1D(BUF, COUNT, DATATYPE, DEST, TAG, COMM, &
280 IERROR)
281 INTEGER, dimension(:) :: BUF
282 INTEGER COUNT, DATATYPE, DEST, TAG, COMM, IERROR
283 EXTERNAL MPI_SEND
284 CALL MPI_SEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, IERROR)
285 END SUBROUTINE MPI_SEND_INT_1D
286
287 SUBROUTINE MPI_SEND_INT_2D(BUF, COUNT, DATATYPE, DEST, TAG, COMM, &
288 IERROR)
289 INTEGER, dimension(:,:) :: BUF
290 INTEGER COUNT, DATATYPE, DEST, TAG, COMM, IERROR
291 EXTERNAL MPI_SEND
292 CALL MPI_SEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, IERROR)
293 END SUBROUTINE MPI_SEND_INT_2D
294
295 SUBROUTINE MPI_SEND_LOGICAL(BUF, COUNT, DATATYPE, DEST, TAG, COMM, &
296 IERROR)
297 LOGICAL :: BUF
298 INTEGER COUNT, DATATYPE, DEST, TAG, COMM, IERROR
299 EXTERNAL MPI_SEND
300 CALL MPI_SEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, IERROR)
301 END SUBROUTINE MPI_SEND_LOGICAL
302
303 SUBROUTINE MPI_SEND_LOGICAL_1D(BUF, COUNT, DATATYPE, DEST, TAG, COMM, &
304 IERROR)
305 LOGICAL,dimension(:) :: BUF
306 INTEGER COUNT, DATATYPE, DEST, TAG, COMM, IERROR
307 EXTERNAL MPI_SEND
308 CALL MPI_SEND(BUF, COUNT, DATATYPE, DEST, TAG, COMM, IERROR)
309 END SUBROUTINE MPI_SEND_LOGICAL_1D
310 ! ----------------END MPISEND------------------------------>
311
312 !------------------BEGIN MPIRECV-------------------------->
313
314 subroutine mpi_recv_T(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, &
315 STATUS, IERROR)
316 character(len=*), dimension(:) :: BUF
317 INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, &
318 STATUS(MPI_STATUS_SIZE), IERROR
319 EXTERNAL MPI_RECV
320 CALL MPI_RECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, &
321 IERROR)
322 end subroutine mpi_recv_T
323
324 subroutine mpi_recv_char(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, &
325 STATUS, IERROR)
326 character(len=*) :: BUF
327 INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, &
328 STATUS(MPI_STATUS_SIZE), IERROR
329 EXTERNAL MPI_RECV
330 CALL MPI_RECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, &
331 IERROR)
332 end subroutine mpi_recv_char
333
334 subroutine mpi_recv_int(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, &
335 STATUS, IERROR)
336 INTEGER :: BUF
337 INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, &
338 STATUS(MPI_STATUS_SIZE), IERROR
339 EXTERNAL MPI_RECV
340 CALL MPI_RECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, &
341 IERROR)
342 end subroutine mpi_recv_int
343
344 subroutine mpi_recv_int_1d(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, &
345 STATUS, IERROR)
346 INTEGER, dimension(:) :: BUF
347 INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, &
348 STATUS(MPI_STATUS_SIZE), IERROR
349 EXTERNAL MPI_RECV
350 CALL MPI_RECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, &
351 IERROR)
352 end subroutine mpi_recv_int_1d
353 subroutine mpi_recv_int_2d(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, &
354 STATUS, IERROR)
355 INTEGER, dimension(:,:) :: BUF
356 INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, &
357 STATUS(MPI_STATUS_SIZE), IERROR
358 EXTERNAL MPI_RECV
359 CALL MPI_RECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, &
360 IERROR)
361 end subroutine mpi_recv_int_2d
362
363 subroutine mpi_recv_dp(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, &
364 STATUS, IERROR)
365 real(kind=dp) :: BUF
366 INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, &
367 STATUS(MPI_STATUS_SIZE), IERROR
368 EXTERNAL MPI_RECV
369 CALL MPI_RECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, &
370 IERROR)
371 end subroutine mpi_recv_dp
372
373 subroutine mpi_recv_dp_1d(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, &
374 STATUS, IERROR)
375 real(kind=dp), dimension(:) :: BUF
376 INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, &
377 STATUS(MPI_STATUS_SIZE), IERROR
378 EXTERNAL MPI_RECV
379 CALL MPI_RECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, &
380 IERROR)
381 end subroutine mpi_recv_dp_1d
382
383 subroutine mpi_recv_dp_2d(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, &
384 STATUS, IERROR)
385 real(kind=dp), dimension(:,:) :: BUF
386 INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, &
387 STATUS(MPI_STATUS_SIZE), IERROR
388 EXTERNAL MPI_RECV
389 CALL MPI_RECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, &
390 IERROR)
391 end subroutine mpi_recv_dp_2d
392
393 subroutine mpi_recv_logical_1d(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, &
394 STATUS, IERROR)
395 logical, dimension(:) :: BUF
396 INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, &
397 STATUS(MPI_STATUS_SIZE), IERROR
398 EXTERNAL MPI_RECV
399 CALL MPI_RECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, &
400 IERROR)
401 end subroutine mpi_recv_logical_1d
402
403 subroutine mpi_recv_logical(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, &
404 STATUS, IERROR)
405 logical :: BUF
406 INTEGER COUNT, DATATYPE, SOURCE, TAG, COMM, &
407 STATUS(MPI_STATUS_SIZE), IERROR
408 EXTERNAL MPI_RECV
409 CALL MPI_RECV(BUF, COUNT, DATATYPE, SOURCE, TAG, COMM, STATUS, &
410 IERROR)
411 end subroutine mpi_recv_logical
412 !-------------------------END MPIRECV------------------------------
413
414 !-------------------------MPI_ALLREDUCE----------------------------
415
416 SUBROUTINE MPI_ALLREDUCE_int(SENDBUF, RECVBUF, COUNT, DATATYPE, &
417 OP, COMM, IERROR)
418 INTEGER :: SENDBUF, RECVBUF
419 INTEGER COUNT, DATATYPE, OP, COMM, IERROR
420 EXTERNAL MPI_ALLREDUCE
421 CALL MPI_ALLREDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, &
422 COMM, IERROR)
423 END SUBROUTINE MPI_ALLREDUCE_INT
424
425 SUBROUTINE MPI_ALLREDUCE_INT_1d(SENDBUF, RECVBUF, COUNT, DATATYPE, &
426 OP, COMM, IERROR)
427 INTEGER,dimension(:) :: SENDBUF, RECVBUF
428 INTEGER COUNT, DATATYPE, OP, COMM, IERROR
429 EXTERNAL MPI_ALLREDUCE
430 CALL MPI_ALLREDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, &
431 COMM, IERROR)
432 END SUBROUTINE MPI_ALLREDUCE_INT_1D
433
434 SUBROUTINE MPI_ALLREDUCE_INT_2D(SENDBUF, RECVBUF, COUNT, DATATYPE, &
435 OP, COMM, IERROR)
436 integer,dimension(:,:) :: SENDBUF, RECVBUF
437 INTEGER COUNT, DATATYPE, OP, COMM, IERROR
438 EXTERNAL MPI_ALLREDUCE
439 CALL MPI_ALLREDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, &
440 COMM, IERROR)
441 END SUBROUTINE MPI_ALLREDUCE_INT_2D
442
443 SUBROUTINE MPI_ALLREDUCE_DP(SENDBUF, RECVBUF, COUNT, DATATYPE, &
444 OP, COMM, IERROR)
445 REAL(kind=dp) :: SENDBUF, RECVBUF
446 INTEGER COUNT, DATATYPE, OP, COMM, IERROR
447 EXTERNAL MPI_ALLREDUCE
448 CALL MPI_ALLREDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, &
449 COMM, IERROR)
450 END SUBROUTINE MPI_ALLREDUCE_DP
451
452 SUBROUTINE MPI_ALLREDUCE_DP_1d(SENDBUF, RECVBUF, COUNT, DATATYPE, &
453 OP, COMM, IERROR)
454 REAL(kind=dp),dimension(:) :: SENDBUF, RECVBUF
455 INTEGER COUNT, DATATYPE, OP, COMM, IERROR
456 EXTERNAL MPI_ALLREDUCE
457 CALL MPI_ALLREDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, &
458 COMM, IERROR)
459 END SUBROUTINE MPI_ALLREDUCE_DP_1D
460
461 SUBROUTINE MPI_ALLREDUCE_DP_2D(SENDBUF, RECVBUF, COUNT, DATATYPE, &
462 OP, COMM, IERROR)
463 real(kind=dp),dimension(:,:) :: SENDBUF, RECVBUF
464 INTEGER COUNT, DATATYPE, OP, COMM, IERROR
465 EXTERNAL MPI_ALLREDUCE
466 CALL MPI_ALLREDUCE(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, &
467 COMM, IERROR)
468 END SUBROUTINE MPI_ALLREDUCE_DP_2D
469 !-----------------END MPI_ALLREDUCE-------------------------->
470
471 !----------------BEGIN MPI_REDUCE_SCATTER
472 SUBROUTINE MPI_REDUCE_SCATTER_DP(SENDBUF, RECVBUF, RECVCOUNTS, &
473 DATATYPE, OP, COMM, IERROR)
474 real(kind=dp) :: SENDBUF, RECVBUF
475 INTEGER RECVCOUNTS(*), DATATYPE, OP, COMM, IERROR
476 EXTERNAL MPI_REDUCE_SCATTER
477 CALL MPI_REDUCE_SCATTER(SENDBUF, RECVBUF, RECVCOUNTS, &
478 DATATYPE, OP, COMM, IERROR)
479 END SUBROUTINE MPI_REDUCE_SCATTER_DP
480
481 SUBROUTINE MPI_REDUCE_SCATTER_DP_1D(SENDBUF, RECVBUF, RECVCOUNTS, &
482 DATATYPE, OP, COMM, IERROR)
483 real(kind=dp),dimension(:) :: SENDBUF, RECVBUF
484 INTEGER RECVCOUNTS(*), DATATYPE, OP, COMM, IERROR
485 EXTERNAL MPI_REDUCE_SCATTER
486 CALL MPI_REDUCE_SCATTER(SENDBUF, RECVBUF, RECVCOUNTS, &
487 DATATYPE, OP, COMM, IERROR)
488 END SUBROUTINE MPI_REDUCE_SCATTER_DP_1D
489
490 SUBROUTINE MPI_REDUCE_SCATTER_DP_2D(SENDBUF, RECVBUF, RECVCOUNTS, &
491 DATATYPE, OP, COMM, IERROR)
492 real(kind=dp),dimension(:,:) :: SENDBUF, RECVBUF
493 INTEGER RECVCOUNTS(*), DATATYPE, OP, COMM, IERROR
494 EXTERNAL MPI_REDUCE_SCATTER
495 CALL MPI_REDUCE_SCATTER(SENDBUF, RECVBUF, RECVCOUNTS, &
496 DATATYPE, OP, COMM, IERROR)
497 END SUBROUTINE MPI_REDUCE_SCATTER_DP_2D
498
499 SUBROUTINE MPI_REDUCE_SCATTER_INT(SENDBUF, RECVBUF, RECVCOUNTS, &
500 DATATYPE, OP, COMM, IERROR)
501 integer :: SENDBUF, RECVBUF
502 INTEGER RECVCOUNTS(*), DATATYPE, OP, COMM, IERROR
503 EXTERNAL MPI_REDUCE_SCATTER
504 CALL MPI_REDUCE_SCATTER(SENDBUF, RECVBUF, RECVCOUNTS, &
505 DATATYPE, OP, COMM, IERROR)
506 END SUBROUTINE MPI_REDUCE_SCATTER_INT
507
508 SUBROUTINE MPI_REDUCE_SCATTER_INT_1D(SENDBUF, RECVBUF, RECVCOUNTS, &
509 DATATYPE, OP, COMM, IERROR)
510 integer,dimension(:) :: SENDBUF, RECVBUF
511 INTEGER RECVCOUNTS(*), DATATYPE, OP, COMM, IERROR
512 EXTERNAL MPI_REDUCE_SCATTER
513 CALL MPI_REDUCE_SCATTER(SENDBUF, RECVBUF, RECVCOUNTS, &
514 DATATYPE, OP, COMM, IERROR)
515 END SUBROUTINE MPI_REDUCE_SCATTER_INT_1D
516
517 SUBROUTINE MPI_REDUCE_SCATTER_INT_2D(SENDBUF, RECVBUF, RECVCOUNTS, &
518 DATATYPE, OP, COMM, IERROR)
519 integer,dimension(:,:) :: SENDBUF, RECVBUF
520 INTEGER RECVCOUNTS(*), DATATYPE, OP, COMM, IERROR
521 EXTERNAL MPI_REDUCE_SCATTER
522 CALL MPI_REDUCE_SCATTER(SENDBUF, RECVBUF, RECVCOUNTS, &
523 DATATYPE, OP, COMM, IERROR)
524 END SUBROUTINE MPI_REDUCE_SCATTER_INT_2D
525
526 !end ---------------------MPI_REDUCE_SCATTER----------------->
527
528 !BEGIN------------------- MPI_ALLGATHERV--------------------->
529 SUBROUTINE MPI_ALLGATHERV_INT(SENDBUF, SENDCOUNT, SENDTYPE, &
530 RECVBUF, RECVCOUNTS, DISPLS, RECVTYPE, COMM, IERROR)
531 INTEGER :: SENDBUF
532 INTEGER,dimension(:) :: RECVBUF
533 INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), &
534 RECVTYPE, COMM, IERROR
535 EXTERNAL MPI_ALLGATHERV
536 CALL MPI_ALLGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, &
537 RECVCOUNTS, DISPLS, RECVTYPE, COMM, IERROR)
538 END SUBROUTINE MPI_ALLGATHERV_INT
539
540 SUBROUTINE MPI_ALLGATHERV_INT_1D(SENDBUF, SENDCOUNT, SENDTYPE, &
541 RECVBUF, RECVCOUNTS, DISPLS, RECVTYPE, COMM, IERROR)
542 INTEGER,dimension(:) :: SENDBUF, RECVBUF
543 INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), &
544 RECVTYPE, COMM, IERROR
545 EXTERNAL MPI_ALLGATHERV
546 CALL MPI_ALLGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, &
547 RECVCOUNTS, DISPLS, RECVTYPE, COMM, IERROR)
548 END SUBROUTINE MPI_AlLGATHERV_INT_1D
549
550 SUBROUTINE MPI_ALLGATHERV_INT_2D(SENDBUF, SENDCOUNT, SENDTYPE, &
551 RECVBUF, RECVCOUNTS, DISPLS, RECVTYPE, COMM, IERROR)
552 INTEGER,dimension(:,:) :: SENDBUF, RECVBUF
553 INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), &
554 RECVTYPE, COMM, IERROR
555 EXTERNAL MPI_ALLGATHERV
556 CALL MPI_ALLGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, &
557 RECVCOUNTS, DISPLS, RECVTYPE, COMM, IERROR)
558 END SUBROUTINE MPI_ALLGATHERV_INT_2D
559
560 SUBROUTINE MPI_ALLGATHERV_DP(SENDBUF, SENDCOUNT, SENDTYPE, &
561 RECVBUF, RECVCOUNTS, DISPLS, RECVTYPE, COMM, IERROR)
562 real(kind=dp) :: SENDBUF
563 real(kind=dp),dimension(:) :: RECVBUF
564 INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), &
565 RECVTYPE, ROOT, COMM, IERROR
566 EXTERNAL MPI_ALLGATHERV
567 CALL MPI_ALLGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, &
568 RECVCOUNTS, DISPLS, RECVTYPE, COMM, IERROR)
569 END SUBROUTINE MPI_ALLGATHERV_DP
570
571 SUBROUTINE MPI_ALLGATHERV_DP_1D(SENDBUF, SENDCOUNT, SENDTYPE, &
572 RECVBUF, RECVCOUNTS, DISPLS, RECVTYPE, COMM, IERROR)
573 real(kind=dp),dimension(:) :: SENDBUF, RECVBUF
574 INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), &
575 RECVTYPE, COMM, IERROR
576 EXTERNAL MPI_ALLGATHERV
577 CALL MPI_ALLGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, &
578 RECVCOUNTS, DISPLS, RECVTYPE, COMM, IERROR)
579 END SUBROUTINE MPI_AlLGATHERV_dp_1D
580
581 SUBROUTINE MPI_ALLGATHERV_dp_2D(SENDBUF, SENDCOUNT, SENDTYPE, &
582 RECVBUF, RECVCOUNTS, DISPLS, RECVTYPE, COMM, IERROR)
583 REAL(kind=dp),dimension(:,:) :: SENDBUF, RECVBUF
584 INTEGER SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), &
585 RECVTYPE, COMM, IERROR
586 EXTERNAL MPI_ALLGATHERV
587 CALL MPI_ALLGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, &
588 RECVCOUNTS, DISPLS, RECVTYPE, COMM, IERROR)
589 END SUBROUTINE MPI_ALLGATHERV_DP_2D
590 !--------------------------end MPI_ALLGATHERV----------------------->
591
592 SUBROUTINE MPI_ALLGATHER_DP(SENDBUF, SENDCOUNT, SENDTYPE, &
593 RECVBUF, RECVCOUNT, RECVTYPE, COMM, IERROR)
594 real(kind=dp) :: SENDBUF
595 real(kind=dp), dimension(:) :: RECVBUF
596 INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR
597 EXTERNAL MPI_ALLGATHER
598 CALL MPI_ALLGATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, &
599 RECVCOUNT, RECVTYPE, COMM, IERROR)
600 END SUBROUTINE MPI_ALLGATHER_DP
601
602 SUBROUTINE MPI_ALLGATHER_DP_1D(SENDBUF, SENDCOUNT, SENDTYPE, &
603 RECVBUF, RECVCOUNT, RECVTYPE, COMM, IERROR)
604 real(kind=dp),dimension(:) :: SENDBUF, RECVBUF
605 INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR
606 EXTERNAL MPI_ALLGATHER
607 CALL MPI_ALLGATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, &
608 RECVCOUNT, RECVTYPE, COMM, IERROR)
609 END SUBROUTINE MPI_ALLGATHER_DP_1D
610
611 SUBROUTINE MPI_ALLGATHER_DP_2D(SENDBUF, SENDCOUNT, SENDTYPE, &
612 RECVBUF, RECVCOUNT, RECVTYPE, COMM, IERROR)
613 real(kind=dp),dimension(:,:) :: SENDBUF, RECVBUF
614 INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR
615 EXTERNAL MPI_ALLGATHER
616 CALL MPI_ALLGATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, &
617 RECVCOUNT, RECVTYPE, COMM, IERROR)
618 END SUBROUTINE MPI_ALLGATHER_DP_2D
619
620 SUBROUTINE MPI_ALLGATHER_INT(SENDBUF, SENDCOUNT, SENDTYPE, &
621 RECVBUF, RECVCOUNT, RECVTYPE, COMM, IERROR)
622 integer :: SENDBUF
623 integer,dimension(:) :: RECVBUF
624 INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR
625 EXTERNAL MPI_ALLGATHER
626 CALL MPI_ALLGATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, &
627 RECVCOUNT, RECVTYPE, COMM, IERROR)
628 END SUBROUTINE MPI_ALLGATHER_INT
629
630 SUBROUTINE MPI_ALLGATHER_INT_1D(SENDBUF, SENDCOUNT, SENDTYPE, &
631 RECVBUF, RECVCOUNT, RECVTYPE, COMM, IERROR)
632 integer,dimension(:) :: SENDBUF, RECVBUF
633 INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR
634 EXTERNAL MPI_ALLGATHER
635 CALL MPI_ALLGATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, &
636 RECVCOUNT, RECVTYPE, COMM, IERROR)
637 END SUBROUTINE MPI_ALLGATHER_INT_1D
638
639 SUBROUTINE MPI_ALLGATHER_INT_2D(SENDBUF, SENDCOUNT, SENDTYPE, &
640 RECVBUF, RECVCOUNT, RECVTYPE, COMM, IERROR)
641 integer,dimension(:,:) :: SENDBUF, RECVBUF
642 INTEGER SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR
643 EXTERNAL MPI_ALLGATHER
644 CALL MPI_ALLGATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, &
645 RECVCOUNT, RECVTYPE, COMM, IERROR)
646 END SUBROUTINE MPI_ALLGATHER_INT_2D
647 !-----------------------END MPI_ALLGATHER---------------------------
648
649 #endif
650 end module oopseMPI