MPI_Op_create(3) MPI MPI_Op_create(3) NAME MPI_Op_create - Creates a user-defined combination function handle SYNOPSIS int MPI_Op_create(MPI_User_function *user_fn, int commute, MPI_Op *op) int MPI_Op_create_c(MPI_User_function_c *user_fn, int commute, MPI_Op *op) INPUT PARAMETERS user_fn - user defined function (function) commute - true if commutative; false otherwise. (logical) OUTPUT PARAMETERS op - operation (handle) NOTES ON THE USER FUNCTION For MPI_Op_create, the calling list for the user function type is typedef void (MPI_User_function) (void * a, void * b, int * len, MPI_Datatype *); For MPI_Op_create_c, the calling list for the user function type is typedef void (MPI_User_function_c) (void * a, void * b, MPI_Count * len, MPI_Datatype *); where the operation is b[i] = a[i] op b[i] , for i=0,...,len-1 . A pointer to the datatype given to the MPI collective computation routine (i.e., MPI_Reduce , MPI_Allreduce , MPI_Scan , or MPI_Reduce_scatter ) is also passed to the user-specified routine. NOTES ON COLLECTIVE OPERATIONS The reduction functions ( MPI_Op ) do not return an error value. As a re- sult, if the functions detect an error, all they can do is either call MPI_Abort or silently skip the problem. Thus, if you change the error han- dler from MPI_ERRORS_ARE_FATAL to something else, for example, MPI_ER- RORS_RETURN , then no error may be indicated. The reason for this is the performance problems in ensuring that all col- lective routines return the same error value. THREAD AND INTERRUPT SAFETY This routine is thread-safe. This means that this routine may be safely used by multiple threads without the need for any user-provided thread locks. However, the routine is not interrupt safe. Typically, this is due to the use of memory allocation routines such as malloc or other non-MPICH runtime routines that are themselves not interrupt-safe. NOTES FOR FORTRAN All MPI routines in Fortran (except for MPI_WTIME and MPI_WTICK ) have an additional argument ierr at the end of the argument list. ierr is an inte- ger and has the same meaning as the return value of the routine in C. In Fortran, MPI routines are subroutines, and are invoked with the call state- ment. All MPI objects (e.g., MPI_Datatype , MPI_Comm ) are of type INTEGER in Fortran. ERRORS All MPI routines (except MPI_Wtime and MPI_Wtick ) return an error value; C routines as the value of the function and Fortran routines in the last ar- gument. Before the value is returned, the current MPI error handler is called. By default, this error handler aborts the MPI job. The error han- dler may be changed with MPI_Comm_set_errhandler (for communicators), MPI_File_set_errhandler (for files), and MPI_Win_set_errhandler (for RMA windows). The MPI-1 routine MPI_Errhandler_set may be used but its use is deprecated. The predefined error handler MPI_ERRORS_RETURN may be used to cause error values to be returned. Note that MPI does not guarantee that an MPI program can continue past an error; however, MPI implementations will attempt to continue whenever possible. MPI_SUCCESS - No error; MPI routine completed successfully. MPI_ERR_ARG - Invalid argument. Some argument is invalid and is not identified by a specific error class (e.g., MPI_ERR_RANK ). MPI_ERR_OTHER - Other error; use MPI_Error_string to get more information about this error code. SEE ALSO MPI_Op_free 4/10/2026 MPI_Op_create(3)
NAME | SYNOPSIS | INPUT PARAMETERS | OUTPUT PARAMETERS | NOTES ON THE USER FUNCTION | NOTES ON COLLECTIVE OPERATIONS | THREAD AND INTERRUPT SAFETY | NOTES FOR FORTRAN | ERRORS | SEE ALSO
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=MPI_Op_create&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>
