ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/oopseMPI_module.F90
Revision: 858
Committed: Fri Nov 7 21:46:56 2003 UTC (20 years, 8 months ago) by chuckv
File size: 24798 byte(s)
Log Message:
Added support for compiling fortran without use of mpich modules. We use mpif.h instead.:

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