C INCLUDE 'mpif.h' C/* Copyright (C) 1996, Hitachi,Ltd. P-1811-1112 */ C/* C * C * (C) 1993 by Argonne National Laboratory and Mississipi State University. C * All rights reserved. See COPYRIGHT in top-level directory. C */ C C/* user include file for MPI programs, with no dependencies */ C C/* return codes */ integer MPP_SUCCESS,MPP_ERR_EXHAUSTED,MPP_ERR_TAG, $ MPP_ERR_COMM_NULL,MPP_ERR_COMM_INTER,MPP_ERR_COMM_INTRA, $ MPP_ERR_ARG,MPP_ERR_BUFFER,MPP_ERR_COUNT,MPP_ERR_TYPE, $ MPP_ERR_ROOT,MPP_ERR_OP,MPP_ERR_ERRORCODE, $ MPP_ERR_GROUP,MPP_ERR_RANK,MPP_ERR_TOPOLOGY, $ MPP_ERR_DIMS,MPP_ERR_NULL,MPP_ERR_UNKNOWN, $ MPP_ERR_REQUEST,MPP_ERR_LIMIT,MPP_ERR_INTERN, $ MPP_ERR_NOMATCH,MPP_ERR_TRUNCATE,MPP_ERR_BAD_ARGS, $ MPP_ERR_INIT,MPP_ERR_PERM_KEY,MPP_ERR_BUFFER_EXISTS, $ MPP_ERR_COMM,MPP_ERR_PERM_TYPE,MPP_ERR_IN_STATUS, $ MPP_ERR_OTHER,MPP_ERR_LASTCODE parameter (MPP_SUCCESS=0,MPP_ERR_EXHAUSTED=1,MPP_ERR_TAG=2, $ MPP_ERR_COMM_NULL=3,MPP_ERR_COMM_INTER=4,MPP_ERR_COMM_INTRA=5, $ MPP_ERR_ARG=6,MPP_ERR_BUFFER=7,MPP_ERR_COUNT=8,MPP_ERR_TYPE=9, $ MPP_ERR_ROOT=10,MPP_ERR_OP=11,MPP_ERR_ERRORCODE=12, $ MPP_ERR_GROUP=13,MPP_ERR_RANK=14,MPP_ERR_TOPOLOGY=15, $ MPP_ERR_DIMS=16,MPP_ERR_NULL=17,MPP_ERR_UNKNOWN=18, $ MPP_ERR_REQUEST=19,MPP_ERR_LIMIT=20,MPP_ERR_INTERN=21, $ MPP_ERR_NOMATCH=22,MPP_ERR_TRUNCATE=23,MPP_ERR_BAD_ARGS=24, $ MPP_ERR_INIT=25,MPP_ERR_PERM_KEY=26,MPP_ERR_BUFFER_EXISTS=27, $ MPP_ERR_COMM=28,MPP_ERR_PERM_TYPE=29,MPP_ERR_IN_STATUS=30, $ MPP_ERR_OTHER=31, $ MPP_ERR_LASTCODE=32) C integer MPP_UNDEFINED parameter (MPP_UNDEFINED = (-32766)) C INTEGER MPP_GRAPH, MPP_CART PARAMETER (MPP_GRAPH = 1, MPP_CART = 2) INTEGER MPP_PROC_NULL PARAMETER ( MPP_PROC_NULL = (-1) ) C INTEGER MPP_BSEND_OVERHEAD PARAMETER ( MPP_BSEND_OVERHEAD = 512 ) INTEGER MPP_SOURCE, MPP_TAG, MPP_ERROR PARAMETER(MPP_SOURCE=2, MPP_TAG=3, MPP_ERROR=4) INTEGER MPP_STATUS_SIZE PARAMETER (MPP_STATUS_SIZE=4) INTEGER MPP_MAX_PROCESSOR_NAME, MPP_MAX_ERROR_STRING PARAMETER (MPP_MAX_PROCESSOR_NAME=256, $ MPP_MAX_ERROR_STRING=256) C INTEGER MPP_COMM_NULL PARAMETER (MPP_COMM_NULL=0) c INTEGER MPP_DATATYPE_NULL PARAMETER (MPP_DATATYPE_NULL = 0) INTEGER MPP_ERRHANDLER_NULL PARAMETER (MPP_ERRHANDLER_NULL = 0) INTEGER MPP_GROUP_NULL PARAMETER (MPP_GROUP_NULL = 0) INTEGER MPP_KEYVAL_INVALID PARAMETER (MPP_KEYVAL_INVALID = 0) INTEGER MPP_REQUEST_NULL PARAMETER (MPP_REQUEST_NULL = 0) C INTEGER MPP_IDENT, MPP_CONGRUENT, MPP_SIMILAR, MPP_UNEQUAL PARAMETER (MPP_IDENT=0, MPP_CONGRUENT=1, MPP_SIMILAR=2, $ MPP_UNEQUAL=3) C C We handle datatypes by putting the variables that hold them into C common. This way, a Fortran program can directly use the various C datatypes and can even give them to C programs. C C MPP_BOTTOM needs to be a known address; here we put it at the C beginning of the common block. The point-to-point and collective C routines know about MPP_BOTTOM, but MPP_TYPE_STRUCT as yet does not. C C The types MPP_INTEGER1,2,4 and MPP_REAL4,8 are OPTIONAL. C Their values are zero if they are not available. Note that C using these reduces the portability of code (though may enhance C portability between Crays and other systems) C integer MPP_TAG_UB, MPP_HOST, MPP_IO integer MPP_BOTTOM, MPP_INTEGER, MPP_REAL, MPP_DOUBLE_PRECISION, $ MPP_COMPLEX, MPP_DOUBLE_COMPLEX, $ MPP_LOGICAL, MPP_CHARACTER, MPP_BYTE, $ MPP_2INTEGER, MPP_2REAL, MPP_2DOUBLE_PRECISION, $ MPP_2COMPLEX, MPP_2DOUBLE_COMPLEX, $ MPP_INTEGER1, MPP_INTEGER2, MPP_INTEGER4, $ MPP_REAL2, MPP_REAL4, MPP_REAL8, MPP_UB, MPP_LB, $ MPP_PACKED, MPP_wtime_is_global c P11MPB05 : declare MPP_wtime_is_global integer MPP_COMM_WORLD, MPP_COMM_SELF, MPP_GROUP_EMPTY integer MPP_SUM, MPP_MAX, MPP_MIN, MPP_PROD, MPP_LAND, MPP_BAND, $ MPP_LOR, MPP_BOR, MPP_LXOR, MPP_BXOR, MPP_MINLOC, MPP_MAXLOC, $ MPP_OP_NULL integer MPP_ERRORS_ARE_FATAL, MPP_ERRORS_RETURN common /mpipriv/ MPP_BOTTOM, MPP_INTEGER, MPP_REAL, $ MPP_DOUBLE_PRECISION, $ MPP_COMPLEX, MPP_DOUBLE_COMPLEX, $ MPP_LOGICAL, MPP_CHARACTER, MPP_BYTE, $ MPP_2INTEGER, MPP_2REAL, MPP_2DOUBLE_PRECISION, $ MPP_2COMPLEX, MPP_2DOUBLE_COMPLEX, $ MPP_INTEGER1, MPP_INTEGER2, MPP_INTEGER4, $ MPP_REAL2, MPP_REAL4, MPP_REAL8, $ MPP_UB, MPP_LB, $ MPP_COMM_WORLD, MPP_COMM_SELF, MPP_GROUP_EMPTY, $ MPP_SUM, MPP_MAX, MPP_MIN, MPP_PROD, MPP_LAND, MPP_BAND, $ MPP_LOR, MPP_BOR, MPP_LXOR, MPP_BXOR, MPP_MINLOC, MPP_MAXLOC, $ MPP_OP_NULL, $ MPP_TAG_UB, MPP_HOST, MPP_IO, MPP_ERRORS_ARE_FATAL, $ MPP_ERRORS_RETURN, MPP_PACKED, MPP_wtime_is_global c P11MPB05 : declare common block for MPP_wtime_is_global C integer MPP_ANY_SOURCE parameter (MPP_ANY_SOURCE = (-2)) integer MPP_ANY_TAG parameter (MPP_ANY_TAG = (-1)) C C All other MPI routines are subroutines C P11MP521 : pMPP_wtime, pMPP_wtick function call declare. double precision MPP_WTIME, MPP_WTICK, PMPP_WTIME, PMPP_WTICK external MPP_WTIME, MPP_WTICK, PMPP_WTIME, PMPP_WTICK C C The attribute copy/delete functions are symbols that can be passed C to MPI routines external MPP_NULL_COPY_FN, MPP_NULL_DELETE_FN, MPP_DUP_FN