-
Notifications
You must be signed in to change notification settings - Fork 39
/
MpiAuxRoutines.F90
126 lines (93 loc) · 3.34 KB
/
MpiAuxRoutines.F90
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! !
! FILE: HdfRoutines.F90 !
! CONTAINS: subroutines MPI* !
! !
! PURPOSE: Wrappers for MPI Routines !
! !
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
subroutine MpiBcastInt(n)
use mpih
implicit none
integer, intent(in) :: n
call MPI_BCAST(n,1,MPI_INTEGER,0,MPI_COMM_WORLD,ierr)
return
end subroutine MpiBcastInt
!==============================================================================
subroutine MpiBcastReal(n)
use mpih
implicit none
real, intent(in) :: n
call MPI_BCAST(n,1,MDP,0,MPI_COMM_WORLD,ierr)
return
end subroutine MpiBcastReal
!==============================================================================
subroutine MpiBarrier
use mpih
implicit none
call MPI_BARRIER(MPI_COMM_WORLD,ierr)
return
end subroutine MpiBarrier
!==============================================================================
subroutine MpiSumRealScalar(var)
use mpih
implicit none
real, intent(inout) :: var
real :: buf
call MPI_REDUCE(var,buf,1, &
MPI_DOUBLE_PRECISION,MPI_SUM,0,MPI_COMM_WORLD,ierr)
var = buf
return
end subroutine MpiSumRealScalar
!==============================================================================
subroutine MpiMaxRealScalar(var)
use mpih
implicit none
real, intent(inout) :: var
real :: buf
call MPI_REDUCE(var,buf,1, &
MPI_DOUBLE_PRECISION,MPI_MAX,0,MPI_COMM_WORLD,ierr)
var = buf
return
end subroutine MpiMaxRealScalar
!==============================================================================
subroutine MpiAllMaxRealScalar(var)
use mpih
implicit none
real, intent(inout) :: var
real :: buf
call MPI_ALLREDUCE(var,buf,1, &
MPI_DOUBLE_PRECISION,MPI_MAX,MPI_COMM_WORLD,ierr)
var = buf
return
end subroutine MpiAllMaxRealScalar
!==============================================================================
subroutine MpiMinRealScalar(var)
use mpih
implicit none
real, intent(inout) :: var
real :: buf
call MPI_REDUCE(var,buf,1, &
MPI_DOUBLE_PRECISION,MPI_MIN,0,MPI_COMM_WORLD,ierr)
var = buf
return
end subroutine MpiMinRealScalar
!==============================================================================
subroutine MpiSumReal1D(var,sz)
use mpih
implicit none
integer, intent(in) :: sz
real, intent(inout), dimension(1:sz) :: var
real, dimension(1:sz) :: buf
call MPI_REDUCE(var,buf,sz, &
MPI_DOUBLE_PRECISION,MPI_SUM,0,MPI_COMM_WORLD,ierr)
var = buf
return
end subroutine MpiSumReal1D
!==============================================================================
subroutine MpiAbort
use mpih
implicit none
call MPI_ABORT(MPI_COMM_WORLD,1,ierr)
return
end subroutine MpiAbort