00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef MPI_H_INCLUDED
00016 #define MPI_H_INCLUDED
00017
00018 #if defined(__cplusplus)
00019 extern "C" {
00020 #endif
00021
00022
00023
00024
00025
00026
00027 #define MPI_BOTTOM ((MPI_Aint)0)
00028
00029 typedef long MPI_Aint;
00030 typedef unsigned int MPI_Request;
00031 typedef unsigned int MPI_Group;
00032 typedef unsigned int MPI_Comm;
00033 typedef unsigned int MPI_Errhandler;
00034 typedef unsigned int MPI_Op;
00035 typedef unsigned int MPI_Datatype;
00036
00037 typedef struct {
00038 int MPI_SOURCE;
00039 int MPI_TAG;
00040 int MPI_ERROR;
00041 int size;
00042 int reserved[2];
00043 } MPI_Status;
00044
00045 enum {
00046 MPI_COMM_NULL = 0,
00047 MPI_COMM_WORLD = 1,
00048 MPI_COMM_SELF = 2
00049 };
00050
00051 enum {
00052 MPI_ERRHANDLER_NULL = 0,
00053 MPI_ERRORS_ARE_FATAL = 1,
00054 MPI_ERRORS_RETURN = 2
00055 };
00056
00057 enum {
00058 MPI_GROUP_NULL = 0,
00059 MPI_GROUP_EMPTY = 1
00060 };
00061
00062 enum {
00063 MPI_REQUEST_NULL = 0
00064 };
00065
00066 enum {
00067 MPI_OP_NULL = 0,
00068 MPI_MAX = 1,
00069 MPI_MIN = 2,
00070 MPI_SUM = 3,
00071 MPI_PROD = 4,
00072 MPI_LAND = 5,
00073 MPI_BAND = 6,
00074 MPI_LOR = 7,
00075 MPI_BOR = 8,
00076 MPI_LXOR = 9,
00077 MPI_BXOR = 10,
00078 MPI_MAXLOC = 11,
00079 MPI_MINLOC = 12
00080 };
00081
00082 enum {
00083 MPI_DATATYPE_NULL = 0,
00084
00085 MPI_CHAR = 1,
00086 MPI_SHORT = 2,
00087 MPI_INT = 3,
00088 MPI_LONG = 4,
00089 MPI_UNSIGNED_CHAR = 5,
00090 MPI_UNSIGNED_SHORT = 6,
00091 MPI_UNSIGNED = 7,
00092 MPI_UNSIGNED_LONG = 8,
00093 MPI_FLOAT = 9,
00094 MPI_DOUBLE = 10,
00095 MPI_LONG_DOUBLE = 11,
00096 MPI_LONG_LONG = 12,
00097
00098 MPI_INTEGER = 13,
00099 MPI_REAL = 14,
00100 MPI_DOUBLE_PRECISION = 15,
00101 MPI_COMPLEX = 16,
00102 MPI_DOUBLE_COMPLEX = 17,
00103 MPI_LOGICAL = 18,
00104 MPI_CHARACTER = 19,
00105 MPI_INTEGER1 = 20,
00106 MPI_INTEGER2 = 21,
00107 MPI_INTEGER4 = 22,
00108 MPI_INTEGER8 = 23,
00109 MPI_REAL4 = 24,
00110 MPI_REAL8 = 25,
00111 MPI_REAL16 = 26,
00112
00113 MPI_BYTE = 27,
00114 MPI_PACKED = 28,
00115 MPI_UB = 29,
00116 MPI_LB = 30,
00117
00118 MPI_FLOAT_INT = 31,
00119 MPI_DOUBLE_INT = 32,
00120 MPI_LONG_INT = 33,
00121 MPI_2INT = 34,
00122 MPI_SHORT_INT = 35,
00123 MPI_LONG_DOUBLE_INT = 36,
00124
00125 MPI_2REAL = 37,
00126 MPI_2DOUBLE_PRECISION = 38,
00127 MPI_2INTEGER = 39,
00128 _MPI_SGI_TYPE_LAST
00129 };
00130
00131 #define MPI_LONG_LONG_INT MPI_LONG_LONG
00132
00133 enum {
00134 MPI_SUCCESS = 0,
00135
00136
00137
00138 MPI_ERR_BUFFER = 1,
00139 MPI_ERR_COUNT = 2,
00140 MPI_ERR_TYPE = 3,
00141 MPI_ERR_TAG = 4,
00142 MPI_ERR_COMM = 5,
00143 MPI_ERR_RANK = 6,
00144 MPI_ERR_REQUEST = 7,
00145 MPI_ERR_ROOT = 8,
00146 MPI_ERR_GROUP = 9,
00147 MPI_ERR_OP = 10,
00148 MPI_ERR_TOPOLOGY = 11,
00149 MPI_ERR_DIMS = 12,
00150 MPI_ERR_ARG = 13,
00151 MPI_ERR_UNKNOWN = 14,
00152 MPI_ERR_TRUNCATE = 15,
00153 MPI_ERR_OTHER = 16,
00154 MPI_ERR_INTERN = 17,
00155 MPI_ERR_IN_STATUS = 18,
00156 MPI_ERR_PENDING = 19,
00157
00158
00159
00160
00161
00162
00163 MPI_ERR_ACCESS = 28,
00164 MPI_ERR_AMODE = 29,
00165 MPI_ERR_ASSERT = 30,
00166 MPI_ERR_BAD_FILE = 31,
00167 MPI_ERR_BASE = 32,
00168 MPI_ERR_CONVERSION = 33,
00169 MPI_ERR_DISP = 34,
00170 MPI_ERR_DUP_DATAREP = 35,
00171 MPI_ERR_FILE_EXISTS = 36,
00172 MPI_ERR_FILE_IN_USE = 37,
00173 MPI_ERR_FILE = 38,
00174 MPI_ERR_INFO_KEY = 39,
00175 MPI_ERR_INFO_NOKEY = 40,
00176 MPI_ERR_INFO_VALUE = 41,
00177 MPI_ERR_INFO = 42,
00178 MPI_ERR_IO = 43,
00179 MPI_ERR_KEYVAL = 44,
00180 MPI_ERR_LOCKTYPE = 45,
00181 MPI_ERR_NAME = 46,
00182 MPI_ERR_NO_MEM = 47,
00183 MPI_ERR_NOT_SAME = 48,
00184 MPI_ERR_NO_SPACE = 49,
00185 MPI_ERR_NO_SUCH_FILE = 50,
00186 MPI_ERR_PORT = 51,
00187 MPI_ERR_QUOTA = 52,
00188 MPI_ERR_READ_ONLY = 53,
00189 MPI_ERR_RMA_CONFLICT = 54,
00190 MPI_ERR_RMA_SYNC = 55,
00191 MPI_ERR_SERVICE = 56,
00192 MPI_ERR_SIZE = 57,
00193 MPI_ERR_SPAWN = 58,
00194 MPI_ERR_UNSUPPORTED_DATAREP = 59,
00195 MPI_ERR_UNSUPPORTED_OPERATION = 60,
00196 MPI_ERR_WIN = 61,
00197 MPI_ERR_LASTCODE = 100
00198 };
00199
00200 enum {
00201 MPI_KEYVAL_INVALID = 0,
00202 MPI_TAG_UB = 1,
00203 MPI_HOST = 2,
00204 MPI_IO = 3,
00205 MPI_WTIME_IS_GLOBAL = 4
00206 };
00207
00208 enum {
00209 MPI_IDENT = 0,
00210 MPI_CONGRUENT = 1,
00211 MPI_SIMILAR = 2,
00212 MPI_UNEQUAL = 3
00213 };
00214
00215 enum {
00216 MPI_GRAPH = 1,
00217 MPI_CART = 2
00218 };
00219
00220 enum {
00221 MPI_UNDEFINED = -3,
00222 MPI_ANY_SOURCE = -2,
00223 MPI_PROC_NULL = -1
00224 };
00225
00226 enum {
00227 MPI_ANY_TAG = -1
00228 };
00229
00230 enum {
00231 MPI_BSEND_OVERHEAD = 32
00232 };
00233
00234 enum {
00235 MPI_MAX_PROCESSOR_NAME = 256
00236 };
00237
00238 enum {
00239 MPI_MAX_ERROR_STRING = 256
00240 };
00241
00242
00243 typedef int MPI_Copy_function(MPI_Comm, int, void *, void *, void *, int *);
00244 typedef int MPI_Delete_function(MPI_Comm, int, void *, void *);
00245 typedef void MPI_Handler_function(MPI_Comm *, int *, ...);
00246 typedef void MPI_User_function(void *, void *, int *, MPI_Datatype *);
00247
00248 MPI_Copy_function MPI_NULL_COPY_FN, MPI_DUP_FN;
00249 MPI_Delete_function MPI_NULL_DELETE_FN;
00250
00251
00252
00253
00254
00255
00256
00257
00258
00259 int MPI_Send(void *, int, MPI_Datatype, int, int, MPI_Comm);
00260 int PMPI_Send(void *, int, MPI_Datatype, int, int, MPI_Comm);
00261
00262 int MPI_Recv(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Status *);
00263 int PMPI_Recv(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Status *);
00264
00265 int MPI_Get_count(MPI_Status *, MPI_Datatype, int *);
00266 int PMPI_Get_count(MPI_Status *, MPI_Datatype, int *);
00267
00268
00269
00270 int MPI_Bsend(void *, int, MPI_Datatype, int, int, MPI_Comm);
00271 int PMPI_Bsend(void *, int, MPI_Datatype, int, int, MPI_Comm);
00272
00273 int MPI_Ssend(void *, int, MPI_Datatype, int, int, MPI_Comm);
00274 int PMPI_Ssend(void *, int, MPI_Datatype, int, int, MPI_Comm);
00275
00276 int MPI_Rsend(void *, int, MPI_Datatype, int, int, MPI_Comm);
00277 int PMPI_Rsend(void *, int, MPI_Datatype, int, int, MPI_Comm);
00278
00279
00280
00281 int MPI_Buffer_attach(void *, int);
00282 int PMPI_Buffer_attach(void *, int);
00283
00284 int MPI_Buffer_detach(void *, int *);
00285 int PMPI_Buffer_detach(void *, int *);
00286
00287
00288
00289 int MPI_Isend(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
00290 int PMPI_Isend(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
00291
00292 int MPI_Ibsend(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
00293 int PMPI_Ibsend(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
00294
00295 int MPI_Issend(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
00296 int PMPI_Issend(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
00297
00298 int MPI_Irsend(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
00299 int PMPI_Irsend(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
00300
00301 int MPI_Irecv(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
00302 int PMPI_Irecv(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
00303
00304 int MPI_Wait(MPI_Request *, MPI_Status *);
00305 int PMPI_Wait(MPI_Request *, MPI_Status *);
00306
00307 int MPI_Test(MPI_Request *, int *, MPI_Status *);
00308 int PMPI_Test(MPI_Request *, int *, MPI_Status *);
00309
00310 int MPI_Request_free(MPI_Request *);
00311 int PMPI_Request_free(MPI_Request *);
00312
00313 int MPI_Waitany(int, MPI_Request *, int *, MPI_Status *);
00314 int PMPI_Waitany(int, MPI_Request *, int *, MPI_Status *);
00315
00316 int MPI_Testany(int, MPI_Request *, int *, int *, MPI_Status *);
00317 int PMPI_Testany(int, MPI_Request *, int *, int *, MPI_Status *);
00318
00319 int MPI_Waitall(int, MPI_Request *, MPI_Status *);
00320 int PMPI_Waitall(int, MPI_Request *, MPI_Status *);
00321
00322 int MPI_Testall(int, MPI_Request *, int *, MPI_Status *);
00323 int PMPI_Testall(int, MPI_Request *, int *, MPI_Status *);
00324
00325 int MPI_Waitsome(int, MPI_Request *, int *, int *, MPI_Status *);
00326 int PMPI_Waitsome(int, MPI_Request *, int *, int *, MPI_Status *);
00327
00328 int MPI_Testsome(int, MPI_Request *, int *, int *, MPI_Status *);
00329 int PMPI_Testsome(int, MPI_Request *, int *, int *, MPI_Status *);
00330
00331
00332
00333 int MPI_Iprobe(int, int, MPI_Comm, int *, MPI_Status *);
00334 int PMPI_Iprobe(int, int, MPI_Comm, int *, MPI_Status *);
00335
00336 int MPI_Probe(int, int, MPI_Comm, MPI_Status *);
00337 int PMPI_Probe(int, int, MPI_Comm, MPI_Status *);
00338
00339 int MPI_Cancel(MPI_Request *);
00340 int PMPI_Cancel(MPI_Request *);
00341
00342 int MPI_Test_cancelled(MPI_Status *, int *);
00343 int PMPI_Test_cancelled(MPI_Status *, int *);
00344
00345
00346
00347 int MPI_Send_init(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
00348 int PMPI_Send_init(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
00349
00350 int MPI_Bsend_init(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
00351 int PMPI_Bsend_init(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
00352
00353 int MPI_Ssend_init(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
00354 int PMPI_Ssend_init(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
00355
00356 int MPI_Rsend_init(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
00357 int PMPI_Rsend_init(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
00358
00359 int MPI_Recv_init(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
00360 int PMPI_Recv_init(void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Request *);
00361
00362 int MPI_Start(MPI_Request *);
00363 int PMPI_Start(MPI_Request *);
00364
00365 int MPI_Startall(int, MPI_Request *);
00366 int PMPI_Startall(int, MPI_Request *);
00367
00368
00369
00370 int MPI_Sendrecv(void *, int, MPI_Datatype, int, int, void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Status *);
00371 int PMPI_Sendrecv(void *, int, MPI_Datatype, int, int, void *, int, MPI_Datatype, int, int, MPI_Comm, MPI_Status *);
00372
00373 int MPI_Sendrecv_replace(void *, int, MPI_Datatype, int, int, int, int, MPI_Comm, MPI_Status *);
00374 int PMPI_Sendrecv_replace(void *, int, MPI_Datatype, int, int, int, int, MPI_Comm, MPI_Status *);
00375
00376
00377
00378 int MPI_Type_contiguous(int, MPI_Datatype, MPI_Datatype *);
00379 int PMPI_Type_contiguous(int, MPI_Datatype, MPI_Datatype *);
00380
00381 int MPI_Type_vector(int, int, int, MPI_Datatype, MPI_Datatype *);
00382 int PMPI_Type_vector(int, int, int, MPI_Datatype, MPI_Datatype *);
00383
00384 int MPI_Type_hvector(int, int, MPI_Aint, MPI_Datatype, MPI_Datatype *);
00385 int PMPI_Type_hvector(int, int, MPI_Aint, MPI_Datatype, MPI_Datatype *);
00386
00387 int MPI_Type_indexed(int, int *, int *, MPI_Datatype, MPI_Datatype *);
00388 int PMPI_Type_indexed(int, int *, int *, MPI_Datatype, MPI_Datatype *);
00389
00390 int MPI_Type_hindexed(int, int *, MPI_Aint *, MPI_Datatype, MPI_Datatype *);
00391 int PMPI_Type_hindexed(int, int *, MPI_Aint *, MPI_Datatype, MPI_Datatype *);
00392
00393 int MPI_Type_struct(int, int *, MPI_Aint *, MPI_Datatype *, MPI_Datatype *);
00394 int PMPI_Type_struct(int, int *, MPI_Aint *, MPI_Datatype *, MPI_Datatype *);
00395
00396 int MPI_Address(void *, MPI_Aint *);
00397 int PMPI_Address(void *, MPI_Aint *);
00398
00399 int MPI_Type_extent(MPI_Datatype, MPI_Aint *);
00400 int PMPI_Type_extent(MPI_Datatype, MPI_Aint *);
00401
00402 int MPI_Type_size(MPI_Datatype, int *);
00403 int PMPI_Type_size(MPI_Datatype, int *);
00404
00405 int MPI_Type_lb(MPI_Datatype, MPI_Aint *);
00406 int PMPI_Type_lb(MPI_Datatype, MPI_Aint *);
00407
00408 int MPI_Type_ub(MPI_Datatype, MPI_Aint *);
00409 int PMPI_Type_ub(MPI_Datatype, MPI_Aint *);
00410
00411 int MPI_Type_commit(MPI_Datatype *);
00412 int PMPI_Type_commit(MPI_Datatype *);
00413
00414 int MPI_Type_free(MPI_Datatype *);
00415 int PMPI_Type_free(MPI_Datatype *);
00416
00417 int MPI_Get_elements(MPI_Status *, MPI_Datatype, int *);
00418 int PMPI_Get_elements(MPI_Status *, MPI_Datatype, int *);
00419
00420
00421
00422 int MPI_Pack(void *, int, MPI_Datatype, void *, int, int *, MPI_Comm);
00423 int PMPI_Pack(void *, int, MPI_Datatype, void *, int, int *, MPI_Comm);
00424
00425 int MPI_Unpack(void *, int, int *, void *, int, MPI_Datatype, MPI_Comm);
00426 int PMPI_Unpack(void *, int, int *, void *, int, MPI_Datatype, MPI_Comm);
00427
00428 int MPI_Pack_size(int, MPI_Datatype, MPI_Comm, int *);
00429 int PMPI_Pack_size(int, MPI_Datatype, MPI_Comm, int *);
00430
00431
00432
00433 int MPI_Barrier(MPI_Comm);
00434 int PMPI_Barrier(MPI_Comm);
00435
00436
00437
00438 int MPI_Bcast(void *, int, MPI_Datatype, int, MPI_Comm);
00439 int PMPI_Bcast(void *, int, MPI_Datatype, int, MPI_Comm);
00440
00441
00442
00443 int MPI_Gather(void *, int, MPI_Datatype, void *, int, MPI_Datatype, int, MPI_Comm);
00444 int PMPI_Gather(void *, int, MPI_Datatype, void *, int, MPI_Datatype, int, MPI_Comm);
00445
00446 int MPI_Gatherv(void *, int, MPI_Datatype, void *, int *, int *, MPI_Datatype, int, MPI_Comm);
00447 int PMPI_Gatherv(void *, int, MPI_Datatype, void *, int *, int *, MPI_Datatype, int, MPI_Comm);
00448
00449
00450
00451 int MPI_Scatter(void *, int, MPI_Datatype, void *, int, MPI_Datatype, int, MPI_Comm);
00452 int PMPI_Scatter(void *, int, MPI_Datatype, void *, int, MPI_Datatype, int, MPI_Comm);
00453
00454 int MPI_Scatterv(void *, int *, int *, MPI_Datatype, void *, int, MPI_Datatype, int, MPI_Comm);
00455 int PMPI_Scatterv(void *, int *, int *, MPI_Datatype, void *, int, MPI_Datatype, int, MPI_Comm);
00456
00457
00458
00459 int MPI_Allgather(void *, int, MPI_Datatype, void *, int, MPI_Datatype, MPI_Comm);
00460 int PMPI_Allgather(void *, int, MPI_Datatype, void *, int, MPI_Datatype, MPI_Comm);
00461
00462 int MPI_Allgatherv(void *, int, MPI_Datatype, void *, int *, int *, MPI_Datatype, MPI_Comm);
00463 int PMPI_Allgatherv(void *, int, MPI_Datatype, void *, int *, int *, MPI_Datatype, MPI_Comm);
00464
00465
00466
00467 int MPI_Alltoall(void *, int, MPI_Datatype, void *, int, MPI_Datatype, MPI_Comm);
00468 int PMPI_Alltoall(void *, int, MPI_Datatype, void *, int, MPI_Datatype, MPI_Comm);
00469
00470 int MPI_Alltoallv(void *, int *, int *, MPI_Datatype, void *, int *, int *, MPI_Datatype, MPI_Comm);
00471 int PMPI_Alltoallv(void *, int *, int *, MPI_Datatype, void *, int *, int *, MPI_Datatype, MPI_Comm);
00472
00473
00474
00475 int MPI_Reduce(void *, void *, int, MPI_Datatype, MPI_Op, int, MPI_Comm);
00476 int PMPI_Reduce(void *, void *, int, MPI_Datatype, MPI_Op, int, MPI_Comm);
00477
00478 int MPI_Op_create(MPI_User_function *, int, MPI_Op *);
00479 int PMPI_Op_create(MPI_User_function *, int, MPI_Op *);
00480
00481 int MPI_Op_free(MPI_Op *);
00482 int PMPI_Op_free(MPI_Op *);
00483
00484 int MPI_Allreduce(void *, void *, int, MPI_Datatype, MPI_Op, MPI_Comm);
00485 int PMPI_Allreduce(void *, void *, int, MPI_Datatype, MPI_Op, MPI_Comm);
00486
00487
00488
00489 int MPI_Reduce_scatter(void *, void *, int *, MPI_Datatype, MPI_Op, MPI_Comm);
00490 int PMPI_Reduce_scatter(void *, void *, int *, MPI_Datatype, MPI_Op, MPI_Comm);
00491
00492
00493
00494 int MPI_Scan(void *, void *, int, MPI_Datatype, MPI_Op, MPI_Comm);
00495 int PMPI_Scan(void *, void *, int, MPI_Datatype, MPI_Op, MPI_Comm);
00496
00497
00498
00499 int MPI_Group_size(MPI_Group, int *);
00500 int PMPI_Group_size(MPI_Group, int *);
00501
00502 int MPI_Group_rank(MPI_Group, int *);
00503 int PMPI_Group_rank(MPI_Group, int *);
00504
00505 int MPI_Group_translate_ranks(MPI_Group, int, int *, MPI_Group, int *);
00506 int PMPI_Group_translate_ranks(MPI_Group, int, int *, MPI_Group, int *);
00507
00508 int MPI_Group_compare(MPI_Group, MPI_Group, int *);
00509 int PMPI_Group_compare(MPI_Group, MPI_Group, int *);
00510
00511 int MPI_Comm_group(MPI_Comm, MPI_Group *);
00512 int PMPI_Comm_group(MPI_Comm, MPI_Group *);
00513
00514 int MPI_Group_union(MPI_Group, MPI_Group, MPI_Group *);
00515 int PMPI_Group_union(MPI_Group, MPI_Group, MPI_Group *);
00516
00517 int MPI_Group_intersection(MPI_Group, MPI_Group, MPI_Group *);
00518 int PMPI_Group_intersection(MPI_Group, MPI_Group, MPI_Group *);
00519
00520 int MPI_Group_difference(MPI_Group, MPI_Group, MPI_Group *);
00521 int PMPI_Group_difference(MPI_Group, MPI_Group, MPI_Group *);
00522
00523 int MPI_Group_incl(MPI_Group, int, int *, MPI_Group *);
00524 int PMPI_Group_incl(MPI_Group, int, int *, MPI_Group *);
00525
00526 int MPI_Group_excl(MPI_Group, int, int *, MPI_Group *);
00527 int PMPI_Group_excl(MPI_Group, int, int *, MPI_Group *);
00528
00529 int MPI_Group_range_incl(MPI_Group, int, int [][3], MPI_Group *);
00530 int PMPI_Group_range_incl(MPI_Group, int, int [][3], MPI_Group *);
00531
00532 int MPI_Group_range_excl(MPI_Group, int, int [][3], MPI_Group *);
00533 int PMPI_Group_range_excl(MPI_Group, int, int [][3], MPI_Group *);
00534
00535 int MPI_Group_free(MPI_Group *);
00536 int PMPI_Group_free(MPI_Group *);
00537
00538
00539
00540 int MPI_Comm_size(MPI_Comm, int *);
00541 int PMPI_Comm_size(MPI_Comm, int *);
00542
00543 int MPI_Comm_rank(MPI_Comm, int *);
00544 int PMPI_Comm_rank(MPI_Comm, int *);
00545
00546 int MPI_Comm_compare(MPI_Comm, MPI_Comm, int *);
00547 int PMPI_Comm_compare(MPI_Comm, MPI_Comm, int *);
00548
00549 int MPI_Comm_dup(MPI_Comm, MPI_Comm *);
00550 int PMPI_Comm_dup(MPI_Comm, MPI_Comm *);
00551
00552 int MPI_Comm_create(MPI_Comm, MPI_Group, MPI_Comm *);
00553 int PMPI_Comm_create(MPI_Comm, MPI_Group, MPI_Comm *);
00554
00555 int MPI_Comm_split(MPI_Comm, int, int, MPI_Comm *);
00556 int PMPI_Comm_split(MPI_Comm, int, int, MPI_Comm *);
00557
00558 int MPI_Comm_free(MPI_Comm *);
00559 int PMPI_Comm_free(MPI_Comm *);
00560
00561
00562
00563 int MPI_Comm_test_inter(MPI_Comm, int *);
00564 int PMPI_Comm_test_inter(MPI_Comm, int *);
00565
00566 int MPI_Comm_remote_size(MPI_Comm, int *);
00567 int PMPI_Comm_remote_size(MPI_Comm, int *);
00568
00569 int MPI_Comm_remote_group(MPI_Comm, MPI_Group *);
00570 int PMPI_Comm_remote_group(MPI_Comm, MPI_Group *);
00571
00572 int MPI_Intercomm_create(MPI_Comm, int, MPI_Comm, int, int, MPI_Comm *);
00573 int PMPI_Intercomm_create(MPI_Comm, int, MPI_Comm, int, int, MPI_Comm *);
00574
00575 int MPI_Intercomm_merge(MPI_Comm, int, MPI_Comm *);
00576 int PMPI_Intercomm_merge(MPI_Comm, int, MPI_Comm *);
00577
00578
00579
00580 int MPI_Keyval_create(MPI_Copy_function *, MPI_Delete_function *, int *, void *);
00581 int PMPI_Keyval_create(MPI_Copy_function *, MPI_Delete_function *, int *, void *);
00582
00583 int MPI_Keyval_free(int *);
00584 int PMPI_Keyval_free(int *);
00585
00586 int MPI_Attr_put(MPI_Comm, int, void *);
00587 int PMPI_Attr_put(MPI_Comm, int, void *);
00588
00589 int MPI_Attr_get(MPI_Comm, int, void *, int *);
00590 int PMPI_Attr_get(MPI_Comm, int, void *, int *);
00591
00592 int MPI_Attr_delete(MPI_Comm, int);
00593 int PMPI_Attr_delete(MPI_Comm, int);
00594
00595
00596
00597 int MPI_Cart_create(MPI_Comm, int, int *, int *, int, MPI_Comm *);
00598 int PMPI_Cart_create(MPI_Comm, int, int *, int *, int, MPI_Comm *);
00599
00600 int MPI_Dims_create(int, int, int *);
00601 int PMPI_Dims_create(int, int, int *);
00602
00603 int MPI_Graph_create(MPI_Comm, int, int *, int *, int, MPI_Comm *);
00604 int PMPI_Graph_create(MPI_Comm, int, int *, int *, int, MPI_Comm *);
00605
00606 int MPI_Topo_test(MPI_Comm, int *);
00607 int PMPI_Topo_test(MPI_Comm, int *);
00608
00609 int MPI_Graphdims_get(MPI_Comm, int *, int *);
00610 int PMPI_Graphdims_get(MPI_Comm, int *, int *);
00611
00612 int MPI_Graph_get(MPI_Comm, int, int, int *, int *);
00613 int PMPI_Graph_get(MPI_Comm, int, int, int *, int *);
00614
00615 int MPI_Cartdim_get(MPI_Comm, int *);
00616 int PMPI_Cartdim_get(MPI_Comm, int *);
00617
00618 int MPI_Cart_get(MPI_Comm, int, int *, int *, int *);
00619 int PMPI_Cart_get(MPI_Comm, int, int *, int *, int *);
00620
00621 int MPI_Cart_rank(MPI_Comm, int *, int *);
00622 int PMPI_Cart_rank(MPI_Comm, int *, int *);
00623
00624 int MPI_Cart_coords(MPI_Comm, int, int, int *);
00625 int PMPI_Cart_coords(MPI_Comm, int, int, int *);
00626
00627 int MPI_Graph_neighbors_count(MPI_Comm, int, int *);
00628 int PMPI_Graph_neighbors_count(MPI_Comm, int, int *);
00629
00630 int MPI_Graph_neighbors(MPI_Comm, int, int, int *);
00631 int PMPI_Graph_neighbors(MPI_Comm, int, int, int *);
00632
00633 int MPI_Cart_shift(MPI_Comm, int, int, int *, int *);
00634 int PMPI_Cart_shift(MPI_Comm, int, int, int *, int *);
00635
00636 int MPI_Cart_sub(MPI_Comm, int *, MPI_Comm *);
00637 int PMPI_Cart_sub(MPI_Comm, int *, MPI_Comm *);
00638
00639 int MPI_Cart_map(MPI_Comm, int, int *, int *, int *);
00640 int PMPI_Cart_map(MPI_Comm, int, int *, int *, int *);
00641
00642 int MPI_Graph_map(MPI_Comm, int, int *, int *, int *);
00643 int PMPI_Graph_map(MPI_Comm, int, int *, int *, int *);
00644
00645
00646
00647 int MPI_Get_processor_name(char *, int *);
00648 int PMPI_Get_processor_name(char *, int *);
00649
00650
00651
00652 int MPI_Errhandler_create(MPI_Handler_function *, MPI_Errhandler *);
00653 int PMPI_Errhandler_create(MPI_Handler_function *, MPI_Errhandler *);
00654
00655 int MPI_Errhandler_set(MPI_Comm, MPI_Errhandler);
00656 int PMPI_Errhandler_set(MPI_Comm, MPI_Errhandler);
00657
00658 int MPI_Errhandler_get(MPI_Comm, MPI_Errhandler *);
00659 int PMPI_Errhandler_get(MPI_Comm, MPI_Errhandler *);
00660
00661 int MPI_Errhandler_free(MPI_Errhandler *);
00662 int PMPI_Errhandler_free(MPI_Errhandler *);
00663
00664 int MPI_Error_string(int, char *, int *);
00665 int PMPI_Error_string(int, char *, int *);
00666
00667
00668
00669 int MPI_Error_class(int, int *);
00670 int PMPI_Error_class(int, int *);
00671
00672
00673
00674 double MPI_Wtime(void);
00675 double PMPI_Wtime(void);
00676
00677 double MPI_Wtick(void);
00678 double PMPI_Wtick(void);
00679
00680
00681
00682 int MPI_Init(int *, char ***);
00683 int PMPI_Init(int *, char ***);
00684
00685 int MPI_Finalize(void);
00686 int PMPI_Finalize(void);
00687
00688 int MPI_Initialized(int *);
00689 int PMPI_Initialized(int *);
00690
00691 int MPI_Abort(MPI_Comm, int);
00692 int PMPI_Abort(MPI_Comm, int);
00693
00694
00695
00696 int MPI_Pcontrol(int, ...);
00697 int PMPI_Pcontrol(int, ...);
00698
00699
00700
00701
00702
00703 #define MPI_VERSION 1
00704 #define MPI_SUBVERSION 2
00705
00706 int MPI_Get_version(int *, int *);
00707 int PMPI_Get_version(int *, int *);
00708
00709
00710
00711
00712
00713
00714
00715
00716 typedef unsigned int MPI_Info;
00717
00718 enum {
00719 MPI_INFO_NULL = 0,
00720 MPI_MAX_INFO_KEY = 255,
00721 MPI_MAX_INFO_VAL = 1024
00722 };
00723
00724 enum {
00725 MPI_FUNDAMENTAL = -1
00726 };
00727
00728 int MPI_Info_create(MPI_Info *);
00729 int PMPI_Info_create(MPI_Info *);
00730
00731 int MPI_Info_delete(MPI_Info, char *);
00732 int PMPI_Info_delete(MPI_Info, char *);
00733
00734 int MPI_Info_dup(MPI_Info, MPI_Info *);
00735 int PMPI_Info_dup(MPI_Info, MPI_Info *);
00736
00737 int MPI_Info_free(MPI_Info *);
00738 int PMPI_Info_free(MPI_Info *);
00739
00740 int MPI_Info_get(MPI_Info, char *, int, char *, int *);
00741 int PMPI_Info_get(MPI_Info, char *, int, char *, int *);
00742
00743 int MPI_Info_get_nkeys(MPI_Info, int *);
00744 int PMPI_Info_get_nkeys(MPI_Info, int *);
00745
00746 int MPI_Info_get_nthkey(MPI_Info, int, char *);
00747 int PMPI_Info_get_nthkey(MPI_Info, int, char *);
00748
00749 int MPI_Info_get_valuelen(MPI_Info, char *, int *, int *);
00750 int PMPI_Info_get_valuelen(MPI_Info, char *, int *, int *);
00751
00752 int MPI_Info_set(MPI_Info, char *, char *);
00753 int PMPI_Info_set(MPI_Info, char *, char *);
00754
00755
00756
00757
00758 typedef int MPI_Fint;
00759
00760 MPI_Fint MPI_Info_c2f(MPI_Info);
00761 MPI_Fint PMPI_Info_c2f(MPI_Info);
00762
00763 MPI_Info MPI_Info_f2c(MPI_Fint);
00764 MPI_Info PMPI_Info_f2c(MPI_Fint);
00765
00766
00767
00768 int MPI_Free_mem(void *);
00769 int PMPI_Free_mem(void *);
00770
00771
00772
00773
00774 #if !_ABIN32
00775
00776 typedef unsigned int MPI_Win;
00777
00778 enum {
00779 MPI_WIN_NULL = 0
00780 };
00781
00782
00783
00784 int MPI_Win_create(void *, MPI_Aint, int, MPI_Info, MPI_Comm, MPI_Win *);
00785 int PMPI_Win_create(void *, MPI_Aint, int, MPI_Info, MPI_Comm, MPI_Win *);
00786
00787 int MPI_Win_fence(int, MPI_Win);
00788 int PMPI_Win_fence(int, MPI_Win);
00789
00790 int MPI_Win_free(MPI_Win *);
00791 int PMPI_Win_free(MPI_Win *);
00792
00793
00794
00795
00796 int MPI_Put(void *, int, MPI_Datatype, int, MPI_Aint, int, MPI_Datatype,
00797 MPI_Win);
00798 int PMPI_Put(void *, int, MPI_Datatype, int, MPI_Aint, int, MPI_Datatype,
00799 MPI_Win);
00800
00801 int MPI_Get(void *, int, MPI_Datatype, int, MPI_Aint, int, MPI_Datatype,
00802 MPI_Win);
00803 int PMPI_Get(void *, int, MPI_Datatype, int, MPI_Aint, int, MPI_Datatype,
00804 MPI_Win);
00805
00806 int MPI_Accumulate(void *, int, MPI_Datatype, int, MPI_Aint, int,
00807 MPI_Datatype, MPI_Op, MPI_Win);
00808 int PMPI_Accumulate(void *, int, MPI_Datatype, int, MPI_Aint, int,
00809 MPI_Datatype, MPI_Op, MPI_Win);
00810
00811
00812
00813 enum {
00814 MPI_MODE_NOCHECK = 1,
00815 MPI_MODE_NOSTORE = 2,
00816 MPI_MODE_NOPUT = 4,
00817 MPI_MODE_NOPRECEDE = 8,
00818 MPI_MODE_NOSUCCEED = 16
00819 };
00820
00821
00822 #endif
00823
00824
00825
00826 int MPI_Type_get_envelope(MPI_Datatype, int *, int *, int *, int *);
00827 int PMPI_Type_get_envelope(MPI_Datatype, int *, int *, int *, int *);
00828
00829
00830
00831
00832
00833
00834
00835
00836 int MPI_Type_get_envelope(MPI_Datatype, int *, int *, int *, int *);
00837 int PMPI_Type_get_envelope(MPI_Datatype, int *, int *, int *, int *);
00838
00839 int MPI_Type_get_contents(MPI_Datatype, int, int, int, int *, MPI_Aint *, MPI_Datatype *);
00840 int PMPI_Type_get_contents(MPI_Datatype, int, int, int, int *, MPI_Aint *, MPI_Datatype *);
00841
00842
00843
00844 int MPI_Type_dup(MPI_Datatype, MPI_Datatype *);
00845 int PMPI_Type_dup(MPI_Datatype, MPI_Datatype *);
00846
00847
00848
00849 enum {
00850 MPI_COMBINER_NAMED = (-1),
00851 MPI_COMBINER_CONTIGUOUS = 0,
00852 MPI_COMBINER_VECTOR = 1,
00853 MPI_COMBINER_HVECTOR = 2,
00854 MPI_COMBINER_INDEXED = 3,
00855 MPI_COMBINER_HINDEXED = 4,
00856 MPI_COMBINER_STRUCT = 5,
00857 MPI_COMBINER_DARRAY = 6,
00858 MPI_COMBINER_DUP = 7,
00859 MPI_COMBINER_F90_COMPLES = 8,
00860 MPI_COMBINER_F90_INTEGER = 9,
00861 MPI_COMBINER_F90_REAL = 10,
00862 MPI_COMBINER_HINDEXED_INTEGER = 11,
00863 MPI_COMBINER_HVECTOR_INTEGER = 12,
00864 MPI_COMBINER_INDEXED_BLOCK = 13,
00865 MPI_COMBINER_RESIZED = 14,
00866 MPI_COMBINER_STRUCT_INTEGER = 15,
00867 MPI_COMBINER_SUBARRAY = 16
00868 };
00869
00870
00871
00872 int MPI_Init_thread(int *, char ***, int, int *);
00873 int PMPI_Init_thread(int *, char ***, int, int *);
00874 int MPI_Query_thread(int *);
00875 int PMPI_Query_thread(int *);
00876 int MPI_Is_thread_main(int *);
00877 int PMPI_Is_thread_main(int *);
00878
00879 enum {
00880 MPI_THREAD_SINGLE = 0,
00881 MPI_THREAD_FUNNELED = 1,
00882 MPI_THREAD_SERIALIZED = 2,
00883 MPI_THREAD_MULTIPLE = 3
00884 };
00885
00886
00887
00888 int MPI_Finalized(int *);
00889 int PMPI_Finalized(int *);
00890
00891 #if defined(__cplusplus)
00892 }
00893
00894 #endif
00895
00896
00897
00898
00899 #include "mpio.h"
00900
00901 #endif