Constants(3)
π Constants(3) π
okay bestie, so this is the MPI page called Constants(3) and it's literally just the master key to every defined constant MPI has, like the whole vibe dictionary. it's LONG so buckle up π
π§ DATA TYPES π§
heads up bestie: the Fortran types are only for Fortran programs and the C types are only for C programs. like, it is genuinely an error to useMPI_INTfor a FortranINTEGER. do not do it. no cap.
also, datatypes are of type MPI_Datatype in C, type INTEGER in Fortran, and Type(MPI_Datatype) in Fortran08. slay π«Ά
π C DATATYPES
MPI_CHARβcharMPI_SIGNED_CHARβsigned charMPI_UNSIGNED_CHARβunsigned charMPI_BYTEβ see the standard; likeunsigned charMPI_WCHARβ wide character (wchar_t)MPI_SHORTβshortMPI_UNSIGNED_SHORTβunsigned shortMPI_INTβintMPI_UNSIGNEDβunsigned intMPI_LONGβlongMPI_UNSIGNED_LONGβunsigned longMPI_LONG_LONG_INTβlong longMPI_LONG_LONGβ a synonym forMPI_LONG_LONG_INTMPI_UNSIGNED_LONG_LONGβunsigned long longMPI_FLOATβfloatMPI_DOUBLEβdoubleMPI_LONG_DOUBLEβlong double(some systems may not implement this one, lowkey rude of them)MPI_INT8_Tβint8_tMPI_INT16_Tβint16_tMPI_INT32_Tβint32_tMPI_INT64_Tβint64_tMPI_UINT8_Tβuint8_tMPI_UINT16_Tβuint16_tMPI_UINT32_Tβuint32_tMPI_UINT64_Tβuint64_tMPI_C_BOOLβ_BoolMPI_C_FLOAT_COMPLEXβfloat _ComplexMPI_C_COMPLEXβfloat _ComplexMPI_C_DOUBLE_COMPLEXβdouble _ComplexMPI_C_LONG_DOUBLE_COMPLEXβlong double _Complex
the next lil squad are the datatypes for the MPI functions MPI_MAXLOC and MPI_MINLOC π
MPI_FLOAT_INTβstruct { float, int }MPI_LONG_INTβstruct { long, int }MPI_DOUBLE_INTβstruct { double, int }MPI_SHORT_INTβstruct { short, int }MPI_2INTβstruct { int, int }MPI_LONG_DOUBLE_INTβstruct { long double, int }; this one is an optional type, and it may be set toMPI_DATATYPE_NULL
π¦ Special datatypes for C and Fortran
MPI_PACKEDβ forMPI_PackandMPI_UnpackMPI_UBβ forMPI_Type_struct; an upper-bound indicator. Removed in MPI 3MPI_LBβ forMPI_Type_struct; a lower-bound indicator. Removed in MPI 3
πΈ FORTRAN DATATYPES
MPI_REALβREALMPI_INTEGERβINTEGERMPI_LOGICALβLOGICALMPI_DOUBLE_PRECISIONβDOUBLE PRECISIONMPI_COMPLEXβCOMPLEXMPI_DOUBLE_COMPLEXβcomplex*16(orcomplex*32) where supported
the following datatypes are optional:
MPI_INTEGER1βinteger*1if supportedMPI_INTEGER2βinteger*2if supportedMPI_INTEGER4βinteger*4if supportedMPI_INTEGER8βinteger*8if supportedMPI_INTEGER16βinteger*16if supportedMPI_REAL4βreal*4if supportedMPI_REAL8βreal*8if supportedMPI_REAL16βreal*16if supportedMPI_COMPLEX8βcomplex*8if supportedMPI_COMPLEX16βcomplex*16if supportedMPI_COMPLEX32βcomplex*32if supported
and these are the datatypes for the MPI functions MPI_MAXLOC and MPI_MINLOC. in Fortran, these datatypes always consist of two elements of the same Fortran type:
MPI_2INTEGERβINTEGER,INTEGERMPI_2REALβREAL, REALMPI_2DOUBLE_PRECISIONβDOUBLE PRECISION, DOUBLE PRECISION
π MPI Datatypes for MPI Types
MPI_AINTβ datatype for anMPI_AintMPI_OFFSETβ datatype for anMPI_OffsetMPI_COUNTβ datatype for anMPI_Count
β MPI DATATYPE COMBINER NAMES β
MPI_COMBINER_NAMEDβ a named predefined datatypeMPI_COMBINER_DUPβMPI_TYPE_DUPMPI_COMBINER_CONTIGUOUSβMPI_TYPE_CONTIGUOUSMPI_COMBINER_VECTORβMPI_TYPE_VECTORMPI_COMBINER_HVECTOR_INTEGERβ Removed in MPI-3MPI_COMBINER_HVECTORβMPI_TYPE_CREATE_HVECTORMPI_COMBINER_INDEXEDβMPI_TYPE_INDEXEDMPI_COMBINER_HINDEXED_INTEGERβ Removed in MPI-3MPI_COMBINER_HINDEXEDβMPI_TYPE_CREATE_HINDEXEDMPI_COMBINER_INDEXED_BLOCKβMPI_TYPE_CREATE_INDEXED_BLOCKMPI_COMBINER_STRUCT_INTEGERβ Removed in MPI-3MPI_COMBINER_STRUCTβMPI_TYPE_CREATE_STRUCTMPI_COMBINER_SUBARRAYβMPI_TYPE_CREATE_SUBARRAYMPI_COMBINER_DARRAYβMPI_TYPE_CREATE_DARRAYMPI_COMBINER_F90_REALβMPI_TYPE_CREATE_F90_REALMPI_COMBINER_F90_COMPLEXβMPI_TYPE_CREATE_F90_COMPLEXMPI_COMBINER_F90_INTEGERβMPI_TYPE_CREATE_F90_INTEGERMPI_COMBINER_RESIZEDβMPI_TYPE_CREATE_RESIZEDMPI_COMBINER_HINDEXED_BLOCKβMPI_TYPE_CREATE_HINDEXED_BLOCK
π MPI DATATYPE TYPE CLASSES π
these are the MPI type classes used with routines that return Fortran types with a defined precision and range:
MPI_TYPECLASS_REALβREALMPI_TYPECLASS_INTEGERβINTEGERMPI_TYPECLASS_COMPLEXβCOMPLEX
π¦ MPI DARRAY AND SUBARRAY VALUES π¦
these values are used to create a datatype with the DARRAY and SUBARRAY constructors, iconic behaviour tbh:
MPI_ORDER_Cβ row-major order (as used by C)MPI_ORDER_FORTRANβ column-major order (as used by Fortran)MPI_DISTRIBUTE_BLOCKβ block distributionMPI_DISTRIBUTE_CYCLICβ cyclic distributionMPI_DISTRIBUTE_NONEβ this dimension is not distributedMPI_DISTRIBUTE_DFLT_DARGβ use the default distribution
π COMMUNICATORS π
communicators are of type MPI_Comm in C, INTEGER in Fortran, and Type(MPI_Comm) in Fortran08 π
MPI_COMM_WORLDβ contains all of the processesMPI_COMM_SELFβ contains only the calling process
π KIND OF COMMUNICATOR FOR 'MPI_COMM_SPLIT_TYPE' π
MPI_COMM_TYPE_SHAREDβ all processes that can share memory are grouped into the same communicator
π GROUPS π
groups are of type MPI_Group in C, INTEGER in Fortran, and Type(MPI_Group) in Fortran08 β¨
MPI_GROUP_EMPTYβ a group containing no members
π₯ RESULTS OF THE COMPARE OPERATIONS ON GROUPS AND COMMUNICATORS π₯
MPI_IDENTβ identicalMPI_CONGRUENTβ (only forMPI_COMM_COMPARE) the groups are identicalMPI_SIMILARβ same members, but in a different orderMPI_UNEQUALβ different
β¨ COLLECTIVE OPERATIONS β¨
so the collective combination operations (like MPI_REDUCE, MPI_ALLREDUCE, MPI_REDUCE_SCATTER, and MPI_SCAN) all take a combination operation. this operation is of type MPI_Op in C and of type INTEGER in Fortran. and here are the predefined ones bestie:
MPI_MAXβ return the maximumMPI_MINβ return the minimumMPI_SUMβ return the sumMPI_PRODβ return the productMPI_LANDβ return the logical andMPI_BANDβ return the bitwise andMPI_LORβ return the logical orMPI_BORβ return the bitwise ofMPI_LXORβ return the logical exclusive orMPI_BXORβ return the bitwise exclusive orMPI_MINLOCβ return the minimum and the location (actually, the value of the second element of the structure where the minimum of the first is found)MPI_MAXLOCβ return the maximum and the locationMPI_REPLACEβ replace b with aMPI_NO_OPβ perform no operation
π NOTES ON COLLECTIVE OPERATIONS π
okay this part is the serious part, listen up.
the reduction functions (MPI_Op) do not return an error value. as a result, if the functions detect an error, all they can do is either call MPI_Abort or silently skip the problem π. so if you change the error handler from MPI_ERRORS_ARE_FATAL to something else β for example, MPI_ERRORS_RETURN β then no error may be indicated.
the reason for this is the performance problems in ensuring that all collective routines return the same error value.
also, not all datatypes are valid for these functions. for example, MPI_COMPLEX is not valid for MPI_MAX and MPI_MIN. and on top of that, the MPI 1.1 standard did not include the C types MPI_CHAR and MPI_UNSIGNED_CHAR among the lists of arithmetic types for operations like MPI_SUM. however, since the C type char is an integer type (like short), it should have been included. the MPI Forum will probably include char and unsigned char as a clarification to MPI 1.1; until then, users are advised that MPI implementations may not accept MPI_CHAR and MPI_UNSIGNED_CHAR as valid datatypes for MPI_SUM, MPI_PROD, etc. MPICH does allow these datatypes.
π PERMANENT KEY VALUES π
these are the same in C and Fortran π
MPI_TAG_UBβ largest tag valueMPI_HOSTβ rank of process that is host, if anyMPI_IOβ rank of process that can do I/OMPI_WTIME_IS_GLOBALβ has value1ifMPI_WTIMEis globally synchronizedMPI_UNIVERSE_SIZEβ number of available processes. see the standard for a description of limitations on this valueMPI_LASTUSEDCODEβ last used MPI error code (check - code or class?)MPI_APPNUMβ application number, starting from 0. see the standard forMPI_COMM_SPAWN_MULTIPLEandmpiexecfor details
π«Ά NULL OBJECTS π«Ά
the whole β¨nothingβ¨ collection, all the nulls you could ever need:
MPI_COMM_NULLβ null communicatorMPI_OP_NULLβ null operationMPI_GROUP_NULLβ null groupMPI_DATATYPE_NULLβ null datatypeMPI_REQUEST_NULLβ null requestMPI_ERRHANDLER_NULLβ null error handlerMPI_WIN_NULLβ null window handleMPI_FILE_NULLβ null file handleMPI_INFO_NULLβ null info handleMPI_MESSAGE_NULLβ null message handleMPI_ARGV_NULLβ empty ARGV value for spawn commandsMPI_ARGVS_NULLβ empty ARGV array for spawn-multiple commandMPI_T_ENUM_NULLβ null MPI_T enumMPI_T_CVAR_HANDLE_NULLβ null MPI_T control variable handleMPI_T_PVAR_HANDLE_NULLβ null MPI_T performance variable handleMPI_T_PVAR_SESSION_NULLβ null MPI_T performance variable session handle
β¨ PREDEFINED CONSTANTS β¨
okay bestie these are the little built-in numbers and magic values that MPI hands you, and honestly? iconic. lowkey the glue of the whole thing π
MPI_MAX_PROCESSOR_NAMEβ the maximum length of a name thatMPI_GET_PROCESSOR_NAMEwill hand back to you.MPI_MAX_ERROR_STRINGβ the maximum length of the string returned byMPI_ERROR_STRING.MPI_MAX_LIBRARY_VERSION_STRINGβ the maximum length of the string returned byMPI_GET_LIBRARY_VERSION_STRING???MPI_MAX_PORT_NAMEβ the maximum length of a port. yes, ports have a vibe limit too π«ΆMPI_MAX_OBJECT_NAMEβ the maximum length of an object (?)MPI_MAX_INFO_KEYβ the maximum length of an info key.MPI_MAX_INFO_VALβ the maximum length of an info value.MPI_UNDEFINEDβ used by many routines to indicate an undefined or unknown integer value. it's the "idk" of integers fr fr πMPI_UNDEFINED_RANKβ unknown rank.MPI_KEYVAL_INVALIDβ a special keyval you can use to detect uninitialized keyvals. so you don't get got by a stale one πMPI_BSEND_OVERHEADβ add this to the size of aMPI_BSENDbuffer for each outstanding message.MPI_PROC_NULLβ this rank may be used to send or receive from no-one. literally nobody. ghosted but on purpose π»MPI_ANY_SOURCEβ in a receive, accept a message from anyone.MPI_ANY_TAGβ in a receive, accept a message with any tag value.MPI_BOTTOMβ may be used to indicate the bottom of the address space.MPI_IN_PLACEβ a special location for buffer in some collective communication routines.MPI_VERSIONβ numeric value of MPI version (e.g.,3).MPI_SUBVERSIONβ numeric value of MPI subversion (e.g.,1).
π TOPOLOGY TYPES π
MPI_CARTβ Cartesian grid.MPI_GRAPHβ general graph.MPI_DIST_GRAPHβ general distributed graph.
π¦ SPECIAL VALUES FOR DISTRIBUTED GRAPH π¦
MPI_UNWEIGHTEDβ indicates that the edges are unweighted.MPI_WEIGHTS_EMPTYβ special address that indicates no array of weights information.
π FILE MODES π
the moment you open a file in MPI you gotta tell it how you wanna open it, and these are the lil flags for that π
MPI_MODE_RDONLYβ read only.MPI_MODE_RDWRβ read and write.MPI_MODE_WRONLYβ write only.MPI_MODE_CREATEβ create the file if it does not exist.MPI_MODE_EXCLβ it is an error if creating a file that already exists. no doubles allowed, periodt.MPI_MODE_DELETE_ON_CLOSEβ delete the file on close. it's giving ghosting the filesystem β¨MPI_MODE_UNIQUE_OPENβ the file will not be concurrently opened elsewhere.MPI_MODE_APPENDβ the initial position of all file pointers is at the end of the file.MPI_MODE_SEQUENTIALβ file will only be accessed sequentially.
πΈ FILE DISPLACEMENT πΈ
MPI_DISPLACEMENT_CURRENTβ use with files opened with modeMPI_MODE_SEQUENTIALin calls toMPI_FILE_SET_VIEW.
β FILE POSITIONING β
MPI_SEEK_SETβ set the pointer to offset.MPI_SEEK_CURβ set the pointer to the current position plus offset.MPI_SEEK_ENDβ set the pointer to the end of the file plus offset.
π WINDOW ATTRIBUTES π
MPI_WIN_BASEβ window base address.MPI_WIN_SIZEβ window size, in bytes.MPI_WIN_DISP_UNITβ displacement unit associated with the window.MPI_WIN_CREATE_FLAVORβ how the window was created.MPI_WIN_MODELβ memory model for window.
π WINDOW FLAVORS π
MPI_WIN_FLAVOR_CREATEβ window was created withMPI_WIN_CREATE.MPI_WIN_FLAVOR_ALLOCATEβ window was created withMPI_WIN_ALLOCATE.MPI_WIN_FLAVOR_DYNAMICβ window was created withMPI_WIN_CREATE_DYNAMIC.MPI_WIN_FLAVOR_SHAREDβ window was created withMPI_WIN_ALLOCATE_SHARED.
π§ WINDOW MEMORY MODEL π§
MPI_WIN_SEPARATEβ separate public and private copies of window memory.MPI_WIN_UNIFIEDβ the public and private copies are identical (by which we mean that updates are eventually observed without additional RMA operations).
π₯ WINDOW LOCK TYPES π₯
MPI_LOCK_EXCLUSIVEβ only one process at a time will execute accesses within the lock. main character energy, nobody else gets in πMPI_LOCK_SHAREDβ not exclusive; multiple processes may execute accesses within the lock. share the spotlight besties π«Ά
π WINDOW ASSERTIONS π
see section 11.5 in MPI 3.1 for a detailed description of each of these assertion values. fr, go read it if you want the deep lore.
MPI_MODE_NOCHECKβ the matching calls toMPI_WIN_POSTorMPI_WIN_STARThave already completed, or no process holds or will attempt to acquire, a conflicting lock.MPI_MODE_NOSTOREβ the local window has not been updated by stores since the last synchronization.MPI_MODE_NOPUTβ the local window will not be updated by put or accumulate until the next synchronization.MPI_MODE_NOPRECEDEβ the fence does not complete any locally issued RMA calls.MPI_MODE_NOSUCCEEDβ the fence does not start any locally issued RMA calls.
π PREDEFINED INFO OBJECT π
MPI_INFO_ENVβ contains the execution environment.
π MPI STATUS π
the MPI_Status datatype is a structure in C. the three elements for use by programmers are:
MPI_SOURCEβ who sent the message.MPI_TAGβ what tag the message was sent with.MPI_ERRORβ any error return (only when the error returned by the routine has error classMPI_ERR_IN_STATUS).
and then the two iconic little shortcuts:
MPI_STATUS_IGNOREβ ignore a singleMPI_Statusargument.MPI_STATUSES_IGNOREβ ignore an array ofMPI_Status.
π SPECIAL VALUE FOR ERROR CODES ARRAY π
MPI_ERRCODES_IGNOREβ ignore an array of error codes.
β¨ MPI_T CONSTANTS β¨
okay this section is a lot but every single one matters bestie, no skimming π
verbosity levels
MPI_T_VERBOSITY_USER_BASICβ basic information of interest to users.MPI_T_VERBOSITY_USER_DETAILβ detailed information of interest to users.MPI_T_VERBOSITY_USER_ALLβ all remaining information of interest to users.MPI_T_VERBOSITY_TUNER_BASICβ basic information required for tuning.MPI_T_VERBOSITY_TUNER_DETAILβ detailed information required for tuning.MPI_T_VERBOSITY_TUNER_ALLβ all remaining information required for tuning.MPI_T_VERBOSITY_MPIDEV_BASICβ basic information for MPI implementors.MPI_T_VERBOSITY_MPIDEV_DETAILβ detailed information for MPI implementors.MPI_T_VERBOSITY_MPIDEV_ALLβ all remaining information for MPI implementors.
binding targets
MPI_T_BIND_NO_OBJECTβ applies globally to entire MPI process.MPI_T_BIND_MPI_COMMβ MPI communicators.MPI_T_BIND_MPI_DATATYPEβ MPI datatypes.MPI_T_BIND_MPI_ERRHANDLERβ MPI error handlers.MPI_T_BIND_MPI_FILEβ MPI file handles.MPI_T_BIND_MPI_GROUPβ MPI groups.MPI_T_BIND_MPI_OPβ MPI reduction operators.MPI_T_BIND_MPI_REQUESTβ MPI requests.MPI_T_BIND_MPI_WINβ MPI windows for one-sided communication.MPI_T_BIND_MPI_MESSAGEβ MPI message object.MPI_T_BIND_MPI_INFOβ MPI info object.
scopes
MPI_T_SCOPE_CONSTANTβ read-only, value is constant.MPI_T_SCOPE_READONLYβ read-only, cannot be written, but can change.MPI_T_SCOPE_LOCALβ may be writeable, writing is a local operation.MPI_T_SCOPE_GROUPβ may be writeable, must be done to a group of processes, all processes in a group must be set to consistent values.MPI_T_SCOPE_GROUP_EQβ may be writeable, must be done to a group of processes, all processes in a group must be set to the same value.MPI_T_SCOPE_ALLβ may be writeable, must be done to all processes, all connected processes must be set to consistent values.MPI_T_SCOPE_ALL_EQβ may be writeable, must be done to all processes, all connected processes must be set to the same value.
pvar classes
MPI_T_PVAR_CLASS_STATEβ set of discrete states (MPI_INT).MPI_T_PVAR_CLASS_LEVELβ utilization level of a resource.MPI_T_PVAR_CLASS_SIZEβ size of a resource.MPI_T_PVAR_CLASS_PERCENTAGEβ percentage utilization of a resource.MPI_T_PVAR_CLASS_HIGHWATERMARKβ high watermark of a resource.MPI_T_PVAR_CLASS_LOWWATERMARKβ low watermark of a resource.MPI_T_PVAR_CLASS_COUNTERβ number of occurrences of an event.MPI_T_PVAR_CLASS_AGGREGATEβ aggregate value over an event (e.g., sum of all memory allocations).MPI_T_PVAR_CLASS_TIMERβ aggretate time spent executing event.MPI_T_PVAR_CLASS_GENERICβ used for any other time of performance variable.
π THREAD LEVELS π
MPI_THREAD_SINGLEβ only one thread executes.MPI_THREAD_FUNNELEDβ only the main thread makes MPI calls.MPI_THREAD_SERIALIZEDβ only one thread at a time makes MPI calls.MPI_THREAD_MULTIPLEβ multiple threads may make MPI calls.
π SPECIAL MPI TYPES AND FUNCTIONS π
MPI_Aintβ C type that holds any valid address.MPI_Countβ C type that holds any valid count.MPI_Offsetβ C type that holds any valid file offset.MPI_Handler_functionβ C function for handling errors (seeMPI_Errhandler_create).MPI_User_functionβ C function to combine values (see collective operations andMPI_Op_create).MPI_Copy_functionβ function to copy attributes (seeMPI_Keyval_create).MPI_Delete_functionβ function to delete attributes (seeMPI_Keyval_create).MPI_ERRORS_ARE_FATALβ error handler that forces exit on error.MPI_ERRORS_RETURNβ error handler that returns error codes (as value of MPI routine in C and through last argument in Fortran).MPI_ERRORS_ABORTβ error handler that forces exit on error (only aborts local process if the error handler is invoked on a session).
π MPI ATTRIBUTE DEFAULT FUNCTIONS π
MPI_COMM_NULL_COPY_FNβ predefined attribute copy function for communicators.MPI_COMM_NULL_DELETE_FNβ predefined attribute delete function for communicators.MPI_COMM_DUP_FNβ predefined attribute duplicate function for communicators.MPI_WIN_NULL_COPY_FNβ predefined attribute copy function for windows.MPI_WIN_NULL_DELETE_FNβ predefined attribute delete function for windows.MPI_WIN_DUP_FNβ predefined attribute duplicate function for windows.MPI_TYPE_NULL_COPY_FNβ predefined attribute copy function for datatypes.MPI_TYPE_NULL_DELETE_FNβ predefined attribute delete function for datatypes.MPI_TYPE_DUP_FNβ predefined attribute duplicate function for datatypes.
π§ MPI-1 ATTRIBUTE DEFAULT FUNCTIONS π§
MPI_NULL_COPY_FNβ predefined copy function.MPI_NULL_DELETE_FNβ predefined delete function.MPI_DUP_FNβ predefined duplication function.
π MPI ERROR CLASSES π
okay bestie, this is the big one β every single error class MPI can throw at you. when a call goes wrong, this is the value it hands back. memorize the vibes, not the list, and you're golden β¨
MPI_SUCCESSβ the good one π successful return code, no drama, no notesMPI_ERR_BUFFERβ that buffer pointer is invalid, hunMPI_ERR_COUNTβ the count argument? invalid, bestieMPI_ERR_TYPEβ invalid datatype argumentMPI_ERR_TAGβ invalid tag argumentMPI_ERR_COMMβ invalid communicatorMPI_ERR_RANKβ invalid rankMPI_ERR_ROOTβ invalid rootMPI_ERR_GROUPβ a null group got passed to a function πMPI_ERR_OPβ invalid operationMPI_ERR_TOPOLOGYβ invalid topologyMPI_ERR_DIMSβ illegal dimension argumentMPI_ERR_ARGβ invalid argumentMPI_ERR_UNKNOWNβ unknown error, the mystery box of errors π«£MPI_ERR_TRUNCATEβ message got truncated on receive, oopMPI_ERR_OTHERβ some other error; useError_stringto find out whatMPI_ERR_INTERNβ internal error code (not your fault, fr fr)MPI_ERR_IN_STATUSβ go look in the status for the actual error valueMPI_ERR_PENDINGβ pending request, it's still cooking β³MPI_ERR_REQUESTβ invalidmpi_requesthandleMPI_ERR_ACCESSβ permission denied πMPI_ERR_AMODEβ something's up with theamodeyou passed toMPI_FILE_OPENMPI_ERR_BAD_FILEβ invalid file name (like, the path name is too long, bestie)MPI_ERR_CONVERSIONβ an error happened inside a user supplied data conversion functionMPI_ERR_DUP_DATAREPβ the conversion functions could not be registered because a data representation identifier that was already defined got passed toMPI_REGISTER_DATAREPπMPI_ERR_FILE_EXISTSβ file exists alreadyMPI_ERR_FILE_IN_USEβ file operation could not be completed, because the file is currently open by some processMPI_ERR_FILEβ invalid file handleMPI_ERR_IOβ some other I/O errorMPI_ERR_NO_SPACEβ not enough spaceMPI_ERR_NO_SUCH_FILEβ file does not existMPI_ERR_READ_ONLYβ read-only file or file systemMPI_ERR_UNSUPPORTED_DATAREPβ unsupported datarep got passed toMPI_FILE_SET_VIEWMPI_ERR_INFOβ invalid info argumentMPI_ERR_INFO_KEYβ key is longer thanMPI_MAX_INFO_KEYMPI_ERR_INFO_VALUEβ value is longer thanMPI_MAX_INFO_VALMPI_ERR_INFO_NOKEYβ invalid key passed toMPI_INFO_DELETEMPI_ERR_NAMEβ invalid service name passed toMPI_LOOKUP_NAMEMPI_ERR_NO_MEMβAlloc_memcould not allocate memory πMPI_ERR_NOT_SAMEβ collective argument isn't identical on all processes, or collective routines got called in a different order by different processesMPI_ERR_PORTβ invalid port name passed toMPI_COMM_CONNECTMPI_ERR_QUOTAβ quota exceededMPI_ERR_SERVICEβ invalid service name passed toMPI_UNPUBLISH_NAMEMPI_ERR_SPAWNβ error in spawning processesMPI_ERR_UNSUPPORTED_OPERATIONβ unsupported operation, like seeking on a file that only supports sequential accessMPI_ERR_WINβ invalid win argumentMPI_ERR_BASEβ invalid base passed toMPI_FREE_MEMMPI_ERR_LOCKTYPEβ invalid locktype argumentMPI_ERR_KEYVALβ erroneous attribute keyMPI_ERR_RMA_CONFLICTβ conflicting accesses to windowMPI_ERR_RMA_SYNCβ wrong synchronization of RMA callsMPI_ERR_SIZEβ invalid size argumentMPI_ERR_DISPβ invalid disp argumentMPI_ERR_ASSERTβ invalid assert argumentMPI_ERR_RMA_RANGEβ target memory is not part of the window (and if the window was created withMPI_WIN_CREATE_DYNAMIC, then the target memory is not attached)MPI_ERR_RMA_ATTACHβ memory cannot be attached (like, because of resource exhaustion)MPI_ERR_RMA_SHAREDβ memory cannot be shared (like, some process in the group of the specified communicator cannot expose shared memory)MPI_ERR_RMA_FLAVORβ the passed window has the wrong flavor for the function that got calledMPI_ERR_LASTCODEβ last error code, always at the end, periodt
β¨ ERROR CODES FOR MPI_T β¨
these ones are the tool-interface edition, for when you're poking at MPI's guts with MPI_T calls π§
MPI_T_ERR_MEMORYβ out of memoryMPI_T_ERR_NOT_INITIALIZEDβ interface not initializedMPI_T_ERR_CANNOT_INITβ interface is not in the state where it can be initializedMPI_T_ERR_INVALID_INDEXβ the index is invalid or has been deletedMPI_T_ERR_INVALID_HANDLEβ the handle is invalidMPI_T_ERR_OUT_OF_HANDLESβ no more handles availableMPI_T_ERR_OUT_OF_SESSIONSβ no more sessions availableMPI_T_ERR_INVALID_SESSIONβ the session argument is not validMPI_T_ERR_CVAR_SET_NOT_NOWβ the cvar cannot be set at this momentMPI_T_ERR_CVAR_SET_NEVERβ the cvar cannot be set until the end of executionMPI_T_ERR_PVAR_NO_STARTSTOPβ the pvar can't be started or stoppedMPI_T_ERR_PVAR_NO_WRITEβ the pvar can't be written or resetMPI_T_ERR_PVAR_NO_ATOMICβ the pvar can't be R/W atomicallyMPI_T_ERR_INVALID_NAMEβ name doesn't matchMPI_T_ERR_INVALIDβ invalid use of the interface, or bad parameter value(s)
and that's the whole constants list, bestie β you made it to the end of part 3 of 3 π«Ά this page is from the Constants(3) manpage, dated 2/21/2022, and it was absolutely giving "reference material that ate" π
go forth and pass the right constants, you icon ππΈ
π¦ where this page comes from
- debian bookworm: mpich-doc 4.0.2-3 Β· other
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms