1 | ! |
---|
2 | ! |
---|
3 | ! (C) 1993 by Argonne National Laboratory and Mississipi State University. |
---|
4 | ! All rights reserved. See COPYRIGHT in top-level directory. |
---|
5 | ! |
---|
6 | ! |
---|
7 | ! user include file for MPI programs, with no dependencies |
---|
8 | ! |
---|
9 | ! It really is not possible to make a perfect include file that can |
---|
10 | ! be used by both F77 and F90 compilers, but this is close. We have removed |
---|
11 | ! continuation lines (allows free form input in F90); systems whose |
---|
12 | ! Fortran compilers support ! instead of just C or * for comments can |
---|
13 | ! globally replace a C in the first column with !; the resulting file |
---|
14 | ! should work for both Fortran 77 and Fortran 90. |
---|
15 | ! |
---|
16 | ! If your Fortran compiler supports ! for comments, you can run this |
---|
17 | ! through sed with |
---|
18 | ! sed -e 's/^C/\!/g' |
---|
19 | ! |
---|
20 | ! We have also removed the use of contractions (involving the single quote) |
---|
21 | ! character because some users use .F instead of .f files (to invoke the |
---|
22 | ! cpp preprocessor) and further, their preprocessor is determined to find |
---|
23 | ! matching single quote pairs (and probably double quotes; given the |
---|
24 | ! different rules in C and Fortran, this sounds like a disaster). Rather than |
---|
25 | ! take the position that the poor users should get a better system, we |
---|
26 | ! have removed the text that caused problems. Of course, the users SHOULD |
---|
27 | ! get a better system... |
---|
28 | ! |
---|
29 | ! return codes |
---|
30 | INTEGER MPI_SUCCESS,MPI_ERR_BUFFER,MPI_ERR_COUNT,MPI_ERR_TYPE |
---|
31 | INTEGER MPI_ERR_TAG,MPI_ERR_COMM,MPI_ERR_RANK,MPI_ERR_ROOT |
---|
32 | INTEGER MPI_ERR_GROUP |
---|
33 | INTEGER MPI_ERR_OP,MPI_ERR_TOPOLOGY,MPI_ERR_DIMS,MPI_ERR_ARG |
---|
34 | INTEGER MPI_ERR_UNKNOWN,MPI_ERR_TRUNCATE,MPI_ERR_OTHER |
---|
35 | INTEGER MPI_ERR_INTERN,MPI_ERR_IN_STATUS,MPI_ERR_PENDING |
---|
36 | INTEGER MPI_ERR_REQUEST, MPI_ERR_LASTCODE |
---|
37 | PARAMETER (MPI_SUCCESS=0,MPI_ERR_BUFFER=1,MPI_ERR_COUNT=2) |
---|
38 | PARAMETER (MPI_ERR_TYPE=3,MPI_ERR_TAG=4,MPI_ERR_COMM=5) |
---|
39 | PARAMETER (MPI_ERR_RANK=6,MPI_ERR_ROOT=7,MPI_ERR_GROUP=8) |
---|
40 | PARAMETER (MPI_ERR_OP=9,MPI_ERR_TOPOLOGY=10,MPI_ERR_DIMS=11) |
---|
41 | PARAMETER (MPI_ERR_ARG=12,MPI_ERR_UNKNOWN=13) |
---|
42 | PARAMETER (MPI_ERR_TRUNCATE=14,MPI_ERR_OTHER=15) |
---|
43 | PARAMETER (MPI_ERR_INTERN=16,MPI_ERR_IN_STATUS=17) |
---|
44 | PARAMETER (MPI_ERR_PENDING=18,MPI_ERR_REQUEST=19) |
---|
45 | PARAMETER (MPI_ERR_LASTCODE=1073741823) |
---|
46 | ! |
---|
47 | INTEGER MPI_UNDEFINED |
---|
48 | parameter (MPI_UNDEFINED = (-32766)) |
---|
49 | ! |
---|
50 | INTEGER MPI_GRAPH, MPI_CART |
---|
51 | PARAMETER (MPI_GRAPH = 1, MPI_CART = 2) |
---|
52 | INTEGER MPI_PROC_NULL |
---|
53 | PARAMETER ( MPI_PROC_NULL = (-1) ) |
---|
54 | ! |
---|
55 | INTEGER MPI_BSEND_OVERHEAD |
---|
56 | PARAMETER ( MPI_BSEND_OVERHEAD = 512 ) |
---|
57 | |
---|
58 | INTEGER MPI_SOURCE, MPI_TAG, MPI_ERROR |
---|
59 | PARAMETER(MPI_SOURCE=2, MPI_TAG=3, MPI_ERROR=4) |
---|
60 | INTEGER MPI_STATUS_SIZE |
---|
61 | PARAMETER (MPI_STATUS_SIZE=4) |
---|
62 | INTEGER MPI_MAX_PROCESSOR_NAME, MPI_MAX_ERROR_STRING |
---|
63 | PARAMETER (MPI_MAX_PROCESSOR_NAME=256) |
---|
64 | PARAMETER (MPI_MAX_ERROR_STRING=512) |
---|
65 | INTEGER MPI_MAX_NAME_STRING |
---|
66 | PARAMETER (MPI_MAX_NAME_STRING=63) |
---|
67 | ! |
---|
68 | INTEGER MPI_COMM_NULL |
---|
69 | PARAMETER (MPI_COMM_NULL=0) |
---|
70 | ! |
---|
71 | INTEGER MPI_DATATYPE_NULL |
---|
72 | PARAMETER (MPI_DATATYPE_NULL = 0) |
---|
73 | |
---|
74 | INTEGER MPI_ERRHANDLER_NULL |
---|
75 | PARAMETER (MPI_ERRHANDLER_NULL = 0) |
---|
76 | |
---|
77 | INTEGER MPI_GROUP_NULL |
---|
78 | PARAMETER (MPI_GROUP_NULL = 0) |
---|
79 | |
---|
80 | INTEGER MPI_KEYVAL_INVALID |
---|
81 | PARAMETER (MPI_KEYVAL_INVALID = 0) |
---|
82 | |
---|
83 | INTEGER MPI_REQUEST_NULL |
---|
84 | PARAMETER (MPI_REQUEST_NULL = 0) |
---|
85 | ! |
---|
86 | INTEGER MPI_IDENT, MPI_CONGRUENT, MPI_SIMILAR, MPI_UNEQUAL |
---|
87 | PARAMETER (MPI_IDENT=0, MPI_CONGRUENT=1, MPI_SIMILAR=2) |
---|
88 | PARAMETER (MPI_UNEQUAL=3) |
---|
89 | ! |
---|
90 | ! MPI_BOTTOM needs to be a known address; here we put it at the |
---|
91 | ! beginning of the common block. The point-to-point and collective |
---|
92 | ! routines know about MPI_BOTTOM, but MPI_TYPE_STRUCT as yet does not. |
---|
93 | ! |
---|
94 | ! MPI_STATUS_IGNORE and MPI_STATUSES_IGNORE are similar objects |
---|
95 | ! Until the underlying MPI library implements the C version of these |
---|
96 | ! (a null pointer), these are declared as arrays of MPI_STATUS_SIZE |
---|
97 | ! |
---|
98 | ! The types MPI_INTEGER1,2,4 and MPI_REAL4,8 are OPTIONAL. |
---|
99 | ! Their values are zero if they are not available. Note that |
---|
100 | ! using these reduces the portability of code (though may enhance |
---|
101 | ! portability between Crays and other systems) |
---|
102 | ! |
---|
103 | INTEGER MPI_TAG_UB, MPI_HOST, MPI_IO |
---|
104 | INTEGER MPI_BOTTOM |
---|
105 | INTEGER MPI_STATUS_IGNORE(MPI_STATUS_SIZE) |
---|
106 | INTEGER MPI_STATUSES_IGNORE(MPI_STATUS_SIZE) |
---|
107 | INTEGER MPI_INTEGER, MPI_REAL, MPI_DOUBLE_PRECISION |
---|
108 | INTEGER MPI_COMPLEX, MPI_DOUBLE_COMPLEX,MPI_LOGICAL |
---|
109 | INTEGER MPI_CHARACTER, MPI_BYTE, MPI_2INTEGER, MPI_2REAL |
---|
110 | INTEGER MPI_2DOUBLE_PRECISION, MPI_2COMPLEX, MPI_2DOUBLE_COMPLEX |
---|
111 | INTEGER MPI_UB, MPI_LB |
---|
112 | INTEGER MPI_PACKED, MPI_WTIME_IS_GLOBAL |
---|
113 | INTEGER MPI_COMM_WORLD, MPI_COMM_SELF, MPI_GROUP_EMPTY |
---|
114 | INTEGER MPI_SUM, MPI_MAX, MPI_MIN, MPI_PROD, MPI_LAND, MPI_BAND |
---|
115 | INTEGER MPI_LOR, MPI_BOR, MPI_LXOR, MPI_BXOR, MPI_MINLOC |
---|
116 | INTEGER MPI_MAXLOC |
---|
117 | INTEGER MPI_OP_NULL |
---|
118 | INTEGER MPI_ERRORS_ARE_FATAL, MPI_ERRORS_RETURN |
---|
119 | ! |
---|
120 | PARAMETER (MPI_ERRORS_ARE_FATAL=119) |
---|
121 | PARAMETER (MPI_ERRORS_RETURN=120) |
---|
122 | ! |
---|
123 | PARAMETER (MPI_COMPLEX=23,MPI_DOUBLE_COMPLEX=24,MPI_LOGICAL=25) |
---|
124 | PARAMETER (MPI_REAL=26,MPI_DOUBLE_PRECISION=27,MPI_INTEGER=28) |
---|
125 | PARAMETER (MPI_2INTEGER=29,MPI_2COMPLEX=30,MPI_2DOUBLE_COMPLEX=31) |
---|
126 | PARAMETER (MPI_2REAL=32,MPI_2DOUBLE_PRECISION=33,MPI_CHARACTER=1) |
---|
127 | PARAMETER (MPI_BYTE=3,MPI_UB=16,MPI_LB=15,MPI_PACKED=14) |
---|
128 | |
---|
129 | INTEGER MPI_ORDER_C, MPI_ORDER_FORTRAN |
---|
130 | PARAMETER (MPI_ORDER_C=56, MPI_ORDER_FORTRAN=57) |
---|
131 | INTEGER MPI_DISTRIBUTE_BLOCK, MPI_DISTRIBUTE_CYCLIC |
---|
132 | INTEGER MPI_DISTRIBUTE_NONE, MPI_DISTRIBUTE_DFLT_DARG |
---|
133 | PARAMETER (MPI_DISTRIBUTE_BLOCK=121, MPI_DISTRIBUTE_CYCLIC=122) |
---|
134 | PARAMETER (MPI_DISTRIBUTE_NONE=123) |
---|
135 | PARAMETER (MPI_DISTRIBUTE_DFLT_DARG=-49767) |
---|
136 | INTEGER MPI_MAX_INFO_KEY, MPI_MAX_INFO_VAL |
---|
137 | PARAMETER (MPI_MAX_INFO_KEY=255, MPI_MAX_INFO_VAL=1024) |
---|
138 | INTEGER MPI_INFO_NULL |
---|
139 | PARAMETER (MPI_INFO_NULL=0) |
---|
140 | |
---|
141 | ! |
---|
142 | ! Optional Fortran Types. Configure attempts to determine these. |
---|
143 | ! |
---|
144 | INTEGER MPI_INTEGER1, MPI_INTEGER2, MPI_INTEGER4, MPI_INTEGER8 |
---|
145 | INTEGER MPI_INTEGER16 |
---|
146 | INTEGER MPI_REAL4, MPI_REAL8, MPI_REAL16 |
---|
147 | INTEGER MPI_COMPLEX8, MPI_COMPLEX16, MPI_COMPLEX32 |
---|
148 | PARAMETER (MPI_INTEGER1=1,MPI_INTEGER2=4) |
---|
149 | PARAMETER (MPI_INTEGER4=6) |
---|
150 | PARAMETER (MPI_INTEGER8=13) |
---|
151 | PARAMETER (MPI_INTEGER16=0) |
---|
152 | PARAMETER (MPI_REAL4=10) |
---|
153 | PARAMETER (MPI_REAL8=11) |
---|
154 | PARAMETER (MPI_REAL16=0) |
---|
155 | PARAMETER (MPI_COMPLEX8=23) |
---|
156 | PARAMETER (MPI_COMPLEX16=24) |
---|
157 | PARAMETER (MPI_COMPLEX32=0) |
---|
158 | ! |
---|
159 | ! This is now handled with either the "pointer" extension or this same |
---|
160 | ! code, appended at the end. |
---|
161 | ! COMMON /MPIPRIV/ MPI_BOTTOM,MPI_STATUS_IGNORE,MPI_STATUSES_IGNORE |
---|
162 | !C |
---|
163 | !C Without this save, some Fortran implementations may make the common |
---|
164 | !C dynamic! |
---|
165 | !C |
---|
166 | !C For a Fortran90 module, we might replace /MPIPRIV/ with a simple |
---|
167 | !C SAVE MPI_BOTTOM |
---|
168 | !C |
---|
169 | ! SAVE /MPIPRIV/ |
---|
170 | ! |
---|
171 | PARAMETER (MPI_MAX=100,MPI_MIN=101,MPI_SUM=102,MPI_PROD=103) |
---|
172 | PARAMETER (MPI_LAND=104,MPI_BAND=105,MPI_LOR=106,MPI_BOR=107) |
---|
173 | PARAMETER (MPI_LXOR=108,MPI_BXOR=109,MPI_MINLOC=110) |
---|
174 | PARAMETER (MPI_MAXLOC=111, MPI_OP_NULL=0) |
---|
175 | ! |
---|
176 | PARAMETER (MPI_GROUP_EMPTY=90,MPI_COMM_WORLD=91,MPI_COMM_SELF=92) |
---|
177 | PARAMETER (MPI_TAG_UB=80,MPI_HOST=82,MPI_IO=84) |
---|
178 | PARAMETER (MPI_WTIME_IS_GLOBAL=86) |
---|
179 | ! |
---|
180 | INTEGER MPI_ANY_SOURCE |
---|
181 | PARAMETER (MPI_ANY_SOURCE = (-2)) |
---|
182 | INTEGER MPI_ANY_TAG |
---|
183 | PARAMETER (MPI_ANY_TAG = (-1)) |
---|
184 | ! |
---|
185 | INTEGER MPI_VERSION, MPI_SUBVERSION |
---|
186 | PARAMETER (MPI_VERSION = 1, MPI_SUBVERSION = 2) |
---|
187 | ! |
---|
188 | ! There are additional MPI-2 constants |
---|
189 | INTEGER MPI_ADDRESS_KIND, MPI_OFFSET_KIND |
---|
190 | PARAMETER (MPI_ADDRESS_KIND=4) |
---|
191 | PARAMETER (MPI_OFFSET_KIND=4) |
---|
192 | ! |
---|
193 | ! All other MPI routines are subroutines |
---|
194 | ! This may cause some Fortran compilers to complain about defined and |
---|
195 | ! not used. Such compilers should be improved. |
---|
196 | ! |
---|
197 | ! Some Fortran compilers will not link programs that contain |
---|
198 | ! external statements to routines that are not provided, even if |
---|
199 | ! the routine is never called. Remove PMPI_WTIME and PMPI_WTICK |
---|
200 | ! if you have trouble with them. |
---|
201 | ! |
---|
202 | DOUBLE PRECISION MPI_WTIME, MPI_WTICK,PMPI_WTIME,PMPI_WTICK |
---|
203 | EXTERNAL MPI_WTIME, MPI_WTICK,PMPI_WTIME,PMPI_WTICK |
---|
204 | ! |
---|
205 | ! The attribute copy/delete subroutines are symbols that can be passed |
---|
206 | ! to MPI routines |
---|
207 | ! |
---|
208 | EXTERNAL MPI_NULL_COPY_FN, MPI_NULL_DELETE_FN, MPI_DUP_FN |
---|
209 | COMMON /MPIPRIV/ MPI_BOTTOM,MPI_STATUS_IGNORE,MPI_STATUSES_IGNORE |
---|
210 | ! |
---|
211 | ! Without this save, some Fortran implementations may make the common |
---|
212 | ! dynamic! |
---|
213 | ! |
---|
214 | ! For a Fortran90 module, we might replace /MPIPRIV/ with a simple |
---|
215 | ! SAVE MPI_BOTTOM |
---|
216 | ! |
---|
217 | SAVE /MPIPRIV/ |
---|
218 | ! |
---|
219 | ! $Id: mpiof.h.in,v 1.3 1999/08/06 18:33:09 thakur Exp $ |
---|
220 | ! |
---|
221 | ! Copyright (C) 1997 University of Chicago. |
---|
222 | ! See COPYRIGHT notice in top-level directory. |
---|
223 | ! |
---|
224 | ! |
---|
225 | ! user include file for Fortran MPI-IO programs |
---|
226 | ! |
---|
227 | INTEGER MPI_MODE_RDONLY, MPI_MODE_RDWR, MPI_MODE_WRONLY |
---|
228 | INTEGER MPI_MODE_DELETE_ON_CLOSE, MPI_MODE_UNIQUE_OPEN |
---|
229 | INTEGER MPI_MODE_CREATE, MPI_MODE_EXCL |
---|
230 | INTEGER MPI_MODE_APPEND, MPI_MODE_SEQUENTIAL |
---|
231 | PARAMETER (MPI_MODE_RDONLY=2, MPI_MODE_RDWR=8, MPI_MODE_WRONLY=4) |
---|
232 | PARAMETER (MPI_MODE_CREATE=1, MPI_MODE_DELETE_ON_CLOSE=16) |
---|
233 | PARAMETER (MPI_MODE_UNIQUE_OPEN=32, MPI_MODE_EXCL=64) |
---|
234 | PARAMETER (MPI_MODE_APPEND=128, MPI_MODE_SEQUENTIAL=256) |
---|
235 | ! |
---|
236 | INTEGER MPI_FILE_NULL |
---|
237 | PARAMETER (MPI_FILE_NULL=0) |
---|
238 | ! |
---|
239 | INTEGER MPI_MAX_DATAREP_STRING |
---|
240 | PARAMETER (MPI_MAX_DATAREP_STRING=128) |
---|
241 | ! |
---|
242 | INTEGER MPI_SEEK_SET, MPI_SEEK_CUR, MPI_SEEK_END |
---|
243 | PARAMETER (MPI_SEEK_SET=600, MPI_SEEK_CUR=602, MPI_SEEK_END=604) |
---|
244 | ! |
---|
245 | INTEGER MPIO_REQUEST_NULL |
---|
246 | PARAMETER (MPIO_REQUEST_NULL=0) |
---|
247 | ! |
---|
248 | integer*8 MPI_DISPLACEMENT_CURRENT |
---|
249 | PARAMETER (MPI_DISPLACEMENT_CURRENT=-54278278) |
---|
250 | ! |
---|
251 | ! |
---|
252 | |
---|
253 | |
---|
254 | |
---|
255 | |
---|
256 | |
---|
257 | |
---|
258 | |
---|
259 | ! |
---|
260 | ! |
---|
261 | ! |
---|
262 | ! |
---|
263 | ! |
---|