MPI_TYPE_GET_ATTR(3)

πŸ’– MPI_TYPE_GET_ATTR(3) πŸ’–

okay so bestie, gather round 🫢 this is a page straight out of the Open MPI manual (section 3, if we're being precise, and we ARE), and it's all about MPI_Type_get_attr. Buckle up, it's short but it's cute.


✨ NAME ✨

MPI_Type_get_attr β€” returns the attribute associated with a data type. no cap, that's literally the whole job πŸ’…


🌸 SYNTAX 🌸

C Syntax

#include <mpi.h>

int MPI_Type_get_attr(MPI_Datatype type, int type_keyval, void *attribute_val, int *flag)

Fortran Syntax

USE MPI
! or the older form: INCLUDE 'mpif.h'
MPI_TYPE_GET_ATTR(TYPE, TYPE_KEYVAL, ATTRIBUTE_VAL, FLAG, IERROR)
     INTEGER TYPE, TYPE_KEYVAL, IERROR
     INTEGER(KIND=MPI_ADDRESS_KIND) ATTRIBUTE_VAL
     LOGICAL FLAG

Fortran 2008 Syntax

USE mpi_f08
MPI_Type_get_attr(datatype, type_keyval, attribute_val, flag, ierror)
     TYPE(MPI_Datatype), INTENT(IN) :: datatype
     INTEGER, INTENT(IN) :: type_keyval
     INTEGER(KIND=MPI_ADDRESS_KIND), INTENT(OUT) :: attribute_val
     LOGICAL, INTENT(OUT) :: flag
     INTEGER, OPTIONAL, INTENT(OUT) :: ierror

πŸŽ€ INPUT PARAMETERS πŸŽ€

  • type β€” the data type that the attribute is attached to (handle). it's giving "who's the owner of this little attribute" energy πŸ‘‘
  • type_keyval β€” key value (integer). yes, an integer, she's simple like that ✨

πŸ¦‹ OUTPUT PARAMETERS πŸ¦‹

  • attribute_val β€” the attribute value, unless flag = false. so like, she's only showing up if the flag says it's fine πŸ™ˆ
  • flag β€” "false" if no attribute is associated with the key (logical). basically the vibe check of "does this attribute even exist" πŸ’€
  • ierror β€” Fortran only: error status (integer). fortran girlies get their own little slot for it πŸ’œ

🌈 DESCRIPTION 🌈

For the given data type, MPI_Type_get_attr returns an attribute value that corresponds to the specified key value. that's it. that's the whole function. short queen, iconic behavior ✨


πŸ’€ ERRORS πŸ’€

Almost all MPI routines return an error value; C routines as the return result of the function and Fortran routines in the last argument. (yes, two different styles, i don't make the rules 😭)

Before the error value is returned, the current MPI error handler associated with the communication object (like a communicator, window, or file) gets called. If no communication object is associated with the MPI call, then the call is considered attached to MPI_COMM_SELF and will call the associated MPI error handler. When MPI_COMM_SELF is not initialized β€” like before MPI_Init / MPI_Init_thread, after MPI_Finalize, or when using the Sessions Model exclusively β€” the error raises the initial error handler. And the initial error handler can be changed by calling MPI_Comm_set_errhandler on MPI_COMM_SELF when you're using the World model, or via the mpi_initial_errhandler CLI argument to mpiexec, or an info key to MPI_Comm_spawn / MPI_Comm_spawn_multiple. If no other appropriate error handler has been set, then the MPI_ERRORS_RETURN error handler is called for MPI I/O functions and the MPI_ERRORS_ABORT error handler is called for all other MPI functions.

Open MPI includes three predefined error handlers that can be used:

  • MPI_ERRORS_ARE_FATAL β€” causes the program to abort all connected MPI processes. very dramatic, very final πŸ’…
  • MPI_ERRORS_ABORT β€” an error handler that can be invoked on a communicator, window, file, or session. When called on a communicator, it acts as if MPI_Abort was called on that communicator. If called on a window or file, acts as if MPI_Abort was called on a communicator containing the group of processes in the corresponding window or file. If called on a session, it aborts only the local process.
  • MPI_ERRORS_RETURN β€” returns an error code to the application. the chill one 🧚

MPI applications can also implement their own error handlers by calling:

  • MPI_Comm_create_errhandler then MPI_Comm_set_errhandler
  • MPI_File_create_errhandler then MPI_File_set_errhandler
  • MPI_Session_create_errhandler then MPI_Session_set_errhandler or at MPI_Session_init
  • MPI_Win_create_errhandler then MPI_Win_set_errhandler
⚠️ Note that MPI does not guarantee that an MPI program can continue past an error. fr fr, don't assume you can just keep going. 😭

See the MPI man page for a full list of MPI error codes.

See the Error Handling section of the MPI-3.1 standard for more information.

See also:

  • MPI_Type_set_attr β€” the matching setter, her bestie 🫢

2003-2026, The Open MPI Community


and that's the whole page bestie!! 🌸 this version of the page is dated Sep 10, 2026, it lives in the Open MPI manual as page MPI_TYPE_GET_ATTR(3), and honestly? she ate. go set yourself an attribute, you've earned it πŸ’–βœ¨πŸŽ€

πŸ“¦ where this page comes from