
unit mpi;
interface

type
  PPchar=^Pchar;
  PPPchar=^PPchar;
type
  TArray0to2OfPlongint = array[0..2] of Plongint;

{
  Automatically converted by H2Pas 1.0.0 from /export/scratch/gaertner/mpich2/mpich2/mpi.tmp.h
  The following command line parameters were used:
    -e
    -p
    -D
    -w
    -l
    mpich
    -o
    /export/scratch/gaertner/mpich2/mpich2/mpi.pas
    /export/scratch/gaertner/mpich2/mpich2/mpi.tmp.h
}

  const
    External_library='mpich2'; {Setup as you need}

  { Pointers to basic pascal types, inserted by h2pas conversion program.}
  






  Type


  MPI_Aint = longint;
  PMPI_Aint  = ^MPI_Aint;
  MPI_COMBINER_ENUM =  Longint;
  PMPI_COMBINER_ENUM  = ^MPI_COMBINER_ENUM;
  MPI_Comm = longint;
  PMPI_Comm  = ^MPI_Comm;
  MPI_Datatype = longint;
  PMPI_Datatype  = ^MPI_Datatype;
  MPI_Errhandler = longint;
  PMPI_Errhandler  = ^MPI_Errhandler;
  MPI_File = longint;
  PMPI_File  = ^MPI_File;
  MPI_Fint = longint;
  PMPI_Fint  = ^MPI_Fint;
  MPI_Group = longint;
  PMPI_Group  = ^MPI_Group;
  MPI_Info = longint;
  PMPI_Info  = ^MPI_Info;
  MPI_Offset = int64;
  PMPI_Offset  = ^MPI_Offset;
  MPI_Op = longint;
  PMPI_Op  = ^MPI_Op;
  MPI_Request = longint;
  PMPI_Request  = ^MPI_Request;
  MPI_Status = record
          count : longint;
          cancelled : longint;
          MPI_SOURCE : longint;
          MPI_TAG : longint;
          MPI_ERROR : longint;
       end;
  PMPI_Status  = ^MPI_Status;
  MPI_Win = longint;
  PMPI_Win  = ^MPI_Win;
  MPIO_Request = MPI_Request;
  PMPIO_Request  = ^MPIO_Request;
  MPIR_Topo_type =  Longint;
  PMPIR_Topo_type  = ^MPIR_Topo_type;
{$IFDEF FPC}
{$PACKRECORDS C}
{$ENDIF}


  { -*- Mode: C; c-basic-offset:4 ; -*-  }
  {  $Id: mpi.h.in,v 1.78 2005/09/23 19:02:12 gropp Exp $
   *
   *  (C) 2001 by Argonne National Laboratory.
   *      See COPYRIGHT in top-level directory.
    }
  { src/include/mpi.h.  Generated from mpi.h.in by configure.  }
  { user include file for MPI programs  }
  { Keep C++ compilers from getting confused  }

  { Results of the compare operations.  }

  const
     MPI_IDENT = 0;     
     MPI_CONGRUENT = 1;     
     MPI_SIMILAR = 2;     
     MPI_UNEQUAL = 3;     

const  
  { was #define dname def_expr }
    MPI_CHAR = MPI_Datatype($4c000101);    

  { was #define dname def_expr }
    MPI_SIGNED_CHAR = MPI_Datatype($4c000118);    

  { was #define dname def_expr }
    MPI_UNSIGNED_CHAR = MPI_Datatype($4c000102);    

  { was #define dname def_expr }
    MPI_BYTE = MPI_Datatype($4c00010d);    

  { was #define dname def_expr }
    MPI_WCHAR = MPI_Datatype($4c00040e);    

  { was #define dname def_expr }
    MPI_SHORT = MPI_Datatype($4c000203);    

  { was #define dname def_expr }
    MPI_UNSIGNED_SHORT = MPI_Datatype($4c000204);    

  { was #define dname def_expr }
    MPI_INT = MPI_Datatype($4c000405);    

  { was #define dname def_expr }
    MPI_UNSIGNED = MPI_Datatype($4c000406);    

  { was #define dname def_expr }
    MPI_LONG = MPI_Datatype($4c000407);    

  { was #define dname def_expr }
    MPI_UNSIGNED_LONG = MPI_Datatype($4c000408);    

  { was #define dname def_expr }
    MPI_FLOAT = MPI_Datatype($4c00040a);    

  { was #define dname def_expr }
    MPI_DOUBLE = MPI_Datatype($4c00080b);    

  { was #define dname def_expr }
    MPI_LONG_DOUBLE = MPI_Datatype($4c000c0c);    

  { was #define dname def_expr }
    MPI_LONG_LONG_INT = MPI_Datatype($4c000809);    

  { was #define dname def_expr }
    MPI_UNSIGNED_LONG_LONG = MPI_Datatype($4c000819);    


  const
     MPI_LONG_LONG = MPI_LONG_LONG_INT;     
  { was #define dname def_expr }
    MPI_PACKED = MPI_Datatype($4c00010f);    

  { was #define dname def_expr }
    MPI_LB = MPI_Datatype($4c000010);    

  { was #define dname def_expr }
    MPI_UB = MPI_Datatype($4c000011);    

  { 
     The layouts for the types MPI_DOUBLE_INT etc are simply
     struct  
         double var;
         int    loc;
     
     This is documented in the man pages on the various datatypes.   
    }
  { was #define dname def_expr }
    MPI_FLOAT_INT = MPI_Datatype($8c000000);    

  { was #define dname def_expr }
    MPI_DOUBLE_INT = MPI_Datatype($8c000001);    

  { was #define dname def_expr }
    MPI_LONG_INT = MPI_Datatype($8c000002);    

  { was #define dname def_expr }
    MPI_SHORT_INT = MPI_Datatype($8c000003);    

  { was #define dname def_expr }
    MPI_2INT = MPI_Datatype($4c000816);    

  { was #define dname def_expr }
    MPI_LONG_DOUBLE_INT = MPI_Datatype($8c000004);    

  { Fortran types  }
  { was #define dname def_expr }
    MPI_DATATYPE_NULL = MPI_Datatype($0c000000);
    MPI_COMPLEX = MPI_Datatype(MPI_DATATYPE_NULL);    

  { was #define dname def_expr }
    MPI_DOUBLE_COMPLEX = MPI_Datatype(MPI_DATATYPE_NULL);    

  { was #define dname def_expr }
    MPI_LOGICAL = MPI_Datatype(MPI_DATATYPE_NULL);    

  { was #define dname def_expr }
    MPI_REAL = MPI_Datatype(MPI_DATATYPE_NULL);    

  { was #define dname def_expr }
    MPI_DOUBLE_PRECISION = MPI_Datatype(MPI_DATATYPE_NULL);    

  { was #define dname def_expr }
    MPI_INTEGER = MPI_Datatype(MPI_DATATYPE_NULL);    

  { was #define dname def_expr }
    MPI_2INTEGER = MPI_Datatype(MPI_DATATYPE_NULL);    

  { was #define dname def_expr }
    MPI_2COMPLEX = MPI_Datatype(MPI_DATATYPE_NULL);    

  { was #define dname def_expr }
    MPI_2DOUBLE_COMPLEX = MPI_Datatype(MPI_DATATYPE_NULL);    

  { was #define dname def_expr }
    MPI_2REAL = MPI_Datatype(MPI_DATATYPE_NULL);    

  { was #define dname def_expr }
    MPI_2DOUBLE_PRECISION = MPI_Datatype(MPI_DATATYPE_NULL);    

  { was #define dname def_expr }
    MPI_CHARACTER = MPI_Datatype(MPI_DATATYPE_NULL);    

const
  { Size-specific types (see MPI-2, 10.2.5)  }
  { was #define dname def_expr }
    MPI_REAL4 = MPI_Datatype($4c000427);    

  { was #define dname def_expr }
    MPI_REAL8 = MPI_Datatype($4c000829);    

  { was #define dname def_expr }
    MPI_REAL16 = MPI_Datatype(MPI_DATATYPE_NULL);    

const
  { was #define dname def_expr }
    MPI_COMPLEX8 = MPI_Datatype($4c000828);    

  { was #define dname def_expr }
    MPI_COMPLEX16 = MPI_Datatype($4c00102a);    

  { was #define dname def_expr }
    MPI_COMPLEX32 = MPI_Datatype(MPI_DATATYPE_NULL);    

const
  { was #define dname def_expr }
    MPI_INTEGER1 = MPI_Datatype($4c00012d);    

  { was #define dname def_expr }
    MPI_INTEGER2 = MPI_Datatype($4c00022f);    

  { was #define dname def_expr }
    MPI_INTEGER4 = MPI_Datatype($4c000430);    

  { was #define dname def_expr }
    MPI_INTEGER8 = MPI_Datatype($4c000831);    

  { was #define dname def_expr }
    MPI_INTEGER16 = MPI_Datatype(MPI_DATATYPE_NULL);    

  { typeclasses  }

  const
     MPI_TYPECLASS_REAL = 1;     
     MPI_TYPECLASS_INTEGER = 2;     
     MPI_TYPECLASS_COMPLEX = 3;     
  { Communicators  }

const  
  { was #define dname def_expr }
    MPI_COMM_WORLD = MPI_Comm($44000000);    

  { was #define dname def_expr }
    MPI_COMM_SELF = MPI_Comm($44000001);    

  { Groups  }

const  
  { was #define dname def_expr }
    MPI_GROUP_EMPTY = MPI_Group($48000000);    

  { RMA and Windows  }

const  
  { was #define dname def_expr }
    MPI_WIN_NULL = MPI_Win($20000000);    

  { File and IO  }
  { This define is temporary; it lets ROMIO know that MPI_File has been defined  }


  { commenting out the line below otherwise maint/updatefiles prints a warning  }
  { #define MPI_FILE_NULL ((MPI_File)0x10000000)  }

  { Collective operations  }

const  
  { was #define dname def_expr }
    MPI_MAX = MPI_Op($58000001);    

  { was #define dname def_expr }
    MPI_MIN = MPI_Op($58000002);    

  { was #define dname def_expr }
    MPI_SUM = MPI_Op($58000003);    

  { was #define dname def_expr }
    MPI_PROD = MPI_Op($58000004);    

  { was #define dname def_expr }
    MPI_LAND = MPI_Op($58000005);    

  { was #define dname def_expr }
    MPI_BAND = MPI_Op($58000006);    

  { was #define dname def_expr }
    MPI_LOR = MPI_Op($58000007);    

  { was #define dname def_expr }
    MPI_BOR = MPI_Op($58000008);    

  { was #define dname def_expr }
    MPI_LXOR = MPI_Op($58000009);    

  { was #define dname def_expr }
    MPI_BXOR = MPI_Op($5800000a);    

  { was #define dname def_expr }
    MPI_MINLOC = MPI_Op($5800000b);    

  { was #define dname def_expr }
    MPI_MAXLOC = MPI_Op($5800000c);    

  { was #define dname def_expr }
    MPI_REPLACE = MPI_Op($5800000d);    

  { Permanent key values  }
  { C Versions (return pointer to value),
     Fortran Versions (return integer value).
     Handled directly by the attribute value routine
     
     DO NOT CHANGE THESE.  The values encode:
     builtin kind (0x1 in bit 30-31)
     Keyval object (0x9 in bits 26-29)
     for communicator (0x1 in bits 22-25)
     
     Fortran versions of the attributes are formed by adding one to
     the C version.
    }

  const
     MPI_TAG_UB = $64400001;     
     MPI_HOST = $64400003;     
     MPI_IO = $64400005;     
     MPI_WTIME_IS_GLOBAL = $64400007;     
     MPI_UNIVERSE_SIZE = $64400009;     
     MPI_LASTUSEDCODE = $6440000b;     
     MPI_APPNUM = $6440000d;     
  { In addition, there are 3 predefined window attributes that are
     defined for every window  }
     MPI_WIN_BASE = $66000001;     
     MPI_WIN_SIZE = $66000003;     
     MPI_WIN_DISP_UNIT = $66000005;     
  { Define some null objects  }
  { was #define dname def_expr }
    MPI_COMM_NULL = MPI_Comm($04000000);    

  { was #define dname def_expr }
    MPI_OP_NULL = MPI_Op($18000000);    

  { was #define dname def_expr }
    MPI_GROUP_NULL = MPI_Group($08000000);    


  { was #define dname def_expr }
    MPI_REQUEST_NULL = MPI_Request($2c000000);    

  { was #define dname def_expr }
    MPI_ERRHANDLER_NULL = MPI_Errhandler($14000000);    

  { These are only guesses; make sure you change them in mpif.h as well  }

  const
     MPI_MAX_PROCESSOR_NAME = 128;     
     MPI_MAX_ERROR_STRING = 512;     
     MPI_MAX_NAME_STRING = 63;     
     MPI_MAX_PORT_NAME = 256;     
     MPI_MAX_OBJECT_NAME = 128;     
  { Pre-defined constants  }
     MPI_UNDEFINED = -(32766);     
     MPI_UNDEFINED_RANK = MPI_UNDEFINED;     
     MPI_KEYVAL_INVALID = $24000000;     
  { Upper bound on the overhead in bsend for each message buffer  }
     MPI_BSEND_OVERHEAD = 59;     
  { Topology types  }

     Const
       MPI_GRAPH = 1;
       MPI_CART = 2;

     MPI_BOTTOM = nil;     
     MPI_PROC_NULL = -(1);     
     MPI_ANY_SOURCE = -(2);     
     MPI_ROOT = -(3);     
     MPI_ANY_TAG = -(1);     
     MPI_LOCK_EXCLUSIVE = 234;     
     MPI_LOCK_SHARED = 235;     
  { C functions  }

  type

     MPI_Handler_function = procedure (_para1:PMPI_Comm; _para2:Plongint; args:array of const);cdecl;

     MPI_Comm_copy_attr_function = function (_para1:MPI_Comm; _para2:longint; _para3:pointer; _para4:pointer; _para5:pointer; 
                  _para6:Plongint):longint;cdecl;

     MPI_Comm_delete_attr_function = function (_para1:MPI_Comm; _para2:longint; _para3:pointer; _para4:pointer):longint;cdecl;

     MPI_Type_copy_attr_function = function (_para1:MPI_Datatype; _para2:longint; _para3:pointer; _para4:pointer; _para5:pointer; 
                  _para6:Plongint):longint;cdecl;

     MPI_Type_delete_attr_function = function (_para1:MPI_Datatype; _para2:longint; _para3:pointer; _para4:pointer):longint;cdecl;

     MPI_Win_copy_attr_function = function (_para1:MPI_Win; _para2:longint; _para3:pointer; _para4:pointer; _para5:pointer; 
                  _para6:Plongint):longint;cdecl;

     MPI_Win_delete_attr_function = function (_para1:MPI_Win; _para2:longint; _para3:pointer; _para4:pointer):longint;cdecl;

     MPI_Comm_errhandler_fn = procedure (_para1:PMPI_Comm; _para2:Plongint; args:array of const);cdecl;

     MPI_File_errhandler_fn = procedure (_para1:PMPI_File; _para2:Plongint; args:array of const);cdecl;

     MPI_Win_errhandler_fn = procedure (_para1:PMPI_Win; _para2:Plongint; args:array of const);cdecl;

const  
  { Built in (0x1 in 30-31), errhandler (0x5 in bits 26-29, allkind (0
     in 22-25), index in the low bits  }
  { was #define dname def_expr }
    MPI_ERRORS_ARE_FATAL = MPI_Errhandler($54000000);    

  { was #define dname def_expr }
    MPI_ERRORS_RETURN = MPI_Errhandler($54000001);    

  { #define MPIR_ERRORS_WARN     ((MPI_Errhandler)0x54000002)  }

  { Make the C names for the dup function mixed case.
     This is required for systems that use all uppercase names for Fortran 
     externals.   }
  { MPI 1 names  }

  const
     MPI_NULL_COPY_FN = nil;     
     MPI_NULL_DELETE_FN = nil;     
  { MPI 2 names  }
     MPI_COMM_NULL_COPY_FN = nil;     
     MPI_COMM_NULL_DELETE_FN = nil;     
     MPI_WIN_NULL_COPY_FN = nil;     
     MPI_WIN_NULL_DELETE_FN = nil;     
     MPI_TYPE_NULL_COPY_FN = nil;     
     MPI_TYPE_NULL_DELETE_FN = nil;     
  { MPI request opjects  }

  type

  { User combination function  }

     MPI_User_function = procedure (_para1:pointer; _para2:pointer; _para3:Plongint; _para4:PMPI_Datatype);cdecl;
  { MPI Attribute copy and delete functions  }

     MPI_Copy_function = function (_para1:MPI_Comm; _para2:longint; _para3:pointer; _para4:pointer; _para5:pointer; 
                  _para6:Plongint):longint;cdecl;

     MPI_Delete_function = function (_para1:MPI_Comm; _para2:longint; _para3:pointer; _para4:pointer):longint;cdecl;

  const
     MPI_VERSION = 2;     
     MPI_SUBVERSION = 0;     
     MPICH_NAME = 2;     
     MPICH2 = 1;     
     MPICH_HAS_C2F = 1;     
  { for the datatype decoders  }

     Const
       MPI_COMBINER_NAMED = 1;
       MPI_COMBINER_DUP = 2;
       MPI_COMBINER_CONTIGUOUS = 3;
       MPI_COMBINER_VECTOR = 4;
       MPI_COMBINER_HVECTOR_INTEGER = 5;
       MPI_COMBINER_HVECTOR = 6;
       MPI_COMBINER_INDEXED = 7;
       MPI_COMBINER_HINDEXED_INTEGER = 8;
       MPI_COMBINER_HINDEXED = 9;
       MPI_COMBINER_INDEXED_BLOCK = 10;
       MPI_COMBINER_STRUCT_INTEGER = 11;
       MPI_COMBINER_STRUCT = 12;
       MPI_COMBINER_SUBARRAY = 13;
       MPI_COMBINER_DARRAY = 14;
       MPI_COMBINER_F90_REAL = 15;
       MPI_COMBINER_F90_COMPLEX = 16;
       MPI_COMBINER_F90_INTEGER = 17;
       MPI_COMBINER_RESIZED = 18;

  { for info  }

const  
  { was #define dname def_expr }
    MPI_INFO_NULL = MPI_Info($1c000000);    


  const
     MPI_MAX_INFO_KEY = 255;     
     MPI_MAX_INFO_VAL = 1024;     
  { for subarray and darray constructors  }
     MPI_ORDER_C = 56;     
     MPI_ORDER_FORTRAN = 57;     
     MPI_DISTRIBUTE_BLOCK = 121;     
     MPI_DISTRIBUTE_CYCLIC = 122;     
     MPI_DISTRIBUTE_NONE = 123;     
     MPI_DISTRIBUTE_DFLT_DARG = -(49767);     
  { temporary, don't know the right value  }
  { was #define dname def_expr }
    MPI_IN_PLACE = pointer(-(1));    

  { asserts for one-sided communication  }

  const
     MPI_MODE_NOCHECK = 1024;     
     MPI_MODE_NOSTORE = 2048;     
     MPI_MODE_NOPUT = 4096;     
     MPI_MODE_NOPRECEDE = 8192;     
     MPI_MODE_NOSUCCEED = 16384;     
  { Definitions that are determined by configure.  }

  type


  { Let ROMIO know that MPI_Offset is already defined  }
  { MPI_OFFSET_TYPEDEF is set in configure and is 
        typedef $MPI_OFFSET MPI_Offset;
     where $MPI_OFFSET is the correct C type  }

  { The order of these elements must match that in mpif.h  }

  { Handle conversion types/functions  }
  { Programs that need to convert types used in MPICH should use these  }
  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    MPI_Comm_c2f = MPI_Fint;  

  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    MPI_Comm_f2c = MPI_Comm;  

  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    MPI_Type_c2f = MPI_Fint;  

  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    MPI_Type_f2c = MPI_Datatype;  

  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    MPI_Group_c2f = MPI_Fint;  

  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    MPI_Group_f2c = MPI_Group;  

  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    MPI_Info_c2f = MPI_Fint;  

  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    MPI_Info_f2c = MPI_Info;  

  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    MPI_Request_f2c = MPI_Request;  

  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    MPI_Request_c2f = MPI_Fint;  

  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    MPI_Op_c2f = MPI_Fint;  

  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    MPI_Op_f2c = MPI_Op;  

  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    MPI_Errhandler_c2f = MPI_Fint;  

  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    MPI_Errhandler_f2c = MPI_Errhandler;  

  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    MPI_Win_c2f = MPI_Fint;  

  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    MPI_Win_f2c = MPI_Win;  

  { PMPI versions of the handle transfer functions.  See section 4.17  }
  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    PMPI_Comm_c2f = MPI_Fint;  

  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    PMPI_Comm_f2c = MPI_Comm;  

  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    PMPI_Type_c2f = MPI_Fint;  

  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    PMPI_Type_f2c = MPI_Datatype;  

  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    PMPI_Group_c2f = MPI_Fint;  

  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    PMPI_Group_f2c = MPI_Group;  

  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    PMPI_Info_c2f = MPI_Fint;  

  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    PMPI_Info_f2c = MPI_Info;  

  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    PMPI_Request_f2c = MPI_Request;  

  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    PMPI_Request_c2f = MPI_Fint;  

  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    PMPI_Op_c2f = MPI_Fint;  

  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    PMPI_Op_f2c = MPI_Op;  

  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    PMPI_Errhandler_c2f = MPI_Fint;  

  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    PMPI_Errhandler_f2c = MPI_Errhandler;  

  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    PMPI_Win_c2f = MPI_Fint;  

  { was #define dname(params) para_def_expr }
  { argument types are unknown }
    PMPI_Win_f2c = MPI_Win;  

const
  { was #define dname def_expr }
    MPI_STATUS_IGNORE = PMPI_Status(1);    

  { was #define dname def_expr }
    MPI_STATUSES_IGNORE = PMPI_Status(1);    


  const
     MPI_ERRCODES_IGNORE = nil;     
  { See 4.12.5 for MPI_F_STATUS(ES)_IGNORE  }

    {var
       MPI_F_STATUS_IGNORE : PMPI_Fint;cvar;external;
       MPI_F_STATUSES_IGNORE : PMPI_Fint;cvar;external;
    }
  { The annotation  to the extern statements is used 
     as a hook for systems that require C extensions to correctly construct
     DLLs, and is defined as an empty string otherwise
    }
  { The MPI standard requires that the ARGV_NULL values be the same as
     nil (see 5.3.2)  }

  const
     MPI_ARGV_NULL = nil;     
     MPI_ARGVS_NULL = nil;     
  { For supported thread levels  }
     MPI_THREAD_SINGLE = 0;     
     MPI_THREAD_FUNNELED = 1;     
     MPI_THREAD_SERIALIZED = 2;     
     MPI_THREAD_MULTIPLE = 3;     
  { Typedefs for generalized requests  }

  type

     MPI_Grequest_cancel_function = function (_para1:pointer; _para2:longint):longint;cdecl;

     MPI_Grequest_free_function = function (_para1:pointer):longint;cdecl;

     MPI_Grequest_query_function = function (_para1:pointer; _para2:PMPI_Status):longint;cdecl;

  { MPI's error classes  }
  { Successful return code  }

  const
     MPI_SUCCESS = 0;     
  { Communication argument parameters  }
  { Invalid buffer pointer  }
     MPI_ERR_BUFFER = 1;     
  { Invalid count argument  }
     MPI_ERR_COUNT = 2;     
  { Invalid datatype argument  }
     MPI_ERR_TYPE = 3;     
  { Invalid tag argument  }
     MPI_ERR_TAG = 4;     
  { Invalid communicator  }
     MPI_ERR_COMM = 5;     
  { Invalid rank  }
     MPI_ERR_RANK = 6;     
  { Invalid root  }
     MPI_ERR_ROOT = 7;     
  { Message truncated on receive  }
     MPI_ERR_TRUNCATE = 14;     
  { MPI Objects (other than COMM)  }
  { Invalid group  }
     MPI_ERR_GROUP = 8;     
  { Invalid operation  }
     MPI_ERR_OP = 9;     
  { Invalid mpi_request handle  }
     MPI_ERR_REQUEST = 19;     
  { Special topology argument parameters  }
  { Invalid topology  }
     MPI_ERR_TOPOLOGY = 10;     
  { Invalid dimension argument  }
     MPI_ERR_DIMS = 11;     
  { All other arguments.  This is a class with many kinds  }
  { Invalid argument  }
     MPI_ERR_ARG = 12;     
  { Other errors that are not simply an invalid argument  }
  { Other error; use Error_string  }
     MPI_ERR_OTHER = 15;     
  { Unknown error  }
     MPI_ERR_UNKNOWN = 13;     
  { Internal error code     }
     MPI_ERR_INTERN = 16;     
  { Multiple completion has two special error classes  }
  { Look in status for error value  }
     MPI_ERR_IN_STATUS = 17;     
  { Pending request  }
     MPI_ERR_PENDING = 18;     
  { New MPI-2 Error classes  }
  {  }
     MPI_ERR_FILE = 27;     
  {  }
     MPI_ERR_ACCESS = 20;     
  {  }
     MPI_ERR_AMODE = 21;     
  {  }
     MPI_ERR_BAD_FILE = 22;     
  {  }
     MPI_ERR_FILE_EXISTS = 25;     
  {  }
     MPI_ERR_FILE_IN_USE = 26;     
  {  }
     MPI_ERR_NO_SPACE = 36;     
  {  }
     MPI_ERR_NO_SUCH_FILE = 37;     
  {  }
     MPI_ERR_IO = 32;     
  {  }
     MPI_ERR_READ_ONLY = 40;     
  {  }
     MPI_ERR_CONVERSION = 23;     
  {  }
     MPI_ERR_DUP_DATAREP = 24;     
  {  }
     MPI_ERR_UNSUPPORTED_DATAREP = 43;     
  { MPI_ERR_INFO is NOT defined in the MPI-2 standard.  I believe that
     this is an oversight  }
  {  }
     MPI_ERR_INFO = 28;     
  {  }
     MPI_ERR_INFO_KEY = 29;     
  {  }
     MPI_ERR_INFO_VALUE = 30;     
  {  }
     MPI_ERR_INFO_NOKEY = 31;     
  {  }
     MPI_ERR_NAME = 33;     
  { Alloc_mem could not allocate memory  }
     MPI_ERR_NO_MEM = 34;     
  {  }
     MPI_ERR_NOT_SAME = 35;     
  {  }
     MPI_ERR_PORT = 38;     
  {  }
     MPI_ERR_QUOTA = 39;     
  {  }
     MPI_ERR_SERVICE = 41;     
  {  }
     MPI_ERR_SPAWN = 42;     
  {  }
     MPI_ERR_UNSUPPORTED_OPERATION = 44;     
  {  }
     MPI_ERR_WIN = 45;     
  {  }
     MPI_ERR_BASE = 46;     
  {  }
     MPI_ERR_LOCKTYPE = 47;     
  { Erroneous attribute key  }
     MPI_ERR_KEYVAL = 48;     
  {  }
     MPI_ERR_RMA_CONFLICT = 49;     
  {  }     MPI_ERR_RMA_SYNC = 50;     
  {  }
     MPI_ERR_SIZE = 51;     
  {  }
     MPI_ERR_DISP = 52;     
  {  }
     MPI_ERR_ASSERT = 53;     
  { Last valid error code for a 
  					   predefined error class  }
     MPI_ERR_LASTCODE = $3fffffff;     
  { It is also helpful to know the
  				       last valid class  }
     MPICH_ERR_LAST_CLASS = 53;     
  { End of MPI's error classes  }
  { Function type defs  }

  type

     MPI_Datarep_conversion_function = function (_para1:pointer; _para2:MPI_Datatype; _para3:longint; _para4:pointer; _para5:MPI_Offset; 
                  _para6:pointer):longint;cdecl;

     MPI_Datarep_extent_function = function (datatype:MPI_Datatype; _para2:PMPI_Aint; _para3:pointer):longint;cdecl;

  const
     MPI_CONVERSION_FN_NULL = nil;     
  { 
     For systems that may need to add additional definitions to support
     different declaration styles and options (e.g., different calling 
     conventions or DLL import/export controls).  
   }
  { --Insert Additional Definitions Here--  }
  {
   * Normally, we provide prototypes for all MPI routines.  In a few wierd
   * cases, we need to suppress the prototypes.
    }

  { We require that the C compiler support prototypes  }
  { Begin Prototypes  }

  function MPI_Send(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:MPI_Comm):longint;cdecl;external External_library name 'MPI_Send';

  function MPI_Recv(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:MPI_Comm; _para7:PMPI_Status):longint;cdecl;external External_library name 'MPI_Recv';

  function MPI_Get_count(_para1:PMPI_Status; _para2:MPI_Datatype; _para3:Plongint):longint;cdecl;external External_library name 'MPI_Get_count';

  function MPI_Bsend(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:MPI_Comm):longint;cdecl;external External_library name 'MPI_Bsend';

  function MPI_Ssend(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:MPI_Comm):longint;cdecl;external External_library name 'MPI_Ssend';

  function MPI_Rsend(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:MPI_Comm):longint;cdecl;external External_library name 'MPI_Rsend';

  function MPI_Buffer_attach(_para1:pointer; _para2:longint):longint;cdecl;external External_library name 'MPI_Buffer_attach';

  function MPI_Buffer_detach(_para1:pointer; _para2:Plongint):longint;cdecl;external External_library name 'MPI_Buffer_detach';

  function MPI_Isend(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:MPI_Comm; _para7:PMPI_Request):longint;cdecl;external External_library name 'MPI_Isend';

  function MPI_Ibsend(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:MPI_Comm; _para7:PMPI_Request):longint;cdecl;external External_library name 'MPI_Ibsend';

  function MPI_Issend(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:MPI_Comm; _para7:PMPI_Request):longint;cdecl;external External_library name 'MPI_Issend';

  function MPI_Irsend(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:MPI_Comm; _para7:PMPI_Request):longint;cdecl;external External_library name 'MPI_Irsend';

  function MPI_Irecv(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:MPI_Comm; _para7:PMPI_Request):longint;cdecl;external External_library name 'MPI_Irecv';

  function MPI_Wait(_para1:PMPI_Request; _para2:PMPI_Status):longint;cdecl;external External_library name 'MPI_Wait';

  function MPI_Test(_para1:PMPI_Request; _para2:Plongint; _para3:PMPI_Status):longint;cdecl;external External_library name 'MPI_Test';

  function MPI_Request_free(_para1:PMPI_Request):longint;cdecl;external External_library name 'MPI_Request_free';

  function MPI_Waitany(_para1:longint; _para2:PMPI_Request; _para3:Plongint; _para4:PMPI_Status):longint;cdecl;external External_library name 'MPI_Waitany';

  function MPI_Testany(_para1:longint; _para2:PMPI_Request; _para3:Plongint; _para4:Plongint; _para5:PMPI_Status):longint;cdecl;external External_library name 'MPI_Testany';

  function MPI_Waitall(_para1:longint; _para2:PMPI_Request; _para3:PMPI_Status):longint;cdecl;external External_library name 'MPI_Waitall';

  function MPI_Testall(_para1:longint; _para2:PMPI_Request; _para3:Plongint; _para4:PMPI_Status):longint;cdecl;external External_library name 'MPI_Testall';

  function MPI_Waitsome(_para1:longint; _para2:PMPI_Request; _para3:Plongint; _para4:Plongint; _para5:PMPI_Status):longint;cdecl;external External_library name 'MPI_Waitsome';

  function MPI_Testsome(_para1:longint; _para2:PMPI_Request; _para3:Plongint; _para4:Plongint; _para5:PMPI_Status):longint;cdecl;external External_library name 'MPI_Testsome';

  function MPI_Iprobe(_para1:longint; _para2:longint; _para3:MPI_Comm; _para4:Plongint; _para5:PMPI_Status):longint;cdecl;external External_library name 'MPI_Iprobe';

  function MPI_Probe(_para1:longint; _para2:longint; _para3:MPI_Comm; _para4:PMPI_Status):longint;cdecl;external External_library name 'MPI_Probe';

  function MPI_Cancel(_para1:PMPI_Request):longint;cdecl;external External_library name 'MPI_Cancel';

  function MPI_Test_cancelled(_para1:PMPI_Status; _para2:Plongint):longint;cdecl;external External_library name 'MPI_Test_cancelled';

  function MPI_Send_init(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:MPI_Comm; _para7:PMPI_Request):longint;cdecl;external External_library name 'MPI_Send_init';

  function MPI_Bsend_init(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:MPI_Comm; _para7:PMPI_Request):longint;cdecl;external External_library name 'MPI_Bsend_init';

  function MPI_Ssend_init(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:MPI_Comm; _para7:PMPI_Request):longint;cdecl;external External_library name 'MPI_Ssend_init';

  function MPI_Rsend_init(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:MPI_Comm; _para7:PMPI_Request):longint;cdecl;external External_library name 'MPI_Rsend_init';

  function MPI_Recv_init(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:MPI_Comm; _para7:PMPI_Request):longint;cdecl;external External_library name 'MPI_Recv_init';

  function MPI_Start(_para1:PMPI_Request):longint;cdecl;external External_library name 'MPI_Start';

  function MPI_Startall(_para1:longint; _para2:PMPI_Request):longint;cdecl;external External_library name 'MPI_Startall';

  function MPI_Sendrecv(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:pointer; _para7:longint; _para8:MPI_Datatype; _para9:longint; _para10:longint; 
             _para11:MPI_Comm; _para12:PMPI_Status):longint;cdecl;external External_library name 'MPI_Sendrecv';

  function MPI_Sendrecv_replace(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:longint; _para7:longint; _para8:MPI_Comm; _para9:PMPI_Status):longint;cdecl;external External_library name 'MPI_Sendrecv_replace';

  function MPI_Type_contiguous(_para1:longint; _para2:MPI_Datatype; _para3:PMPI_Datatype):longint;cdecl;external External_library name 'MPI_Type_contiguous';

  function MPI_Type_vector(_para1:longint; _para2:longint; _para3:longint; _para4:MPI_Datatype; _para5:PMPI_Datatype):longint;cdecl;external External_library name 'MPI_Type_vector';

  function MPI_Type_hvector(_para1:longint; _para2:longint; _para3:MPI_Aint; _para4:MPI_Datatype; _para5:PMPI_Datatype):longint;cdecl;external External_library name 'MPI_Type_hvector';

  function MPI_Type_indexed(_para1:longint; _para2:Plongint; _para3:Plongint; _para4:MPI_Datatype; _para5:PMPI_Datatype):longint;cdecl;external External_library name 'MPI_Type_indexed';

  function MPI_Type_hindexed(_para1:longint; _para2:Plongint; _para3:PMPI_Aint; _para4:MPI_Datatype; _para5:PMPI_Datatype):longint;cdecl;external External_library name 'MPI_Type_hindexed';

  function MPI_Type_struct(_para1:longint; _para2:Plongint; _para3:PMPI_Aint; _para4:PMPI_Datatype; _para5:PMPI_Datatype):longint;cdecl;external External_library name 'MPI_Type_struct';

  function MPI_Address(_para1:pointer; _para2:PMPI_Aint):longint;cdecl;external External_library name 'MPI_Address';

  { We could add __attribute__((deprecated)) to routines like MPI_Type_extent  }
  function MPI_Type_extent(_para1:MPI_Datatype; _para2:PMPI_Aint):longint;cdecl;external External_library name 'MPI_Type_extent';

  { See the 1.1 version of the Standard.  The standard made an 
     unfortunate choice here, however, it is the standard.  The size returned 
     by MPI_Type_size is specified as an int, not an MPI_Aint  }
  function MPI_Type_size(_para1:MPI_Datatype; _para2:Plongint):longint;cdecl;external External_library name 'MPI_Type_size';

  { MPI_Type_count was withdrawn in MPI 1.1  }
  function MPI_Type_lb(_para1:MPI_Datatype; _para2:PMPI_Aint):longint;cdecl;external External_library name 'MPI_Type_lb';

  function MPI_Type_ub(_para1:MPI_Datatype; _para2:PMPI_Aint):longint;cdecl;external External_library name 'MPI_Type_ub';

  function MPI_Type_commit(_para1:PMPI_Datatype):longint;cdecl;external External_library name 'MPI_Type_commit';

  function MPI_Type_free(_para1:PMPI_Datatype):longint;cdecl;external External_library name 'MPI_Type_free';

  function MPI_Get_elements(_para1:PMPI_Status; _para2:MPI_Datatype; _para3:Plongint):longint;cdecl;external External_library name 'MPI_Get_elements';

  function MPI_Pack(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:pointer; _para5:longint; 
             _para6:Plongint; _para7:MPI_Comm):longint;cdecl;external External_library name 'MPI_Pack';

  function MPI_Unpack(_para1:pointer; _para2:longint; _para3:Plongint; _para4:pointer; _para5:longint; 
             _para6:MPI_Datatype; _para7:MPI_Comm):longint;cdecl;external External_library name 'MPI_Unpack';

  function MPI_Pack_size(_para1:longint; _para2:MPI_Datatype; _para3:MPI_Comm; _para4:Plongint):longint;cdecl;external External_library name 'MPI_Pack_size';

  function MPI_Barrier(_para1:MPI_Comm):longint;cdecl;external External_library name 'MPI_Barrier';

  function MPI_Bcast(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:MPI_Comm):longint;cdecl;external External_library name 'MPI_Bcast';

  function MPI_Gather(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:pointer; _para5:longint; 
             _para6:MPI_Datatype; _para7:longint; _para8:MPI_Comm):longint;cdecl;external External_library name 'MPI_Gather';

  function MPI_Gatherv(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:pointer; _para5:Plongint; 
             _para6:Plongint; _para7:MPI_Datatype; _para8:longint; _para9:MPI_Comm):longint;cdecl;external External_library name 'MPI_Gatherv';

  function MPI_Scatter(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:pointer; _para5:longint; 
             _para6:MPI_Datatype; _para7:longint; _para8:MPI_Comm):longint;cdecl;external External_library name 'MPI_Scatter';

  function MPI_Scatterv(_para1:pointer; _para2:Plongint; _para3:Plongint; _para4:MPI_Datatype; _para5:pointer; 
             _para6:longint; _para7:MPI_Datatype; _para8:longint; _para9:MPI_Comm):longint;cdecl;external External_library name 'MPI_Scatterv';

  function MPI_Allgather(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:pointer; _para5:longint; 
             _para6:MPI_Datatype; _para7:MPI_Comm):longint;cdecl;external External_library name 'MPI_Allgather';

  function MPI_Allgatherv(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:pointer; _para5:Plongint; 
             _para6:Plongint; _para7:MPI_Datatype; _para8:MPI_Comm):longint;cdecl;external External_library name 'MPI_Allgatherv';

  function MPI_Alltoall(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:pointer; _para5:longint; 
             _para6:MPI_Datatype; _para7:MPI_Comm):longint;cdecl;external External_library name 'MPI_Alltoall';

  function MPI_Alltoallv(_para1:pointer; _para2:Plongint; _para3:Plongint; _para4:MPI_Datatype; _para5:pointer; 
             _para6:Plongint; _para7:Plongint; _para8:MPI_Datatype; _para9:MPI_Comm):longint;cdecl;external External_library name 'MPI_Alltoallv';

  function MPI_Reduce(_para1:pointer; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:MPI_Op; 
             _para6:longint; _para7:MPI_Comm):longint;cdecl;external External_library name 'MPI_Reduce';

  function MPI_Op_create(_para1:MPI_User_function; _para2:longint; _para3:PMPI_Op):longint;cdecl;external External_library name 'MPI_Op_create';

  function MPI_Op_free(_para1:PMPI_Op):longint;cdecl;external External_library name 'MPI_Op_free';

  function MPI_Allreduce(_para1:pointer; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:MPI_Op; 
             _para6:MPI_Comm):longint;cdecl;external External_library name 'MPI_Allreduce';

  function MPI_Reduce_scatter(_para1:pointer; _para2:pointer; _para3:Plongint; _para4:MPI_Datatype; _para5:MPI_Op; 
             _para6:MPI_Comm):longint;cdecl;external External_library name 'MPI_Reduce_scatter';

  function MPI_Scan(_para1:pointer; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:MPI_Op; 
             _para6:MPI_Comm):longint;cdecl;external External_library name 'MPI_Scan';

  function MPI_Group_size(_para1:MPI_Group; _para2:Plongint):longint;cdecl;external External_library name 'MPI_Group_size';

  function MPI_Group_rank(_para1:MPI_Group; _para2:Plongint):longint;cdecl;external External_library name 'MPI_Group_rank';

  function MPI_Group_translate_ranks(_para1:MPI_Group; _para2:longint; _para3:Plongint; _para4:MPI_Group; _para5:Plongint):longint;cdecl;external External_library name 'MPI_Group_translate_ranks';

  function MPI_Group_compare(_para1:MPI_Group; _para2:MPI_Group; _para3:Plongint):longint;cdecl;external External_library name 'MPI_Group_compare';

  function MPI_Comm_group(_para1:MPI_Comm; _para2:PMPI_Group):longint;cdecl;external External_library name 'MPI_Comm_group';

  function MPI_Group_union(_para1:MPI_Group; _para2:MPI_Group; _para3:PMPI_Group):longint;cdecl;external External_library name 'MPI_Group_union';

  function MPI_Group_intersection(_para1:MPI_Group; _para2:MPI_Group; _para3:PMPI_Group):longint;cdecl;external External_library name 'MPI_Group_intersection';

  function MPI_Group_difference(_para1:MPI_Group; _para2:MPI_Group; _para3:PMPI_Group):longint;cdecl;external External_library name 'MPI_Group_difference';

  function MPI_Group_incl(_para1:MPI_Group; _para2:longint; _para3:Plongint; _para4:PMPI_Group):longint;cdecl;external External_library name 'MPI_Group_incl';

  function MPI_Group_excl(_para1:MPI_Group; _para2:longint; _para3:Plongint; _para4:PMPI_Group):longint;cdecl;external External_library name 'MPI_Group_excl';

  function MPI_Group_range_incl(_para1:MPI_Group; _para2:longint; _para3:TArray0to2OfPlongint; _para4:PMPI_Group):longint;cdecl;external External_library name 'MPI_Group_range_incl';

  function MPI_Group_range_excl(_para1:MPI_Group; _para2:longint; _para3:TArray0to2OfPlongint; _para4:PMPI_Group):longint;cdecl;external External_library name 'MPI_Group_range_excl';

  function MPI_Group_free(_para1:PMPI_Group):longint;cdecl;external External_library name 'MPI_Group_free';

  function MPI_Comm_size(_para1:MPI_Comm; _para2:Plongint):longint;cdecl;external External_library name 'MPI_Comm_size';

  function MPI_Comm_rank(_para1:MPI_Comm; _para2:Plongint):longint;cdecl;external External_library name 'MPI_Comm_rank';

  function MPI_Comm_compare(_para1:MPI_Comm; _para2:MPI_Comm; _para3:Plongint):longint;cdecl;external External_library name 'MPI_Comm_compare';

  function MPI_Comm_dup(_para1:MPI_Comm; _para2:PMPI_Comm):longint;cdecl;external External_library name 'MPI_Comm_dup';

  function MPI_Comm_create(_para1:MPI_Comm; _para2:MPI_Group; _para3:PMPI_Comm):longint;cdecl;external External_library name 'MPI_Comm_create';

  function MPI_Comm_split(_para1:MPI_Comm; _para2:longint; _para3:longint; _para4:PMPI_Comm):longint;cdecl;external External_library name 'MPI_Comm_split';

  function MPI_Comm_free(_para1:PMPI_Comm):longint;cdecl;external External_library name 'MPI_Comm_free';

  function MPI_Comm_test_inter(_para1:MPI_Comm; _para2:Plongint):longint;cdecl;external External_library name 'MPI_Comm_test_inter';

  function MPI_Comm_remote_size(_para1:MPI_Comm; _para2:Plongint):longint;cdecl;external External_library name 'MPI_Comm_remote_size';

  function MPI_Comm_remote_group(_para1:MPI_Comm; _para2:PMPI_Group):longint;cdecl;external External_library name 'MPI_Comm_remote_group';

  function MPI_Intercomm_create(_para1:MPI_Comm; _para2:longint; _para3:MPI_Comm; _para4:longint; _para5:longint; 
             _para6:PMPI_Comm):longint;cdecl;external External_library name 'MPI_Intercomm_create';

  function MPI_Intercomm_merge(_para1:MPI_Comm; _para2:longint; _para3:PMPI_Comm):longint;cdecl;external External_library name 'MPI_Intercomm_merge';

  function MPI_Keyval_create(_para1:MPI_Copy_function; _para2:MPI_Delete_function; _para3:Plongint; _para4:pointer):longint;cdecl;external External_library name 'MPI_Keyval_create';

  function MPI_Keyval_free(_para1:Plongint):longint;cdecl;external External_library name 'MPI_Keyval_free';

  function MPI_Attr_put(_para1:MPI_Comm; _para2:longint; _para3:pointer):longint;cdecl;external External_library name 'MPI_Attr_put';

  function MPI_Attr_get(_para1:MPI_Comm; _para2:longint; _para3:pointer; _para4:Plongint):longint;cdecl;external External_library name 'MPI_Attr_get';

  function MPI_Attr_delete(_para1:MPI_Comm; _para2:longint):longint;cdecl;external External_library name 'MPI_Attr_delete';

  function MPI_Topo_test(_para1:MPI_Comm; _para2:Plongint):longint;cdecl;external External_library name 'MPI_Topo_test';

  function MPI_Cart_create(_para1:MPI_Comm; _para2:longint; _para3:Plongint; _para4:Plongint; _para5:longint; 
             _para6:PMPI_Comm):longint;cdecl;external External_library name 'MPI_Cart_create';

  function MPI_Dims_create(_para1:longint; _para2:longint; _para3:Plongint):longint;cdecl;external External_library name 'MPI_Dims_create';

  function MPI_Graph_create(_para1:MPI_Comm; _para2:longint; _para3:Plongint; _para4:Plongint; _para5:longint; 
             _para6:PMPI_Comm):longint;cdecl;external External_library name 'MPI_Graph_create';

  function MPI_Graphdims_get(_para1:MPI_Comm; _para2:Plongint; _para3:Plongint):longint;cdecl;external External_library name 'MPI_Graphdims_get';

  function MPI_Graph_get(_para1:MPI_Comm; _para2:longint; _para3:longint; _para4:Plongint; _para5:Plongint):longint;cdecl;external External_library name 'MPI_Graph_get';

  function MPI_Cartdim_get(_para1:MPI_Comm; _para2:Plongint):longint;cdecl;external External_library name 'MPI_Cartdim_get';

  function MPI_Cart_get(_para1:MPI_Comm; _para2:longint; _para3:Plongint; _para4:Plongint; _para5:Plongint):longint;cdecl;external External_library name 'MPI_Cart_get';

  function MPI_Cart_rank(_para1:MPI_Comm; _para2:Plongint; _para3:Plongint):longint;cdecl;external External_library name 'MPI_Cart_rank';

  function MPI_Cart_coords(_para1:MPI_Comm; _para2:longint; _para3:longint; _para4:Plongint):longint;cdecl;external External_library name 'MPI_Cart_coords';

  function MPI_Graph_neighbors_count(_para1:MPI_Comm; _para2:longint; _para3:Plongint):longint;cdecl;external External_library name 'MPI_Graph_neighbors_count';

  function MPI_Graph_neighbors(_para1:MPI_Comm; _para2:longint; _para3:longint; _para4:Plongint):longint;cdecl;external External_library name 'MPI_Graph_neighbors';

  function MPI_Cart_shift(_para1:MPI_Comm; _para2:longint; _para3:longint; _para4:Plongint; _para5:Plongint):longint;cdecl;external External_library name 'MPI_Cart_shift';

  function MPI_Cart_sub(_para1:MPI_Comm; _para2:Plongint; _para3:PMPI_Comm):longint;cdecl;external External_library name 'MPI_Cart_sub';

  function MPI_Cart_map(_para1:MPI_Comm; _para2:longint; _para3:Plongint; _para4:Plongint; _para5:Plongint):longint;cdecl;external External_library name 'MPI_Cart_map';

  function MPI_Graph_map(_para1:MPI_Comm; _para2:longint; _para3:Plongint; _para4:Plongint; _para5:Plongint):longint;cdecl;external External_library name 'MPI_Graph_map';

  function MPI_Get_processor_name(_para1:Pchar; _para2:Plongint):longint;cdecl;external External_library name 'MPI_Get_processor_name';

  function MPI_Get_version(_para1:Plongint; _para2:Plongint):longint;cdecl;external External_library name 'MPI_Get_version';

  function MPI_Errhandler_create(_para1:MPI_Handler_function; _para2:PMPI_Errhandler):longint;cdecl;external External_library name 'MPI_Errhandler_create';

  function MPI_Errhandler_set(_para1:MPI_Comm; _para2:MPI_Errhandler):longint;cdecl;external External_library name 'MPI_Errhandler_set';

  function MPI_Errhandler_get(_para1:MPI_Comm; _para2:PMPI_Errhandler):longint;cdecl;external External_library name 'MPI_Errhandler_get';

  function MPI_Errhandler_free(_para1:PMPI_Errhandler):longint;cdecl;external External_library name 'MPI_Errhandler_free';

  function MPI_Error_string(_para1:longint; _para2:Pchar; _para3:Plongint):longint;cdecl;external External_library name 'MPI_Error_string';

  function MPI_Error_class(_para1:longint; _para2:Plongint):longint;cdecl;external External_library name 'MPI_Error_class';

  function MPI_Wtime:double;cdecl;external External_library name 'MPI_Wtime';

  function MPI_Wtick:double;cdecl;external External_library name 'MPI_Wtick';



  function PMPI_Wtime:double;cdecl;external External_library name 'PMPI_Wtime';

  function PMPI_Wtick:double;cdecl;external External_library name 'PMPI_Wtick';



  function MPI_Init(_para1:Plongint; _para2:PPPchar):longint;cdecl;external External_library name 'MPI_Init';

  function MPI_Finalize:longint;cdecl;external External_library name 'MPI_Finalize';

  function MPI_Initialized(_para1:Plongint):longint;cdecl;external External_library name 'MPI_Initialized';

  function MPI_Abort(_para1:MPI_Comm; _para2:longint):longint;cdecl;external External_library name 'MPI_Abort';

  { Note that we may need to define a @PCONTROL_LIST@ depending on whether 
     stdargs are supported  }
(*  before  ignored *)
  function MPI_Pcontrol(_para1:longint; args:array of const):longint;cdecl;external External_library name 'MPI_Pcontrol';

  //function MPI_Pcontrol(_para1:longint):longint;cdecl;external External_library name 'MPI_Pcontrol';

  function MPI_DUP_FN(_para1:MPI_Comm; _para2:longint; _para3:pointer; _para4:pointer; _para5:pointer; 
             _para6:Plongint):longint;cdecl;external External_library name 'MPI_DUP_FN';

  { MPI-2 functions  }
  { Process Creation and Management  }
  function MPI_Close_port(_para1:Pchar):longint;cdecl;external External_library name 'MPI_Close_port';

  function MPI_Comm_accept(_para1:Pchar; _para2:MPI_Info; _para3:longint; _para4:MPI_Comm; _para5:PMPI_Comm):longint;cdecl;external External_library name 'MPI_Comm_accept';

  function MPI_Comm_connect(_para1:Pchar; _para2:MPI_Info; _para3:longint; _para4:MPI_Comm; _para5:PMPI_Comm):longint;cdecl;external External_library name 'MPI_Comm_connect';

  function MPI_Comm_disconnect(_para1:PMPI_Comm):longint;cdecl;external External_library name 'MPI_Comm_disconnect';

  function MPI_Comm_get_parent(_para1:PMPI_Comm):longint;cdecl;external External_library name 'MPI_Comm_get_parent';

  function MPI_Comm_join(_para1:longint; _para2:PMPI_Comm):longint;cdecl;external External_library name 'MPI_Comm_join';

  function MPI_Comm_spawn(_para1:Pchar; _para2:PPchar; _para3:longint; _para4:MPI_Info; _para5:longint; 
             _para6:MPI_Comm; _para7:PMPI_Comm; _para8:Plongint):longint;cdecl;external External_library name 'MPI_Comm_spawn';

  function MPI_Comm_spawn_multiple(_para1:longint; _para2:PPchar; _para3:PPPchar; _para4:Plongint; _para5:PMPI_Info; 
             _para6:longint; _para7:MPI_Comm; _para8:PMPI_Comm; _para9:Plongint):longint;cdecl;external External_library name 'MPI_Comm_spawn_multiple';

  function MPI_Lookup_name(_para1:Pchar; _para2:MPI_Info; _para3:Pchar):longint;cdecl;external External_library name 'MPI_Lookup_name';

  function MPI_Open_port(_para1:MPI_Info; _para2:Pchar):longint;cdecl;external External_library name 'MPI_Open_port';

  function MPI_Publish_name(_para1:Pchar; _para2:MPI_Info; _para3:Pchar):longint;cdecl;external External_library name 'MPI_Publish_name';

  function MPI_Unpublish_name(_para1:Pchar; _para2:MPI_Info; _para3:Pchar):longint;cdecl;external External_library name 'MPI_Unpublish_name';

  { One-Sided Communications  }
  function MPI_Accumulate(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:MPI_Aint; 
             _para6:longint; _para7:MPI_Datatype; _para8:MPI_Op; _para9:MPI_Win):longint;cdecl;external External_library name 'MPI_Accumulate';

  function MPI_Get(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:MPI_Aint; 
             _para6:longint; _para7:MPI_Datatype; _para8:MPI_Win):longint;cdecl;external External_library name 'MPI_Get';

  function MPI_Put(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:MPI_Aint; 
             _para6:longint; _para7:MPI_Datatype; _para8:MPI_Win):longint;cdecl;external External_library name 'MPI_Put';

  function MPI_Win_complete(_para1:MPI_Win):longint;cdecl;external External_library name 'MPI_Win_complete';

  function MPI_Win_create(_para1:pointer; _para2:MPI_Aint; _para3:longint; _para4:MPI_Info; _para5:MPI_Comm; 
             _para6:PMPI_Win):longint;cdecl;external External_library name 'MPI_Win_create';

  function MPI_Win_fence(_para1:longint; _para2:MPI_Win):longint;cdecl;external External_library name 'MPI_Win_fence';

  function MPI_Win_free(_para1:PMPI_Win):longint;cdecl;external External_library name 'MPI_Win_free';

  function MPI_Win_get_group(_para1:MPI_Win; _para2:PMPI_Group):longint;cdecl;external External_library name 'MPI_Win_get_group';

  function MPI_Win_lock(_para1:longint; _para2:longint; _para3:longint; _para4:MPI_Win):longint;cdecl;external External_library name 'MPI_Win_lock';

  function MPI_Win_post(_para1:MPI_Group; _para2:longint; _para3:MPI_Win):longint;cdecl;external External_library name 'MPI_Win_post';

  function MPI_Win_start(_para1:MPI_Group; _para2:longint; _para3:MPI_Win):longint;cdecl;external External_library name 'MPI_Win_start';

  function MPI_Win_test(_para1:MPI_Win; _para2:Plongint):longint;cdecl;external External_library name 'MPI_Win_test';

  function MPI_Win_unlock(_para1:longint; _para2:MPI_Win):longint;cdecl;external External_library name 'MPI_Win_unlock';

  function MPI_Win_wait(_para1:MPI_Win):longint;cdecl;external External_library name 'MPI_Win_wait';

  { Extended Collective Operations  }
  function MPI_Alltoallw(_para1:pointer; _para2:Plongint; _para3:Plongint; _para4:PMPI_Datatype; _para5:pointer; 
             _para6:Plongint; _para7:Plongint; _para8:PMPI_Datatype; _para9:MPI_Comm):longint;cdecl;external External_library name 'MPI_Alltoallw';

  function MPI_Exscan(_para1:pointer; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:MPI_Op; 
             _para6:MPI_Comm):longint;cdecl;external External_library name 'MPI_Exscan';

  { External Interfaces  }
  function MPI_Add_error_class(_para1:Plongint):longint;cdecl;external External_library name 'MPI_Add_error_class';

  function MPI_Add_error_code(_para1:longint; _para2:Plongint):longint;cdecl;external External_library name 'MPI_Add_error_code';

  function MPI_Add_error_string(_para1:longint; _para2:Pchar):longint;cdecl;external External_library name 'MPI_Add_error_string';

  function MPI_Comm_call_errhandler(_para1:MPI_Comm; _para2:longint):longint;cdecl;external External_library name 'MPI_Comm_call_errhandler';

  function MPI_Comm_create_keyval(_para1:MPI_Comm_copy_attr_function; _para2:MPI_Comm_delete_attr_function; _para3:Plongint; _para4:pointer):longint;cdecl;external External_library name 'MPI_Comm_create_keyval';

  function MPI_Comm_delete_attr(_para1:MPI_Comm; _para2:longint):longint;cdecl;external External_library name 'MPI_Comm_delete_attr';

  function MPI_Comm_free_keyval(_para1:Plongint):longint;cdecl;external External_library name 'MPI_Comm_free_keyval';

  function MPI_Comm_get_attr(_para1:MPI_Comm; _para2:longint; _para3:pointer; _para4:Plongint):longint;cdecl;external External_library name 'MPI_Comm_get_attr';

  function MPI_Comm_get_name(_para1:MPI_Comm; _para2:Pchar; _para3:Plongint):longint;cdecl;external External_library name 'MPI_Comm_get_name';

  function MPI_Comm_set_attr(_para1:MPI_Comm; _para2:longint; _para3:pointer):longint;cdecl;external External_library name 'MPI_Comm_set_attr';

  function MPI_Comm_set_name(_para1:MPI_Comm; _para2:Pchar):longint;cdecl;external External_library name 'MPI_Comm_set_name';

  function MPI_File_call_errhandler(_para1:MPI_File; _para2:longint):longint;cdecl;external External_library name 'MPI_File_call_errhandler';

  function MPI_Grequest_complete(_para1:MPI_Request):longint;cdecl;external External_library name 'MPI_Grequest_complete';

  function MPI_Grequest_start(_para1:MPI_Grequest_query_function; _para2:MPI_Grequest_free_function; _para3:MPI_Grequest_cancel_function; _para4:pointer; _para5:PMPI_Request):longint;cdecl;external External_library name 'MPI_Grequest_start';

  function MPI_Init_thread(_para1:Plongint; _para2:PPPchar; _para3:longint; _para4:Plongint):longint;cdecl;external External_library name 'MPI_Init_thread';

  function MPI_Is_thread_main(_para1:Plongint):longint;cdecl;external External_library name 'MPI_Is_thread_main';

  function MPI_Query_thread(_para1:Plongint):longint;cdecl;external External_library name 'MPI_Query_thread';

  function MPI_Status_set_cancelled(_para1:PMPI_Status; _para2:longint):longint;cdecl;external External_library name 'MPI_Status_set_cancelled';

  function MPI_Status_set_elements(_para1:PMPI_Status; _para2:MPI_Datatype; _para3:longint):longint;cdecl;external External_library name 'MPI_Status_set_elements';

  function MPI_Type_create_keyval(_para1:MPI_Type_copy_attr_function; _para2:MPI_Type_delete_attr_function; _para3:Plongint; _para4:pointer):longint;cdecl;external External_library name 'MPI_Type_create_keyval';

  function MPI_Type_delete_attr(_para1:MPI_Datatype; _para2:longint):longint;cdecl;external External_library name 'MPI_Type_delete_attr';

  function MPI_Type_dup(_para1:MPI_Datatype; _para2:PMPI_Datatype):longint;cdecl;external External_library name 'MPI_Type_dup';

  function MPI_Type_free_keyval(_para1:Plongint):longint;cdecl;external External_library name 'MPI_Type_free_keyval';

  function MPI_Type_get_attr(_para1:MPI_Datatype; _para2:longint; _para3:pointer; _para4:Plongint):longint;cdecl;external External_library name 'MPI_Type_get_attr';

  function MPI_Type_get_contents(_para1:MPI_Datatype; _para2:longint; _para3:longint; _para4:longint; _para5:Plongint; 
             _para6:PMPI_Aint; _para7:PMPI_Datatype):longint;cdecl;external External_library name 'MPI_Type_get_contents';

  function MPI_Type_get_envelope(_para1:MPI_Datatype; _para2:Plongint; _para3:Plongint; _para4:Plongint; _para5:Plongint):longint;cdecl;external External_library name 'MPI_Type_get_envelope';

  function MPI_Type_get_name(_para1:MPI_Datatype; _para2:Pchar; _para3:Plongint):longint;cdecl;external External_library name 'MPI_Type_get_name';

  function MPI_Type_set_attr(_para1:MPI_Datatype; _para2:longint; _para3:pointer):longint;cdecl;external External_library name 'MPI_Type_set_attr';

  function MPI_Type_set_name(_para1:MPI_Datatype; _para2:Pchar):longint;cdecl;external External_library name 'MPI_Type_set_name';

  function MPI_Type_match_size(_para1:longint; _para2:longint; _para3:PMPI_Datatype):longint;cdecl;external External_library name 'MPI_Type_match_size';

  function MPI_Win_call_errhandler(_para1:MPI_Win; _para2:longint):longint;cdecl;external External_library name 'MPI_Win_call_errhandler';

  function MPI_Win_create_keyval(_para1:MPI_Win_copy_attr_function; _para2:MPI_Win_delete_attr_function; _para3:Plongint; _para4:pointer):longint;cdecl;external External_library name 'MPI_Win_create_keyval';

  function MPI_Win_delete_attr(_para1:MPI_Win; _para2:longint):longint;cdecl;external External_library name 'MPI_Win_delete_attr';

  function MPI_Win_free_keyval(_para1:Plongint):longint;cdecl;external External_library name 'MPI_Win_free_keyval';

  function MPI_Win_get_attr(_para1:MPI_Win; _para2:longint; _para3:pointer; _para4:Plongint):longint;cdecl;external External_library name 'MPI_Win_get_attr';

  function MPI_Win_get_name(_para1:MPI_Win; _para2:Pchar; _para3:Plongint):longint;cdecl;external External_library name 'MPI_Win_get_name';

  function MPI_Win_set_attr(_para1:MPI_Win; _para2:longint; _para3:pointer):longint;cdecl;external External_library name 'MPI_Win_set_attr';

  function MPI_Win_set_name(_para1:MPI_Win; _para2:Pchar):longint;cdecl;external External_library name 'MPI_Win_set_name';

  { Miscellany  }


  function MPI_Alloc_mem(_para1:MPI_Aint; info:MPI_Info; var baseptr:pointer):longint;cdecl;external External_library name 'MPI_Alloc_mem';

  function MPI_Comm_create_errhandler(_para1:MPI_Comm_errhandler_fn; _para2:PMPI_Errhandler):longint;cdecl;external External_library name 'MPI_Comm_create_errhandler';

  function MPI_Comm_get_errhandler(_para1:MPI_Comm; _para2:PMPI_Errhandler):longint;cdecl;external External_library name 'MPI_Comm_get_errhandler';

  function MPI_Comm_set_errhandler(_para1:MPI_Comm; _para2:MPI_Errhandler):longint;cdecl;external External_library name 'MPI_Comm_set_errhandler';

  function MPI_File_create_errhandler(_para1:MPI_File_errhandler_fn; _para2:PMPI_Errhandler):longint;cdecl;external External_library name 'MPI_File_create_errhandler';

  function MPI_File_get_errhandler(_para1:MPI_File; _para2:PMPI_Errhandler):longint;cdecl;external External_library name 'MPI_File_get_errhandler';

  function MPI_File_set_errhandler(_para1:MPI_File; _para2:MPI_Errhandler):longint;cdecl;external External_library name 'MPI_File_set_errhandler';

  function MPI_Finalized(_para1:Plongint):longint;cdecl;external External_library name 'MPI_Finalized';

  function MPI_Free_mem(_para1:pointer):longint;cdecl;external External_library name 'MPI_Free_mem';

  function MPI_Get_address(_para1:pointer; _para2:PMPI_Aint):longint;cdecl;external External_library name 'MPI_Get_address';

  function MPI_Info_create(_para1:PMPI_Info):longint;cdecl;external External_library name 'MPI_Info_create';

  function MPI_Info_delete(_para1:MPI_Info; _para2:Pchar):longint;cdecl;external External_library name 'MPI_Info_delete';

  function MPI_Info_dup(_para1:MPI_Info; _para2:PMPI_Info):longint;cdecl;external External_library name 'MPI_Info_dup';

  function MPI_Info_free(var info:MPI_Info):longint;cdecl;external External_library name 'MPI_Info_free';

  function MPI_Info_get(_para1:MPI_Info; _para2:Pchar; _para3:longint; _para4:Pchar; _para5:Plongint):longint;cdecl;external External_library name 'MPI_Info_get';

  function MPI_Info_get_nkeys(_para1:MPI_Info; _para2:Plongint):longint;cdecl;external External_library name 'MPI_Info_get_nkeys';

  function MPI_Info_get_nthkey(_para1:MPI_Info; _para2:longint; _para3:Pchar):longint;cdecl;external External_library name 'MPI_Info_get_nthkey';

  function MPI_Info_get_valuelen(_para1:MPI_Info; _para2:Pchar; _para3:Plongint; _para4:Plongint):longint;cdecl;external External_library name 'MPI_Info_get_valuelen';

  function MPI_Info_set(_para1:MPI_Info; _para2:Pchar; _para3:Pchar):longint;cdecl;external External_library name 'MPI_Info_set';

  function MPI_Pack_external(_para1:Pchar; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:pointer; 
             _para6:MPI_Aint; _para7:PMPI_Aint):longint;cdecl;external External_library name 'MPI_Pack_external';

  function MPI_Pack_external_size(_para1:Pchar; _para2:longint; _para3:MPI_Datatype; _para4:PMPI_Aint):longint;cdecl;external External_library name 'MPI_Pack_external_size';

  function MPI_Request_get_status(_para1:MPI_Request; _para2:Plongint; _para3:PMPI_Status):longint;cdecl;external External_library name 'MPI_Request_get_status';

  function MPI_Status_c2f(_para1:PMPI_Status; _para2:PMPI_Fint):longint;cdecl;external External_library name 'MPI_Status_c2f';

  function MPI_Status_f2c(_para1:PMPI_Fint; _para2:PMPI_Status):longint;cdecl;external External_library name 'MPI_Status_f2c';

  function MPI_Type_create_darray(_para1:longint; _para2:longint; _para3:longint; _para4:Plongint; _para5:Plongint; 
             _para6:Plongint; _para7:Plongint; _para8:longint; _para9:MPI_Datatype; _para10:PMPI_Datatype):longint;cdecl;external External_library name 'MPI_Type_create_darray';

  function MPI_Type_create_hindexed(_para1:longint; _para2:Plongint; _para3:PMPI_Aint; _para4:MPI_Datatype; _para5:PMPI_Datatype):longint;cdecl;external External_library name 'MPI_Type_create_hindexed';

  function MPI_Type_create_hvector(_para1:longint; _para2:longint; _para3:MPI_Aint; _para4:MPI_Datatype; _para5:PMPI_Datatype):longint;cdecl;external External_library name 'MPI_Type_create_hvector';

  function MPI_Type_create_indexed_block(_para1:longint; _para2:longint; _para3:Plongint; _para4:MPI_Datatype; _para5:PMPI_Datatype):longint;cdecl;external External_library name 'MPI_Type_create_indexed_block';

  function MPI_Type_create_resized(_para1:MPI_Datatype; _para2:MPI_Aint; _para3:MPI_Aint; _para4:PMPI_Datatype):longint;cdecl;external External_library name 'MPI_Type_create_resized';

  function MPI_Type_create_struct(_para1:longint; _para2:Plongint; _para3:PMPI_Aint; _para4:PMPI_Datatype; _para5:PMPI_Datatype):longint;cdecl;external External_library name 'MPI_Type_create_struct';

  function MPI_Type_create_subarray(_para1:longint; _para2:Plongint; _para3:Plongint; _para4:Plongint; _para5:longint; 
             _para6:MPI_Datatype; _para7:PMPI_Datatype):longint;cdecl;external External_library name 'MPI_Type_create_subarray';

  function MPI_Type_get_extent(_para1:MPI_Datatype; _para2:PMPI_Aint; _para3:PMPI_Aint):longint;cdecl;external External_library name 'MPI_Type_get_extent';

  function MPI_Type_get_true_extent(_para1:MPI_Datatype; _para2:PMPI_Aint; _para3:PMPI_Aint):longint;cdecl;external External_library name 'MPI_Type_get_true_extent';

  function MPI_Unpack_external(_para1:Pchar; _para2:pointer; _para3:MPI_Aint; _para4:PMPI_Aint; _para5:pointer; 
             _para6:longint; _para7:MPI_Datatype):longint;cdecl;external External_library name 'MPI_Unpack_external';

  function MPI_Win_create_errhandler(_para1:MPI_Win_errhandler_fn; _para2:PMPI_Errhandler):longint;cdecl;external External_library name 'MPI_Win_create_errhandler';

  function MPI_Win_get_errhandler(_para1:MPI_Win; _para2:PMPI_Errhandler):longint;cdecl;external External_library name 'MPI_Win_get_errhandler';

  function MPI_Win_set_errhandler(_para1:MPI_Win; _para2:MPI_Errhandler):longint;cdecl;external External_library name 'MPI_Win_set_errhandler';

  { Fortran 90-related functions.  These routines are available only if
     Fortran 90 support is enabled 
   }
  function MPI_Type_create_f90_integer(_para1:longint; _para2:PMPI_Datatype):longint;cdecl;external External_library name 'MPI_Type_create_f90_integer';

  function MPI_Type_create_f90_real(_para1:longint; _para2:longint; _para3:PMPI_Datatype):longint;cdecl;external External_library name 'MPI_Type_create_f90_real';

  function MPI_Type_create_f90_complex(_para1:longint; _para2:longint; _para3:PMPI_Datatype):longint;cdecl;external External_library name 'MPI_Type_create_f90_complex';

  { End Prototypes  }

  { MPICH_SUPPRESS_PROTOTYPES  }
  { Here are the bindings of the profiling routines  }


  function PMPI_Send(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:MPI_Comm):longint;cdecl;external External_library name 'PMPI_Send';

  function PMPI_Recv(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:MPI_Comm; _para7:PMPI_Status):longint;cdecl;external External_library name 'PMPI_Recv';

  function PMPI_Get_count(_para1:PMPI_Status; _para2:MPI_Datatype; _para3:Plongint):longint;cdecl;external External_library name 'PMPI_Get_count';

  function PMPI_Bsend(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:MPI_Comm):longint;cdecl;external External_library name 'PMPI_Bsend';

  function PMPI_Ssend(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:MPI_Comm):longint;cdecl;external External_library name 'PMPI_Ssend';

  function PMPI_Rsend(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:MPI_Comm):longint;cdecl;external External_library name 'PMPI_Rsend';

  function PMPI_Buffer_attach(var buffer:pointer; _para2:longint):longint;cdecl;external External_library name 'PMPI_Buffer_attach';

  function PMPI_Buffer_detach(var buffer:pointer; _para2:Plongint):longint;cdecl;external External_library name 'PMPI_Buffer_detach';

  function PMPI_Isend(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:MPI_Comm; _para7:PMPI_Request):longint;cdecl;external External_library name 'PMPI_Isend';

  function PMPI_Ibsend(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:MPI_Comm; _para7:PMPI_Request):longint;cdecl;external External_library name 'PMPI_Ibsend';

  function PMPI_Issend(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:MPI_Comm; _para7:PMPI_Request):longint;cdecl;external External_library name 'PMPI_Issend';

  function PMPI_Irsend(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:MPI_Comm; _para7:PMPI_Request):longint;cdecl;external External_library name 'PMPI_Irsend';

  function PMPI_Irecv(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:MPI_Comm; _para7:PMPI_Request):longint;cdecl;external External_library name 'PMPI_Irecv';

  function PMPI_Wait(_para1:PMPI_Request; _para2:PMPI_Status):longint;cdecl;external External_library name 'PMPI_Wait';

  function PMPI_Test(_para1:PMPI_Request; _para2:Plongint; _para3:PMPI_Status):longint;cdecl;external External_library name 'PMPI_Test';

  function PMPI_Request_free(_para1:PMPI_Request):longint;cdecl;external External_library name 'PMPI_Request_free';

  function PMPI_Waitany(_para1:longint; _para2:PMPI_Request; _para3:Plongint; _para4:PMPI_Status):longint;cdecl;external External_library name 'PMPI_Waitany';

  function PMPI_Testany(_para1:longint; _para2:PMPI_Request; _para3:Plongint; _para4:Plongint; _para5:PMPI_Status):longint;cdecl;external External_library name 'PMPI_Testany';

  function PMPI_Waitall(_para1:longint; _para2:PMPI_Request; _para3:PMPI_Status):longint;cdecl;external External_library name 'PMPI_Waitall';

  function PMPI_Testall(_para1:longint; _para2:PMPI_Request; _para3:Plongint; _para4:PMPI_Status):longint;cdecl;external External_library name 'PMPI_Testall';

  function PMPI_Waitsome(_para1:longint; _para2:PMPI_Request; _para3:Plongint; _para4:Plongint; _para5:PMPI_Status):longint;cdecl;external External_library name 'PMPI_Waitsome';

  function PMPI_Testsome(_para1:longint; _para2:PMPI_Request; _para3:Plongint; _para4:Plongint; _para5:PMPI_Status):longint;cdecl;external External_library name 'PMPI_Testsome';

  function PMPI_Iprobe(_para1:longint; _para2:longint; _para3:MPI_Comm; _para4:Plongint; _para5:PMPI_Status):longint;cdecl;external External_library name 'PMPI_Iprobe';

  function PMPI_Probe(_para1:longint; _para2:longint; _para3:MPI_Comm; _para4:PMPI_Status):longint;cdecl;external External_library name 'PMPI_Probe';

  function PMPI_Cancel(_para1:PMPI_Request):longint;cdecl;external External_library name 'PMPI_Cancel';

  function PMPI_Test_cancelled(_para1:PMPI_Status; _para2:Plongint):longint;cdecl;external External_library name 'PMPI_Test_cancelled';

  function PMPI_Send_init(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:MPI_Comm; _para7:PMPI_Request):longint;cdecl;external External_library name 'PMPI_Send_init';

  function PMPI_Bsend_init(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:MPI_Comm; _para7:PMPI_Request):longint;cdecl;external External_library name 'PMPI_Bsend_init';

  function PMPI_Ssend_init(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:MPI_Comm; _para7:PMPI_Request):longint;cdecl;external External_library name 'PMPI_Ssend_init';

  function PMPI_Rsend_init(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:MPI_Comm; _para7:PMPI_Request):longint;cdecl;external External_library name 'PMPI_Rsend_init';

  function PMPI_Recv_init(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:MPI_Comm; _para7:PMPI_Request):longint;cdecl;external External_library name 'PMPI_Recv_init';

  function PMPI_Start(_para1:PMPI_Request):longint;cdecl;external External_library name 'PMPI_Start';

  function PMPI_Startall(_para1:longint; _para2:PMPI_Request):longint;cdecl;external External_library name 'PMPI_Startall';

  function PMPI_Sendrecv(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:pointer; _para7:longint; _para8:MPI_Datatype; _para9:longint; _para10:longint; 
             _para11:MPI_Comm; _para12:PMPI_Status):longint;cdecl;external External_library name 'PMPI_Sendrecv';

  function PMPI_Sendrecv_replace(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:longint; 
             _para6:longint; _para7:longint; _para8:MPI_Comm; _para9:PMPI_Status):longint;cdecl;external External_library name 'PMPI_Sendrecv_replace';

  function PMPI_Type_contiguous(_para1:longint; _para2:MPI_Datatype; _para3:PMPI_Datatype):longint;cdecl;external External_library name 'PMPI_Type_contiguous';

  function PMPI_Type_vector(_para1:longint; _para2:longint; _para3:longint; _para4:MPI_Datatype; _para5:PMPI_Datatype):longint;cdecl;external External_library name 'PMPI_Type_vector';

  function PMPI_Type_hvector(_para1:longint; _para2:longint; _para3:MPI_Aint; _para4:MPI_Datatype; _para5:PMPI_Datatype):longint;cdecl;external External_library name 'PMPI_Type_hvector';

  function PMPI_Type_indexed(_para1:longint; _para2:Plongint; _para3:Plongint; _para4:MPI_Datatype; _para5:PMPI_Datatype):longint;cdecl;external External_library name 'PMPI_Type_indexed';

  function PMPI_Type_hindexed(_para1:longint; _para2:Plongint; _para3:PMPI_Aint; _para4:MPI_Datatype; _para5:PMPI_Datatype):longint;cdecl;external External_library name 'PMPI_Type_hindexed';

  function PMPI_Type_struct(_para1:longint; _para2:Plongint; _para3:PMPI_Aint; _para4:PMPI_Datatype; _para5:PMPI_Datatype):longint;cdecl;external External_library name 'PMPI_Type_struct';

  function PMPI_Address(_para1:pointer; _para2:PMPI_Aint):longint;cdecl;external External_library name 'PMPI_Address';

  function PMPI_Type_extent(_para1:MPI_Datatype; _para2:PMPI_Aint):longint;cdecl;external External_library name 'PMPI_Type_extent';

  function PMPI_Type_size(_para1:MPI_Datatype; _para2:Plongint):longint;cdecl;external External_library name 'PMPI_Type_size';

  function PMPI_Type_lb(_para1:MPI_Datatype; _para2:PMPI_Aint):longint;cdecl;external External_library name 'PMPI_Type_lb';

  function PMPI_Type_ub(_para1:MPI_Datatype; _para2:PMPI_Aint):longint;cdecl;external External_library name 'PMPI_Type_ub';

  function PMPI_Type_commit(_para1:PMPI_Datatype):longint;cdecl;external External_library name 'PMPI_Type_commit';

  function PMPI_Type_free(_para1:PMPI_Datatype):longint;cdecl;external External_library name 'PMPI_Type_free';

  function PMPI_Get_elements(_para1:PMPI_Status; _para2:MPI_Datatype; _para3:Plongint):longint;cdecl;external External_library name 'PMPI_Get_elements';

  function PMPI_Pack(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:pointer; _para5:longint; 
             _para6:Plongint; _para7:MPI_Comm):longint;cdecl;external External_library name 'PMPI_Pack';

  function PMPI_Unpack(_para1:pointer; _para2:longint; _para3:Plongint; _para4:pointer; _para5:longint; 
             _para6:MPI_Datatype; _para7:MPI_Comm):longint;cdecl;external External_library name 'PMPI_Unpack';

  function PMPI_Pack_size(_para1:longint; _para2:MPI_Datatype; _para3:MPI_Comm; _para4:Plongint):longint;cdecl;external External_library name 'PMPI_Pack_size';

  function PMPI_Barrier(_para1:MPI_Comm):longint;cdecl;external External_library name 'PMPI_Barrier';

  function PMPI_Bcast(var buffer:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:MPI_Comm):longint;cdecl;external External_library name 'PMPI_Bcast';

  function PMPI_Gather(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:pointer; _para5:longint; 
             _para6:MPI_Datatype; _para7:longint; _para8:MPI_Comm):longint;cdecl;external External_library name 'PMPI_Gather';

  function PMPI_Gatherv(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:pointer; _para5:Plongint; 
             _para6:Plongint; _para7:MPI_Datatype; _para8:longint; _para9:MPI_Comm):longint;cdecl;external External_library name 'PMPI_Gatherv';

  function PMPI_Scatter(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:pointer; _para5:longint; 
             _para6:MPI_Datatype; _para7:longint; _para8:MPI_Comm):longint;cdecl;external External_library name 'PMPI_Scatter';

  function PMPI_Scatterv(_para1:pointer; _para2:Plongint; var displs:longint; _para4:MPI_Datatype; _para5:pointer; 
             _para6:longint; _para7:MPI_Datatype; _para8:longint; _para9:MPI_Comm):longint;cdecl;external External_library name 'PMPI_Scatterv';

  function PMPI_Allgather(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:pointer; _para5:longint; 
             _para6:MPI_Datatype; _para7:MPI_Comm):longint;cdecl;external External_library name 'PMPI_Allgather';

  function PMPI_Allgatherv(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:pointer; _para5:Plongint; 
             _para6:Plongint; _para7:MPI_Datatype; _para8:MPI_Comm):longint;cdecl;external External_library name 'PMPI_Allgatherv';

  function PMPI_Alltoall(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:pointer; _para5:longint; 
             _para6:MPI_Datatype; _para7:MPI_Comm):longint;cdecl;external External_library name 'PMPI_Alltoall';

  function PMPI_Alltoallv(_para1:pointer; _para2:Plongint; _para3:Plongint; _para4:MPI_Datatype; _para5:pointer; 
             _para6:Plongint; _para7:Plongint; _para8:MPI_Datatype; _para9:MPI_Comm):longint;cdecl;external External_library name 'PMPI_Alltoallv';

  function PMPI_Reduce(_para1:pointer; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:MPI_Op; 
             _para6:longint; _para7:MPI_Comm):longint;cdecl;external External_library name 'PMPI_Reduce';

  function PMPI_Op_create(_para1:MPI_User_function; _para2:longint; _para3:PMPI_Op):longint;cdecl;external External_library name 'PMPI_Op_create';

  function PMPI_Op_free(_para1:PMPI_Op):longint;cdecl;external External_library name 'PMPI_Op_free';

  function PMPI_Allreduce(_para1:pointer; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:MPI_Op; 
             _para6:MPI_Comm):longint;cdecl;external External_library name 'PMPI_Allreduce';

  function PMPI_Reduce_scatter(_para1:pointer; _para2:pointer; _para3:Plongint; _para4:MPI_Datatype; _para5:MPI_Op; 
             _para6:MPI_Comm):longint;cdecl;external External_library name 'PMPI_Reduce_scatter';

  function PMPI_Scan(_para1:pointer; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:MPI_Op; 
             _para6:MPI_Comm):longint;cdecl;external External_library name 'PMPI_Scan';

  function PMPI_Group_size(_para1:MPI_Group; _para2:Plongint):longint;cdecl;external External_library name 'PMPI_Group_size';

  function PMPI_Group_rank(_para1:MPI_Group; _para2:Plongint):longint;cdecl;external External_library name 'PMPI_Group_rank';

  function PMPI_Group_translate_ranks(_para1:MPI_Group; _para2:longint; _para3:Plongint; _para4:MPI_Group; _para5:Plongint):longint;cdecl;external External_library name 'PMPI_Group_translate_ranks';

  function PMPI_Group_compare(_para1:MPI_Group; _para2:MPI_Group; _para3:Plongint):longint;cdecl;external External_library name 'PMPI_Group_compare';

  function PMPI_Comm_group(_para1:MPI_Comm; _para2:PMPI_Group):longint;cdecl;external External_library name 'PMPI_Comm_group';

  function PMPI_Group_union(_para1:MPI_Group; _para2:MPI_Group; _para3:PMPI_Group):longint;cdecl;external External_library name 'PMPI_Group_union';

  function PMPI_Group_intersection(_para1:MPI_Group; _para2:MPI_Group; _para3:PMPI_Group):longint;cdecl;external External_library name 'PMPI_Group_intersection';

  function PMPI_Group_difference(_para1:MPI_Group; _para2:MPI_Group; _para3:PMPI_Group):longint;cdecl;external External_library name 'PMPI_Group_difference';

  function PMPI_Group_incl(_para1:MPI_Group; _para2:longint; _para3:Plongint; _para4:PMPI_Group):longint;cdecl;external External_library name 'PMPI_Group_incl';

  function PMPI_Group_excl(_para1:MPI_Group; _para2:longint; _para3:Plongint; _para4:PMPI_Group):longint;cdecl;external External_library name 'PMPI_Group_excl';

  function PMPI_Group_range_incl(_para1:MPI_Group; _para2:longint; _para3:TArray0to2OfPlongint; _para4:PMPI_Group):longint;cdecl;external External_library name 'PMPI_Group_range_incl';

  function PMPI_Group_range_excl(_para1:MPI_Group; _para2:longint; _para3:TArray0to2OfPlongint; _para4:PMPI_Group):longint;cdecl;external External_library name 'PMPI_Group_range_excl';

  function PMPI_Group_free(_para1:PMPI_Group):longint;cdecl;external External_library name 'PMPI_Group_free';

  function PMPI_Comm_size(_para1:MPI_Comm; _para2:Plongint):longint;cdecl;external External_library name 'PMPI_Comm_size';

  function PMPI_Comm_rank(_para1:MPI_Comm; _para2:Plongint):longint;cdecl;external External_library name 'PMPI_Comm_rank';

  function PMPI_Comm_compare(_para1:MPI_Comm; _para2:MPI_Comm; _para3:Plongint):longint;cdecl;external External_library name 'PMPI_Comm_compare';

  function PMPI_Comm_dup(_para1:MPI_Comm; _para2:PMPI_Comm):longint;cdecl;external External_library name 'PMPI_Comm_dup';

  function PMPI_Comm_create(_para1:MPI_Comm; _para2:MPI_Group; _para3:PMPI_Comm):longint;cdecl;external External_library name 'PMPI_Comm_create';

  function PMPI_Comm_split(_para1:MPI_Comm; _para2:longint; _para3:longint; _para4:PMPI_Comm):longint;cdecl;external External_library name 'PMPI_Comm_split';

  function PMPI_Comm_free(_para1:PMPI_Comm):longint;cdecl;external External_library name 'PMPI_Comm_free';

  function PMPI_Comm_test_inter(_para1:MPI_Comm; _para2:Plongint):longint;cdecl;external External_library name 'PMPI_Comm_test_inter';

  function PMPI_Comm_remote_size(_para1:MPI_Comm; _para2:Plongint):longint;cdecl;external External_library name 'PMPI_Comm_remote_size';

  function PMPI_Comm_remote_group(_para1:MPI_Comm; _para2:PMPI_Group):longint;cdecl;external External_library name 'PMPI_Comm_remote_group';

  function PMPI_Intercomm_create(_para1:MPI_Comm; _para2:longint; _para3:MPI_Comm; _para4:longint; _para5:longint; 
             _para6:PMPI_Comm):longint;cdecl;external External_library name 'PMPI_Intercomm_create';

  function PMPI_Intercomm_merge(_para1:MPI_Comm; _para2:longint; _para3:PMPI_Comm):longint;cdecl;external External_library name 'PMPI_Intercomm_merge';

  function PMPI_Keyval_create(_para1:MPI_Copy_function; _para2:MPI_Delete_function; _para3:Plongint; _para4:pointer):longint;cdecl;external External_library name 'PMPI_Keyval_create';

  function PMPI_Keyval_free(_para1:Plongint):longint;cdecl;external External_library name 'PMPI_Keyval_free';

  function PMPI_Attr_put(_para1:MPI_Comm; _para2:longint; _para3:pointer):longint;cdecl;external External_library name 'PMPI_Attr_put';

  function PMPI_Attr_get(_para1:MPI_Comm; _para2:longint; _para3:pointer; _para4:Plongint):longint;cdecl;external External_library name 'PMPI_Attr_get';

  function PMPI_Attr_delete(_para1:MPI_Comm; _para2:longint):longint;cdecl;external External_library name 'PMPI_Attr_delete';

  function PMPI_Topo_test(_para1:MPI_Comm; _para2:Plongint):longint;cdecl;external External_library name 'PMPI_Topo_test';

  function PMPI_Cart_create(_para1:MPI_Comm; _para2:longint; _para3:Plongint; _para4:Plongint; _para5:longint; 
             _para6:PMPI_Comm):longint;cdecl;external External_library name 'PMPI_Cart_create';

  function PMPI_Dims_create(_para1:longint; _para2:longint; _para3:Plongint):longint;cdecl;external External_library name 'PMPI_Dims_create';

  function PMPI_Graph_create(_para1:MPI_Comm; _para2:longint; _para3:Plongint; _para4:Plongint; _para5:longint; 
             _para6:PMPI_Comm):longint;cdecl;external External_library name 'PMPI_Graph_create';

  function PMPI_Graphdims_get(_para1:MPI_Comm; _para2:Plongint; _para3:Plongint):longint;cdecl;external External_library name 'PMPI_Graphdims_get';

  function PMPI_Graph_get(_para1:MPI_Comm; _para2:longint; _para3:longint; _para4:Plongint; _para5:Plongint):longint;cdecl;external External_library name 'PMPI_Graph_get';

  function PMPI_Cartdim_get(_para1:MPI_Comm; _para2:Plongint):longint;cdecl;external External_library name 'PMPI_Cartdim_get';

  function PMPI_Cart_get(_para1:MPI_Comm; _para2:longint; _para3:Plongint; _para4:Plongint; _para5:Plongint):longint;cdecl;external External_library name 'PMPI_Cart_get';

  function PMPI_Cart_rank(_para1:MPI_Comm; _para2:Plongint; _para3:Plongint):longint;cdecl;external External_library name 'PMPI_Cart_rank';

  function PMPI_Cart_coords(_para1:MPI_Comm; _para2:longint; _para3:longint; _para4:Plongint):longint;cdecl;external External_library name 'PMPI_Cart_coords';

  function PMPI_Graph_neighbors_count(_para1:MPI_Comm; _para2:longint; _para3:Plongint):longint;cdecl;external External_library name 'PMPI_Graph_neighbors_count';

  function PMPI_Graph_neighbors(_para1:MPI_Comm; _para2:longint; _para3:longint; _para4:Plongint):longint;cdecl;external External_library name 'PMPI_Graph_neighbors';

  function PMPI_Cart_shift(_para1:MPI_Comm; _para2:longint; _para3:longint; _para4:Plongint; _para5:Plongint):longint;cdecl;external External_library name 'PMPI_Cart_shift';

  function PMPI_Cart_sub(_para1:MPI_Comm; _para2:Plongint; _para3:PMPI_Comm):longint;cdecl;external External_library name 'PMPI_Cart_sub';

  function PMPI_Cart_map(_para1:MPI_Comm; _para2:longint; _para3:Plongint; _para4:Plongint; _para5:Plongint):longint;cdecl;external External_library name 'PMPI_Cart_map';

  function PMPI_Graph_map(_para1:MPI_Comm; _para2:longint; _para3:Plongint; _para4:Plongint; _para5:Plongint):longint;cdecl;external External_library name 'PMPI_Graph_map';

  function PMPI_Get_processor_name(_para1:Pchar; _para2:Plongint):longint;cdecl;external External_library name 'PMPI_Get_processor_name';

  function PMPI_Get_version(_para1:Plongint; _para2:Plongint):longint;cdecl;external External_library name 'PMPI_Get_version';

  function PMPI_Errhandler_create(_para1:MPI_Handler_function; _para2:PMPI_Errhandler):longint;cdecl;external External_library name 'PMPI_Errhandler_create';

  function PMPI_Errhandler_set(_para1:MPI_Comm; _para2:MPI_Errhandler):longint;cdecl;external External_library name 'PMPI_Errhandler_set';

  function PMPI_Errhandler_get(_para1:MPI_Comm; _para2:PMPI_Errhandler):longint;cdecl;external External_library name 'PMPI_Errhandler_get';

  function PMPI_Errhandler_free(_para1:PMPI_Errhandler):longint;cdecl;external External_library name 'PMPI_Errhandler_free';

  function PMPI_Error_string(_para1:longint; _para2:Pchar; _para3:Plongint):longint;cdecl;external External_library name 'PMPI_Error_string';

  function PMPI_Error_class(_para1:longint; _para2:Plongint):longint;cdecl;external External_library name 'PMPI_Error_class';

  function PMPI_Type_get_envelope(_para1:MPI_Datatype; _para2:Plongint; _para3:Plongint; _para4:Plongint; _para5:Plongint):longint;cdecl;external External_library name 'PMPI_Type_get_envelope';

  { Wtime done above  }
  function PMPI_Init(_para1:Plongint; _para2:PPPchar):longint;cdecl;external External_library name 'PMPI_Init';

  function PMPI_Finalize:longint;cdecl;external External_library name 'PMPI_Finalize';

  function PMPI_Initialized(_para1:Plongint):longint;cdecl;external External_library name 'PMPI_Initialized';

  function PMPI_Abort(_para1:MPI_Comm; _para2:longint):longint;cdecl;external External_library name 'PMPI_Abort';

(*  before  ignored *)
  function PMPI_Pcontrol(_para1:longint; args:array of const):longint;cdecl;external External_library name 'PMPI_Pcontrol';

  //function PMPI_Pcontrol(_para1:longint):longint;cdecl;external External_library name 'PMPI_Pcontrol';

  { MPI-2 functions  }
  { Process Creation and Management  }
  function PMPI_Close_port(_para1:Pchar):longint;cdecl;external External_library name 'PMPI_Close_port';

  function PMPI_Comm_accept(_para1:Pchar; _para2:MPI_Info; _para3:longint; _para4:MPI_Comm; _para5:PMPI_Comm):longint;cdecl;external External_library name 'PMPI_Comm_accept';

  function PMPI_Comm_connect(_para1:Pchar; _para2:MPI_Info; _para3:longint; _para4:MPI_Comm; _para5:PMPI_Comm):longint;cdecl;external External_library name 'PMPI_Comm_connect';

  function PMPI_Comm_disconnect(_para1:PMPI_Comm):longint;cdecl;external External_library name 'PMPI_Comm_disconnect';

  function PMPI_Comm_get_parent(_para1:PMPI_Comm):longint;cdecl;external External_library name 'PMPI_Comm_get_parent';

  function PMPI_Comm_join(_para1:longint; _para2:PMPI_Comm):longint;cdecl;external External_library name 'PMPI_Comm_join';

  function PMPI_Comm_spawn(_para1:Pchar; _para2:PPchar; _para3:longint; _para4:MPI_Info; _para5:longint; 
             _para6:MPI_Comm; _para7:PMPI_Comm; _para8:Plongint):longint;cdecl;external External_library name 'PMPI_Comm_spawn';

  function PMPI_Comm_spawn_multiple(_para1:longint; _para2:PPchar; _para3:PPPchar; _para4:Plongint; _para5:PMPI_Info; 
             _para6:longint; _para7:MPI_Comm; _para8:PMPI_Comm; _para9:Plongint):longint;cdecl;external External_library name 'PMPI_Comm_spawn_multiple';

  function PMPI_Lookup_name(_para1:Pchar; _para2:MPI_Info; _para3:Pchar):longint;cdecl;external External_library name 'PMPI_Lookup_name';

  function PMPI_Open_port(_para1:MPI_Info; _para2:Pchar):longint;cdecl;external External_library name 'PMPI_Open_port';

  function PMPI_Publish_name(_para1:Pchar; _para2:MPI_Info; _para3:Pchar):longint;cdecl;external External_library name 'PMPI_Publish_name';

  function PMPI_Unpublish_name(_para1:Pchar; _para2:MPI_Info; _para3:Pchar):longint;cdecl;external External_library name 'PMPI_Unpublish_name';

  { One-Sided Communications  }
  function PMPI_Accumulate(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:MPI_Aint; 
             _para6:longint; _para7:MPI_Datatype; _para8:MPI_Op; _para9:MPI_Win):longint;cdecl;external External_library name 'PMPI_Accumulate';

  function PMPI_Get(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:MPI_Aint; 
             _para6:longint; _para7:MPI_Datatype; _para8:MPI_Win):longint;cdecl;external External_library name 'PMPI_Get';

  function PMPI_Put(_para1:pointer; _para2:longint; _para3:MPI_Datatype; _para4:longint; _para5:MPI_Aint; 
             _para6:longint; _para7:MPI_Datatype; _para8:MPI_Win):longint;cdecl;external External_library name 'PMPI_Put';

  function PMPI_Win_complete(_para1:MPI_Win):longint;cdecl;external External_library name 'PMPI_Win_complete';

  function PMPI_Win_create(_para1:pointer; _para2:MPI_Aint; _para3:longint; _para4:MPI_Info; _para5:MPI_Comm; 
             _para6:PMPI_Win):longint;cdecl;external External_library name 'PMPI_Win_create';

  function PMPI_Win_fence(_para1:longint; _para2:MPI_Win):longint;cdecl;external External_library name 'PMPI_Win_fence';

  function PMPI_Win_free(_para1:PMPI_Win):longint;cdecl;external External_library name 'PMPI_Win_free';

  function PMPI_Win_get_group(_para1:MPI_Win; _para2:PMPI_Group):longint;cdecl;external External_library name 'PMPI_Win_get_group';

  function PMPI_Win_lock(_para1:longint; _para2:longint; _para3:longint; _para4:MPI_Win):longint;cdecl;external External_library name 'PMPI_Win_lock';

  function PMPI_Win_post(_para1:MPI_Group; _para2:longint; _para3:MPI_Win):longint;cdecl;external External_library name 'PMPI_Win_post';

  function PMPI_Win_start(_para1:MPI_Group; _para2:longint; _para3:MPI_Win):longint;cdecl;external External_library name 'PMPI_Win_start';

  function PMPI_Win_test(_para1:MPI_Win; _para2:Plongint):longint;cdecl;external External_library name 'PMPI_Win_test';

  function PMPI_Win_unlock(_para1:longint; _para2:MPI_Win):longint;cdecl;external External_library name 'PMPI_Win_unlock';

  function PMPI_Win_wait(_para1:MPI_Win):longint;cdecl;external External_library name 'PMPI_Win_wait';

  { Extended Collective Operations  }
  function PMPI_Alltoallw(_para1:pointer; _para2:Plongint; _para3:Plongint; _para4:PMPI_Datatype; _para5:pointer; 
             _para6:Plongint; _para7:Plongint; _para8:PMPI_Datatype; _para9:MPI_Comm):longint;cdecl;external External_library name 'PMPI_Alltoallw';

  function PMPI_Exscan(_para1:pointer; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:MPI_Op; 
             _para6:MPI_Comm):longint;cdecl;external External_library name 'PMPI_Exscan';

  { External Interfaces  }
  function PMPI_Add_error_class(_para1:Plongint):longint;cdecl;external External_library name 'PMPI_Add_error_class';

  function PMPI_Add_error_code(_para1:longint; _para2:Plongint):longint;cdecl;external External_library name 'PMPI_Add_error_code';

  function PMPI_Add_error_string(_para1:longint; _para2:Pchar):longint;cdecl;external External_library name 'PMPI_Add_error_string';

  function PMPI_Comm_call_errhandler(_para1:MPI_Comm; _para2:longint):longint;cdecl;external External_library name 'PMPI_Comm_call_errhandler';

  function PMPI_Comm_create_keyval(_para1:MPI_Comm_copy_attr_function; _para2:MPI_Comm_delete_attr_function; _para3:Plongint; _para4:pointer):longint;cdecl;external External_library name 'PMPI_Comm_create_keyval';

  function PMPI_Comm_delete_attr(_para1:MPI_Comm; _para2:longint):longint;cdecl;external External_library name 'PMPI_Comm_delete_attr';

  function PMPI_Comm_free_keyval(_para1:Plongint):longint;cdecl;external External_library name 'PMPI_Comm_free_keyval';

  function PMPI_Comm_get_attr(_para1:MPI_Comm; _para2:longint; _para3:pointer; _para4:Plongint):longint;cdecl;external External_library name 'PMPI_Comm_get_attr';

  function PMPI_Comm_get_name(_para1:MPI_Comm; _para2:Pchar; _para3:Plongint):longint;cdecl;external External_library name 'PMPI_Comm_get_name';

  function PMPI_Comm_set_attr(_para1:MPI_Comm; _para2:longint; _para3:pointer):longint;cdecl;external External_library name 'PMPI_Comm_set_attr';

  function PMPI_Comm_set_name(_para1:MPI_Comm; _para2:Pchar):longint;cdecl;external External_library name 'PMPI_Comm_set_name';

  function PMPI_File_call_errhandler(_para1:MPI_File; _para2:longint):longint;cdecl;external External_library name 'PMPI_File_call_errhandler';

  function PMPI_Grequest_complete(_para1:MPI_Request):longint;cdecl;external External_library name 'PMPI_Grequest_complete';

  function PMPI_Grequest_start(_para1:MPI_Grequest_query_function; _para2:MPI_Grequest_free_function; _para3:MPI_Grequest_cancel_function; _para4:pointer; _para5:PMPI_Request):longint;cdecl;external External_library name 'PMPI_Grequest_start';

  function PMPI_Init_thread(_para1:Plongint; _para2:PPPchar; _para3:longint; _para4:Plongint):longint;cdecl;external External_library name 'PMPI_Init_thread';

  function PMPI_Is_thread_main(_para1:Plongint):longint;cdecl;external External_library name 'PMPI_Is_thread_main';

  function PMPI_Query_thread(_para1:Plongint):longint;cdecl;external External_library name 'PMPI_Query_thread';

  function PMPI_Status_set_cancelled(_para1:PMPI_Status; _para2:longint):longint;cdecl;external External_library name 'PMPI_Status_set_cancelled';

  function PMPI_Status_set_elements(_para1:PMPI_Status; _para2:MPI_Datatype; _para3:longint):longint;cdecl;external External_library name 'PMPI_Status_set_elements';

  function PMPI_Type_create_keyval(_para1:MPI_Type_copy_attr_function; _para2:MPI_Type_delete_attr_function; _para3:Plongint; _para4:pointer):longint;cdecl;external External_library name 'PMPI_Type_create_keyval';

  function PMPI_Type_delete_attr(_para1:MPI_Datatype; _para2:longint):longint;cdecl;external External_library name 'PMPI_Type_delete_attr';

  function PMPI_Type_dup(_para1:MPI_Datatype; _para2:PMPI_Datatype):longint;cdecl;external External_library name 'PMPI_Type_dup';

  function PMPI_Type_free_keyval(_para1:Plongint):longint;cdecl;external External_library name 'PMPI_Type_free_keyval';

  function PMPI_Type_get_attr(_para1:MPI_Datatype; _para2:longint; _para3:pointer; _para4:Plongint):longint;cdecl;external External_library name 'PMPI_Type_get_attr';

  function PMPI_Type_get_contents(_para1:MPI_Datatype; _para2:longint; _para3:longint; _para4:longint; _para5:Plongint; 
             _para6:PMPI_Aint; _para7:PMPI_Datatype):longint;cdecl;external External_library name 'PMPI_Type_get_contents';


  function PMPI_Type_get_name(_para1:MPI_Datatype; _para2:Pchar; _para3:Plongint):longint;cdecl;external External_library name 'PMPI_Type_get_name';

  function PMPI_Type_set_attr(_para1:MPI_Datatype; _para2:longint; _para3:pointer):longint;cdecl;external External_library name 'PMPI_Type_set_attr';

  function PMPI_Type_set_name(_para1:MPI_Datatype; _para2:Pchar):longint;cdecl;external External_library name 'PMPI_Type_set_name';

  function PMPI_Type_match_size(_para1:longint; _para2:longint; _para3:PMPI_Datatype):longint;cdecl;external External_library name 'PMPI_Type_match_size';

  function PMPI_Win_call_errhandler(_para1:MPI_Win; _para2:longint):longint;cdecl;external External_library name 'PMPI_Win_call_errhandler';

  function PMPI_Win_create_keyval(_para1:MPI_Win_copy_attr_function; _para2:MPI_Win_delete_attr_function; _para3:Plongint; _para4:pointer):longint;cdecl;external External_library name 'PMPI_Win_create_keyval';

  function PMPI_Win_delete_attr(_para1:MPI_Win; _para2:longint):longint;cdecl;external External_library name 'PMPI_Win_delete_attr';

  function PMPI_Win_free_keyval(_para1:Plongint):longint;cdecl;external External_library name 'PMPI_Win_free_keyval';

  function PMPI_Win_get_attr(_para1:MPI_Win; _para2:longint; _para3:pointer; _para4:Plongint):longint;cdecl;external External_library name 'PMPI_Win_get_attr';

  function PMPI_Win_get_name(_para1:MPI_Win; _para2:Pchar; _para3:Plongint):longint;cdecl;external External_library name 'PMPI_Win_get_name';

  function PMPI_Win_set_attr(_para1:MPI_Win; _para2:longint; _para3:pointer):longint;cdecl;external External_library name 'PMPI_Win_set_attr';

  function PMPI_Win_set_name(_para1:MPI_Win; _para2:Pchar):longint;cdecl;external External_library name 'PMPI_Win_set_name';

  { Fortran 90-related functions.  These routines are available only if
     Fortran 90 support is enabled 
   }
  function PMPI_Type_create_f90_integer(_para1:longint; _para2:PMPI_Datatype):longint;cdecl;external External_library name 'PMPI_Type_create_f90_integer';

  function PMPI_Type_create_f90_real(_para1:longint; _para2:longint; _para3:PMPI_Datatype):longint;cdecl;external External_library name 'PMPI_Type_create_f90_real';

  function PMPI_Type_create_f90_complex(_para1:longint; _para2:longint; _para3:PMPI_Datatype):longint;cdecl;external External_library name 'PMPI_Type_create_f90_complex';

  { Miscellany  }
  function PMPI_Alloc_mem(_para1:MPI_Aint; info:MPI_Info; var baseptr:pointer):longint;cdecl;external External_library name 'PMPI_Alloc_mem';

  function PMPI_Comm_create_errhandler(_para1:MPI_Comm_errhandler_fn; _para2:PMPI_Errhandler):longint;cdecl;external External_library name 'PMPI_Comm_create_errhandler';

  function PMPI_Comm_get_errhandler(_para1:MPI_Comm; _para2:PMPI_Errhandler):longint;cdecl;external External_library name 'PMPI_Comm_get_errhandler';

  function PMPI_Comm_set_errhandler(_para1:MPI_Comm; _para2:MPI_Errhandler):longint;cdecl;external External_library name 'PMPI_Comm_set_errhandler';

  function PMPI_File_create_errhandler(_para1:MPI_File_errhandler_fn; _para2:PMPI_Errhandler):longint;cdecl;external External_library name 'PMPI_File_create_errhandler';

  function PMPI_File_get_errhandler(_para1:MPI_File; _para2:PMPI_Errhandler):longint;cdecl;external External_library name 'PMPI_File_get_errhandler';

  function PMPI_File_set_errhandler(_para1:MPI_File; _para2:MPI_Errhandler):longint;cdecl;external External_library name 'PMPI_File_set_errhandler';

  function PMPI_Finalized(_para1:Plongint):longint;cdecl;external External_library name 'PMPI_Finalized';

  function PMPI_Free_mem(_para1:pointer):longint;cdecl;external External_library name 'PMPI_Free_mem';

  function PMPI_Get_address(_para1:pointer; _para2:PMPI_Aint):longint;cdecl;external External_library name 'PMPI_Get_address';

  function PMPI_Info_create(_para1:PMPI_Info):longint;cdecl;external External_library name 'PMPI_Info_create';

  function PMPI_Info_delete(_para1:MPI_Info; _para2:Pchar):longint;cdecl;external External_library name 'PMPI_Info_delete';

  function PMPI_Info_dup(_para1:MPI_Info; _para2:PMPI_Info):longint;cdecl;external External_library name 'PMPI_Info_dup';

  function PMPI_Info_free(var info:MPI_Info):longint;cdecl;external External_library name 'PMPI_Info_free';

  function PMPI_Info_get(_para1:MPI_Info; _para2:Pchar; _para3:longint; _para4:Pchar; _para5:Plongint):longint;cdecl;external External_library name 'PMPI_Info_get';

  function PMPI_Info_get_nkeys(_para1:MPI_Info; _para2:Plongint):longint;cdecl;external External_library name 'PMPI_Info_get_nkeys';

  function PMPI_Info_get_nthkey(_para1:MPI_Info; _para2:longint; _para3:Pchar):longint;cdecl;external External_library name 'PMPI_Info_get_nthkey';

  function PMPI_Info_get_valuelen(_para1:MPI_Info; _para2:Pchar; _para3:Plongint; _para4:Plongint):longint;cdecl;external External_library name 'PMPI_Info_get_valuelen';

  function PMPI_Info_set(_para1:MPI_Info; _para2:Pchar; _para3:Pchar):longint;cdecl;external External_library name 'PMPI_Info_set';

  function PMPI_Pack_external(_para1:Pchar; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:pointer; 
             _para6:MPI_Aint; _para7:PMPI_Aint):longint;cdecl;external External_library name 'PMPI_Pack_external';

  function PMPI_Pack_external_size(_para1:Pchar; _para2:longint; _para3:MPI_Datatype; _para4:PMPI_Aint):longint;cdecl;external External_library name 'PMPI_Pack_external_size';

  function PMPI_Request_get_status(_para1:MPI_Request; _para2:Plongint; _para3:PMPI_Status):longint;cdecl;external External_library name 'PMPI_Request_get_status';

  function PMPI_Status_c2f(_para1:PMPI_Status; _para2:PMPI_Fint):longint;cdecl;external External_library name 'PMPI_Status_c2f';

  function PMPI_Status_f2c(_para1:PMPI_Fint; _para2:PMPI_Status):longint;cdecl;external External_library name 'PMPI_Status_f2c';

  function PMPI_Type_create_darray(_para1:longint; _para2:longint; _para3:longint; _para4:Plongint; _para5:Plongint; 
             _para6:Plongint; _para7:Plongint; _para8:longint; _para9:MPI_Datatype; _para10:PMPI_Datatype):longint;cdecl;external External_library name 'PMPI_Type_create_darray';

  function PMPI_Type_create_hindexed(_para1:longint; _para2:Plongint; _para3:PMPI_Aint; _para4:MPI_Datatype; _para5:PMPI_Datatype):longint;cdecl;external External_library name 'PMPI_Type_create_hindexed';

  function PMPI_Type_create_hvector(_para1:longint; _para2:longint; _para3:MPI_Aint; _para4:MPI_Datatype; _para5:PMPI_Datatype):longint;cdecl;external External_library name 'PMPI_Type_create_hvector';

  function PMPI_Type_create_indexed_block(_para1:longint; _para2:longint; _para3:Plongint; _para4:MPI_Datatype; _para5:PMPI_Datatype):longint;cdecl;external External_library name 'PMPI_Type_create_indexed_block';

  function PMPI_Type_create_resized(_para1:MPI_Datatype; _para2:MPI_Aint; _para3:MPI_Aint; _para4:PMPI_Datatype):longint;cdecl;external External_library name 'PMPI_Type_create_resized';

  function PMPI_Type_create_struct(_para1:longint; _para2:Plongint; _para3:PMPI_Aint; _para4:PMPI_Datatype; _para5:PMPI_Datatype):longint;cdecl;external External_library name 'PMPI_Type_create_struct';

  function PMPI_Type_create_subarray(_para1:longint; _para2:Plongint; _para3:Plongint; _para4:Plongint; _para5:longint; 
             _para6:MPI_Datatype; _para7:PMPI_Datatype):longint;cdecl;external External_library name 'PMPI_Type_create_subarray';

  function PMPI_Type_get_extent(_para1:MPI_Datatype; _para2:PMPI_Aint; _para3:PMPI_Aint):longint;cdecl;external External_library name 'PMPI_Type_get_extent';

  function PMPI_Type_get_true_extent(_para1:MPI_Datatype; _para2:PMPI_Aint; _para3:PMPI_Aint):longint;cdecl;external External_library name 'PMPI_Type_get_true_extent';

  function PMPI_Unpack_external(_para1:Pchar; _para2:pointer; _para3:MPI_Aint; _para4:PMPI_Aint; _para5:pointer; 
             _para6:longint; _para7:MPI_Datatype):longint;cdecl;external External_library name 'PMPI_Unpack_external';

  function PMPI_Win_create_errhandler(_para1:MPI_Win_errhandler_fn; _para2:PMPI_Errhandler):longint;cdecl;external External_library name 'PMPI_Win_create_errhandler';

  function PMPI_Win_get_errhandler(_para1:MPI_Win; _para2:PMPI_Errhandler):longint;cdecl;external External_library name 'PMPI_Win_get_errhandler';

  function PMPI_Win_set_errhandler(_para1:MPI_Win; _para2:MPI_Errhandler):longint;cdecl;external External_library name 'PMPI_Win_set_errhandler';


  { MPI_BUILD_PROFILING  }
  { End of MPI bindings  }
  { feature advertisement  }

  const
     MPIIMPL_ADVERTISES_FEATURES = 1;     
     MPIIMPL_HAVE_MPI_INFO = 1;     
     MPIIMPL_HAVE_MPI_COMBINER_DARRAY = 1;     
     MPIIMPL_HAVE_MPI_TYPE_CREATE_DARRAY = 1;     
     MPIIMPL_HAVE_MPI_COMBINER_SUBARRAY = 1;     
     MPIIMPL_HAVE_MPI_COMBINER_DUP = 1;     
     MPIIMPL_HAVE_MPI_GREQUEST = 1;     
     MPIIMPL_HAVE_STATUS_SET_BYTES = 1;     
     MPIIMPL_HAVE_STATUS_SET_INFO = 1;     



  { -*- Mode: C; c-basic-offset:4 ; -*-  }
  { 
   *
   *   Copyright (C) 1997 University of Chicago. 
   *   See COPYRIGHT notice in top-level directory.
    }
  { user include file for MPI-IO programs  }


  { version 1.2.6  }

  const
     ROMIO_VERSION = 126;     
  { define MPI-IO datatypes and constants  }


  { Also rename the MPIO routines to get the MPI versions  }
     function MPIO_Wait(_para1:PMPI_Request;_para2:PMPI_Status):longint;cdecl;external External_library name'MPI_Wait';     
     function MPIO_Test(_para1:PMPI_Request;_para2:Plongint;_para3:PMPI_Status):longint;cdecl;external External_library name'MPI_Test';     
     function PMPIO_Wait(_para1:PMPI_Request;_para2:PMPI_Status):longint;cdecl;external External_library name'PMPI_Wait';     
     function PMPIO_Test(_para1:PMPI_Request;_para2:Plongint;_para3:PMPI_Status):longint;cdecl;external External_library name'PMPI_Test';

  { ADIO_RDONLY  }

  const
     MPI_MODE_RDONLY = 2;     
  { ADIO_RDWR   }
     MPI_MODE_RDWR = 8;     
  { ADIO_WRONLY   }
     MPI_MODE_WRONLY = 4;     
  { ADIO_CREATE  }     MPI_MODE_CREATE = 1;     
  { ADIO_EXCL  }
     MPI_MODE_EXCL = 64;     
  { ADIO_DELETE_ON_CLOSE  }
     MPI_MODE_DELETE_ON_CLOSE = 16;     
  { ADIO_UNIQUE_OPEN  }
     MPI_MODE_UNIQUE_OPEN = 32;     
  { ADIO_APPEND  }
     MPI_MODE_APPEND = 128;     
  { ADIO_SEQUENTIAL  }
     MPI_MODE_SEQUENTIAL = 256;     
     MPI_DISPLACEMENT_CURRENT = -(54278278);     

  { was #define dname def_expr }
    MPIO_REQUEST_NULL = MPIO_Request(0);    


  const
     MPI_SEEK_SET = 600;     
     MPI_SEEK_CUR = 602;     
     MPI_SEEK_END = 604;     
     MPI_MAX_DATAREP_STRING = 128;

  { MPI-IO function prototypes  }
  { The compiler must support ANSI C style prototypes, otherwise 
     long long constants (e.g. 0) may get passed as ints.  }

  { Section 9.2  }
  { Begin Prototypes  }

  function MPI_File_open(_para1:MPI_Comm; _para2:Pchar; _para3:longint; _para4:MPI_Info; _para5:PMPI_File):longint;cdecl;external External_library name 'MPI_File_open';

  function MPI_File_close(_para1:PMPI_File):longint;cdecl;external External_library name 'MPI_File_close';

  function MPI_File_delete(_para1:Pchar; _para2:MPI_Info):longint;cdecl;external External_library name 'MPI_File_delete';

  function MPI_File_set_size(_para1:MPI_File; _para2:MPI_Offset):longint;cdecl;external External_library name 'MPI_File_set_size';

  function MPI_File_preallocate(_para1:MPI_File; _para2:MPI_Offset):longint;cdecl;external External_library name 'MPI_File_preallocate';

  function MPI_File_get_size(_para1:MPI_File; _para2:PMPI_Offset):longint;cdecl;external External_library name 'MPI_File_get_size';

  function MPI_File_get_group(_para1:MPI_File; _para2:PMPI_Group):longint;cdecl;external External_library name 'MPI_File_get_group';

  function MPI_File_get_amode(_para1:MPI_File; _para2:Plongint):longint;cdecl;external External_library name 'MPI_File_get_amode';

  function MPI_File_set_info(_para1:MPI_File; _para2:MPI_Info):longint;cdecl;external External_library name 'MPI_File_set_info';

  function MPI_File_get_info(_para1:MPI_File; _para2:PMPI_Info):longint;cdecl;external External_library name 'MPI_File_get_info';

  { Section 9.3  }
  function MPI_File_set_view(_para1:MPI_File; _para2:MPI_Offset; _para3:MPI_Datatype; _para4:MPI_Datatype; _para5:Pchar; 
             _para6:MPI_Info):longint;cdecl;external External_library name 'MPI_File_set_view';

  function MPI_File_get_view(_para1:MPI_File; _para2:PMPI_Offset; _para3:PMPI_Datatype; _para4:PMPI_Datatype; _para5:Pchar):longint;cdecl;external External_library name 'MPI_File_get_view';

  { Section 9.4.2  }
  function MPI_File_read_at(_para1:MPI_File; _para2:MPI_Offset; _para3:pointer; _para4:longint; _para5:MPI_Datatype; 
             _para6:PMPI_Status):longint;cdecl;external External_library name 'MPI_File_read_at';

  function MPI_File_read_at_all(_para1:MPI_File; _para2:MPI_Offset; _para3:pointer; _para4:longint; _para5:MPI_Datatype; 
             _para6:PMPI_Status):longint;cdecl;external External_library name 'MPI_File_read_at_all';

  function MPI_File_write_at(_para1:MPI_File; _para2:MPI_Offset; _para3:pointer; _para4:longint; _para5:MPI_Datatype; 
             _para6:PMPI_Status):longint;cdecl;external External_library name 'MPI_File_write_at';

  function MPI_File_write_at_all(_para1:MPI_File; _para2:MPI_Offset; _para3:pointer; _para4:longint; _para5:MPI_Datatype; 
             _para6:PMPI_Status):longint;cdecl;external External_library name 'MPI_File_write_at_all';

  { nonblocking calls currently use MPIO_Request, because generalized
     requests not yet implemented. For the same reason, MPIO_Test and 
     MPIO_Wait are used to test and wait on nonblocking I/O requests  }  function MPI_File_iread_at(_para1:MPI_File; _para2:MPI_Offset; _para3:pointer; _para4:longint; _para5:MPI_Datatype; 
             _para6:PMPIO_Request):longint;cdecl;external External_library name 'MPI_File_iread_at';

  function MPI_File_iwrite_at(_para1:MPI_File; _para2:MPI_Offset; _para3:pointer; _para4:longint; _para5:MPI_Datatype; 
             _para6:PMPIO_Request):longint;cdecl;external External_library name 'MPI_File_iwrite_at';

  { Section 9.4.3  }
  function MPI_File_read(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:PMPI_Status):longint;cdecl;external External_library name 'MPI_File_read';

  function MPI_File_read_all(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:PMPI_Status):longint;cdecl;external External_library name 'MPI_File_read_all';

  function MPI_File_write(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:PMPI_Status):longint;cdecl;external External_library name 'MPI_File_write';

  function MPI_File_write_all(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:PMPI_Status):longint;cdecl;external External_library name 'MPI_File_write_all';

  { nonblocking calls currently use MPIO_Request, because generalized
     requests not yet implemented. For the same reason, MPIO_Test and 
     MPIO_Wait are used to test and wait on nonblocking I/O requests  }  function MPI_File_iread(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:PMPIO_Request):longint;cdecl;external External_library name 'MPI_File_iread';

  function MPI_File_iwrite(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:PMPIO_Request):longint;cdecl;external External_library name 'MPI_File_iwrite';

  function MPI_File_seek(_para1:MPI_File; _para2:MPI_Offset; _para3:longint):longint;cdecl;external External_library name 'MPI_File_seek';

  function MPI_File_get_position(_para1:MPI_File; _para2:PMPI_Offset):longint;cdecl;external External_library name 'MPI_File_get_position';

  function MPI_File_get_byte_offset(_para1:MPI_File; _para2:MPI_Offset; _para3:PMPI_Offset):longint;cdecl;external External_library name 'MPI_File_get_byte_offset';

  { Section 9.4.4  }
  function MPI_File_read_shared(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:PMPI_Status):longint;cdecl;external External_library name 'MPI_File_read_shared';

  function MPI_File_write_shared(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:PMPI_Status):longint;cdecl;external External_library name 'MPI_File_write_shared';

  function MPI_File_iread_shared(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:PMPIO_Request):longint;cdecl;external External_library name 'MPI_File_iread_shared';

  function MPI_File_iwrite_shared(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:PMPIO_Request):longint;cdecl;external External_library name 'MPI_File_iwrite_shared';

  function MPI_File_read_ordered(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:PMPI_Status):longint;cdecl;external External_library name 'MPI_File_read_ordered';

  function MPI_File_write_ordered(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:PMPI_Status):longint;cdecl;external External_library name 'MPI_File_write_ordered';

  function MPI_File_seek_shared(_para1:MPI_File; _para2:MPI_Offset; _para3:longint):longint;cdecl;external External_library name 'MPI_File_seek_shared';

  function MPI_File_get_position_shared(_para1:MPI_File; _para2:PMPI_Offset):longint;cdecl;external External_library name 'MPI_File_get_position_shared';

  { Section 9.4.5  }
  function MPI_File_read_at_all_begin(_para1:MPI_File; _para2:MPI_Offset; _para3:pointer; _para4:longint; _para5:MPI_Datatype):longint;cdecl;external External_library name 'MPI_File_read_at_all_begin';

  function MPI_File_read_at_all_end(_para1:MPI_File; _para2:pointer; _para3:PMPI_Status):longint;cdecl;external External_library name 'MPI_File_read_at_all_end';

  function MPI_File_write_at_all_begin(_para1:MPI_File; _para2:MPI_Offset; _para3:pointer; _para4:longint; _para5:MPI_Datatype):longint;cdecl;external External_library name 'MPI_File_write_at_all_begin';

  function MPI_File_write_at_all_end(_para1:MPI_File; _para2:pointer; _para3:PMPI_Status):longint;cdecl;external External_library name 'MPI_File_write_at_all_end';

  function MPI_File_read_all_begin(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype):longint;cdecl;external External_library name 'MPI_File_read_all_begin';

  function MPI_File_read_all_end(_para1:MPI_File; _para2:pointer; _para3:PMPI_Status):longint;cdecl;external External_library name 'MPI_File_read_all_end';

  function MPI_File_write_all_begin(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype):longint;cdecl;external External_library name 'MPI_File_write_all_begin';

  function MPI_File_write_all_end(_para1:MPI_File; _para2:pointer; _para3:PMPI_Status):longint;cdecl;external External_library name 'MPI_File_write_all_end';

  function MPI_File_read_ordered_begin(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype):longint;cdecl;external External_library name 'MPI_File_read_ordered_begin';

  function MPI_File_read_ordered_end(_para1:MPI_File; _para2:pointer; _para3:PMPI_Status):longint;cdecl;external External_library name 'MPI_File_read_ordered_end';

  function MPI_File_write_ordered_begin(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype):longint;cdecl;external External_library name 'MPI_File_write_ordered_begin';

  function MPI_File_write_ordered_end(_para1:MPI_File; _para2:pointer; _para3:PMPI_Status):longint;cdecl;external External_library name 'MPI_File_write_ordered_end';

  { Section 9.5.1  }
  function MPI_File_get_type_extent(_para1:MPI_File; _para2:MPI_Datatype; _para3:PMPI_Aint):longint;cdecl;external External_library name 'MPI_File_get_type_extent';

  { Section 9.5.3  }
  function MPI_Register_datarep(_para1:Pchar; _para2:MPI_Datarep_conversion_function; _para3:MPI_Datarep_conversion_function; _para4:MPI_Datarep_extent_function; _para5:pointer):longint;cdecl;external External_library name 'MPI_Register_datarep';

  { Section 9.6.1  }
  function MPI_File_set_atomicity(_para1:MPI_File; _para2:longint):longint;cdecl;external External_library name 'MPI_File_set_atomicity';

  function MPI_File_get_atomicity(_para1:MPI_File; _para2:Plongint):longint;cdecl;external External_library name 'MPI_File_get_atomicity';

  function MPI_File_sync(_para1:MPI_File):longint;cdecl;external External_library name 'MPI_File_sync';

  { Section 4.13.3  }

  { End Prototypes  }

  { The globus2 device has to rename MPI_ symbols in order to use the vendor
     MPI as one of its transport mechanisms.  Therefore, the following undefines
     should only happen if MPICH_RENAMING_MPI_FUNCS is not defined.  }
  { Section 4.12.4  }

  { above needed for some versions of mpi.h in MPICH!!  }

  function MPI_File_f2c(_para1:MPI_Fint):MPI_File;cdecl;external External_library name 'MPI_File_f2c';

  function MPI_File_c2f(_para1:MPI_File):MPI_Fint;cdecl;external External_library name 'MPI_File_c2f';

  { The foll. functions are required, because an MPIO_Request object
     is currently used for nonblocking I/O. These functions will go away
     after generalized requests are implemented.  }
  function MPIO_Request_c2f(_para1:MPIO_Request):MPI_Fint;cdecl;external External_library name 'MPIO_Request_c2f';

  function MPIO_Request_f2c(_para1:MPI_Fint):MPIO_Request;cdecl;external External_library name 'MPIO_Request_f2c';

  { info functions if not defined in the MPI implementation  }


  { HAVE_PRAGMA_HP_SEC_DEF  }
  {*************** BINDINGS FOR THE PROFILING INTERFACE ************** }
  { Section 9.2  }

  function PMPI_File_open(_para1:MPI_Comm; _para2:Pchar; _para3:longint; _para4:MPI_Info; _para5:PMPI_File):longint;cdecl;external External_library name 'PMPI_File_open';

  function PMPI_File_close(_para1:PMPI_File):longint;cdecl;external External_library name 'PMPI_File_close';

  function PMPI_File_delete(_para1:Pchar; _para2:MPI_Info):longint;cdecl;external External_library name 'PMPI_File_delete';

  function PMPI_File_set_size(_para1:MPI_File; _para2:MPI_Offset):longint;cdecl;external External_library name 'PMPI_File_set_size';

  function PMPI_File_preallocate(_para1:MPI_File; _para2:MPI_Offset):longint;cdecl;external External_library name 'PMPI_File_preallocate';

  function PMPI_File_get_size(_para1:MPI_File; _para2:PMPI_Offset):longint;cdecl;external External_library name 'PMPI_File_get_size';

  function PMPI_File_get_group(_para1:MPI_File; _para2:PMPI_Group):longint;cdecl;external External_library name 'PMPI_File_get_group';

  function PMPI_File_get_amode(_para1:MPI_File; _para2:Plongint):longint;cdecl;external External_library name 'PMPI_File_get_amode';

  function PMPI_File_set_info(_para1:MPI_File; _para2:MPI_Info):longint;cdecl;external External_library name 'PMPI_File_set_info';

  function PMPI_File_get_info(_para1:MPI_File; _para2:PMPI_Info):longint;cdecl;external External_library name 'PMPI_File_get_info';

  { Section 9.3  }
  function PMPI_File_set_view(_para1:MPI_File; _para2:MPI_Offset; _para3:MPI_Datatype; _para4:MPI_Datatype; _para5:Pchar; 
             _para6:MPI_Info):longint;cdecl;external External_library name 'PMPI_File_set_view';

  function PMPI_File_get_view(_para1:MPI_File; _para2:PMPI_Offset; _para3:PMPI_Datatype; _para4:PMPI_Datatype; _para5:Pchar):longint;cdecl;external External_library name 'PMPI_File_get_view';

  { Section 9.4.2  }
  function PMPI_File_read_at(_para1:MPI_File; _para2:MPI_Offset; _para3:pointer; _para4:longint; _para5:MPI_Datatype; 
             _para6:PMPI_Status):longint;cdecl;external External_library name 'PMPI_File_read_at';

  function PMPI_File_read_at_all(_para1:MPI_File; _para2:MPI_Offset; _para3:pointer; _para4:longint; _para5:MPI_Datatype; 
             _para6:PMPI_Status):longint;cdecl;external External_library name 'PMPI_File_read_at_all';

  function PMPI_File_write_at(_para1:MPI_File; _para2:MPI_Offset; _para3:pointer; _para4:longint; _para5:MPI_Datatype; 
             _para6:PMPI_Status):longint;cdecl;external External_library name 'PMPI_File_write_at';

  function PMPI_File_write_at_all(_para1:MPI_File; _para2:MPI_Offset; _para3:pointer; _para4:longint; _para5:MPI_Datatype; 
             _para6:PMPI_Status):longint;cdecl;external External_library name 'PMPI_File_write_at_all';

  { nonblocking calls currently use MPIO_Request, because generalized
     requests not yet implemented. For the same reason, MPIO_Test and 
     MPIO_Wait are used to test and wait on nonblocking I/O requests  }  function PMPI_File_iread_at(_para1:MPI_File; _para2:MPI_Offset; _para3:pointer; _para4:longint; _para5:MPI_Datatype; 
             _para6:PMPIO_Request):longint;cdecl;external External_library name 'PMPI_File_iread_at';

  function PMPI_File_iwrite_at(_para1:MPI_File; _para2:MPI_Offset; _para3:pointer; _para4:longint; _para5:MPI_Datatype; 
             _para6:PMPIO_Request):longint;cdecl;external External_library name 'PMPI_File_iwrite_at';

  { Section 9.4.3  }
  function PMPI_File_read(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:PMPI_Status):longint;cdecl;external External_library name 'PMPI_File_read';

  function PMPI_File_read_all(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:PMPI_Status):longint;cdecl;external External_library name 'PMPI_File_read_all';

  function PMPI_File_write(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:PMPI_Status):longint;cdecl;external External_library name 'PMPI_File_write';

  function PMPI_File_write_all(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:PMPI_Status):longint;cdecl;external External_library name 'PMPI_File_write_all';

  { nonblocking calls currently use MPIO_Request, because generalized
     requests not yet implemented. For the same reason, MPIO_Test and 
     MPIO_Wait are used to test and wait on nonblocking I/O requests  }  function PMPI_File_iread(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:PMPIO_Request):longint;cdecl;external External_library name 'PMPI_File_iread';

  function PMPI_File_iwrite(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:PMPIO_Request):longint;cdecl;external External_library name 'PMPI_File_iwrite';

  function PMPI_File_seek(_para1:MPI_File; _para2:MPI_Offset; _para3:longint):longint;cdecl;external External_library name 'PMPI_File_seek';

  function PMPI_File_get_position(_para1:MPI_File; _para2:PMPI_Offset):longint;cdecl;external External_library name 'PMPI_File_get_position';

  function PMPI_File_get_byte_offset(_para1:MPI_File; _para2:MPI_Offset; _para3:PMPI_Offset):longint;cdecl;external External_library name 'PMPI_File_get_byte_offset';

  { Section 9.4.4  }
  function PMPI_File_read_shared(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:PMPI_Status):longint;cdecl;external External_library name 'PMPI_File_read_shared';

  function PMPI_File_write_shared(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:PMPI_Status):longint;cdecl;external External_library name 'PMPI_File_write_shared';

  function PMPI_File_iread_shared(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:PMPIO_Request):longint;cdecl;external External_library name 'PMPI_File_iread_shared';

  function PMPI_File_iwrite_shared(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:PMPIO_Request):longint;cdecl;external External_library name 'PMPI_File_iwrite_shared';

  function PMPI_File_read_ordered(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:PMPI_Status):longint;cdecl;external External_library name 'PMPI_File_read_ordered';

  function PMPI_File_write_ordered(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype; _para5:PMPI_Status):longint;cdecl;external External_library name 'PMPI_File_write_ordered';

  function PMPI_File_seek_shared(_para1:MPI_File; _para2:MPI_Offset; _para3:longint):longint;cdecl;external External_library name 'PMPI_File_seek_shared';

  function PMPI_File_get_position_shared(_para1:MPI_File; _para2:PMPI_Offset):longint;cdecl;external External_library name 'PMPI_File_get_position_shared';

  { Section 9.4.5  }
  function PMPI_File_read_at_all_begin(_para1:MPI_File; _para2:MPI_Offset; _para3:pointer; _para4:longint; _para5:MPI_Datatype):longint;cdecl;external External_library name 'PMPI_File_read_at_all_begin';

  function PMPI_File_read_at_all_end(_para1:MPI_File; _para2:pointer; _para3:PMPI_Status):longint;cdecl;external External_library name 'PMPI_File_read_at_all_end';

  function PMPI_File_write_at_all_begin(_para1:MPI_File; _para2:MPI_Offset; _para3:pointer; _para4:longint; _para5:MPI_Datatype):longint;cdecl;external External_library name 'PMPI_File_write_at_all_begin';

  function PMPI_File_write_at_all_end(_para1:MPI_File; _para2:pointer; _para3:PMPI_Status):longint;cdecl;external External_library name 'PMPI_File_write_at_all_end';

  function PMPI_File_read_all_begin(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype):longint;cdecl;external External_library name 'PMPI_File_read_all_begin';

  function PMPI_File_read_all_end(_para1:MPI_File; _para2:pointer; _para3:PMPI_Status):longint;cdecl;external External_library name 'PMPI_File_read_all_end';

  function PMPI_File_write_all_begin(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype):longint;cdecl;external External_library name 'PMPI_File_write_all_begin';

  function PMPI_File_write_all_end(_para1:MPI_File; _para2:pointer; _para3:PMPI_Status):longint;cdecl;external External_library name 'PMPI_File_write_all_end';

  function PMPI_File_read_ordered_begin(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype):longint;cdecl;external External_library name 'PMPI_File_read_ordered_begin';

  function PMPI_File_read_ordered_end(_para1:MPI_File; _para2:pointer; _para3:PMPI_Status):longint;cdecl;external External_library name 'PMPI_File_read_ordered_end';

  function PMPI_File_write_ordered_begin(_para1:MPI_File; _para2:pointer; _para3:longint; _para4:MPI_Datatype):longint;cdecl;external External_library name 'PMPI_File_write_ordered_begin';

  function PMPI_File_write_ordered_end(_para1:MPI_File; _para2:pointer; _para3:PMPI_Status):longint;cdecl;external External_library name 'PMPI_File_write_ordered_end';

  { Section 9.5.1  }
  function PMPI_File_get_type_extent(_para1:MPI_File; _para2:MPI_Datatype; _para3:PMPI_Aint):longint;cdecl;external External_library name 'PMPI_File_get_type_extent';

  { Section 9.5.3  }
  function PMPI_Register_datarep(_para1:Pchar; _para2:MPI_Datarep_conversion_function; _para3:MPI_Datarep_conversion_function; _para4:MPI_Datarep_extent_function; _para5:pointer):longint;cdecl;external External_library name 'PMPI_Register_datarep';

  { Section 9.6.1  }
  function PMPI_File_set_atomicity(_para1:MPI_File; _para2:longint):longint;cdecl;external External_library name 'PMPI_File_set_atomicity';

  function PMPI_File_get_atomicity(_para1:MPI_File; _para2:Plongint):longint;cdecl;external External_library name 'PMPI_File_get_atomicity';

  function PMPI_File_sync(_para1:MPI_File):longint;cdecl;external External_library name 'PMPI_File_sync';

  { Section 4.13.3  }


  { Section 4.12.4  }

  function PMPI_File_f2c(_para1:MPI_Fint):MPI_File;cdecl;external External_library name 'PMPI_File_f2c';

  function PMPI_File_c2f(_para1:MPI_File):MPI_Fint;cdecl;external External_library name 'PMPI_File_c2f';

  { The foll. functions are required, because an MPIO_Request object
     is currently used for nonblocking I/O. These functions will go away
     after generalized requests are implemented.  }
  function PMPIO_Request_c2f(_para1:MPIO_Request):MPI_Fint;cdecl;external External_library name 'PMPIO_Request_c2f';

  function PMPIO_Request_f2c(_para1:MPI_Fint):MPIO_Request;cdecl;external External_library name 'PMPIO_Request_f2c';

  { info functions if not defined in the MPI implementation  }




implementation














end.
