1MPI_Op_create(3)                    LAM/MPI                   MPI_Op_create(3)
2
3
4

NAME

6       MPI_Op_create -  Creates a user-defined combination function handle
7

SYNOPSIS

9       #include <mpi.h>
10       int MPI_Op_create(MPI_User_function func, int commute,
11                        MPI_Op *pop)
12

INPUT PARAMETERS

14       func   - user defined function (function)
15       commute
16              - true if commutative;  false otherwise.
17
18

OUTPUT PARAMETER

20       pop    - operation (handle)
21
22

NOTES ON THE USER FUNCTION

24       The calling list for the user function type is
25
26       typedef void (MPI_User_function) ( void * a,
27       void * b, int * len, MPI_Datatype * );
28
29
30       where  the  operation is b[i] = a[i] op b[i] , for i = 0, ... , len-1 .
31       A pointer to the datatype given to the MPI collective computation  rou‐
32       tine (i.e., MPI_Reduce , MPI_Allreduce , MPI_Scan , or MPI_Reduce_scat‐
33       ter ) is also passed to the user-specified routine.
34
35

NOTES

37       When the MPI_Op created by this function is no longer  being  used,  it
38       should be freed with MPI_Op_free .
39
40
41

NOTES FOR FORTRAN

43       All  MPI routines in Fortran (except for MPI_WTIME and MPI_WTICK ) have
44       an additional argument ierr at the end of the argument list.   ierr  is
45       an  integer and has the same meaning as the return value of the routine
46       in C.  In Fortran, MPI routines are subroutines, and are  invoked  with
47       the call statement.
48
49       All MPI objects (e.g., MPI_Datatype , MPI_Comm ) are of type INTEGER in
50       Fortran.
51
52

NOTES ON COLLECTIVE OPERATIONS

54       The reduction functions ( MPI_Op ) do not return an error value.  As  a
55       result,  if  the  functions  detect an error, all they can do is either
56       call MPI_Abort or silently skip the problem.  Thus, if you  change  the
57       error  handler  from  MPI_ERRORS_ARE_FATAL  to  something  else  (e.g.,
58       MPI_ERRORS_RETURN ), then no error may be indicated.
59
60       The reason for this is the performance problems that arise in  ensuring
61       that all collective routines return the same error value.
62
63

ERRORS

65       If an error occurs in an MPI function, the current MPI error handler is
66       called to handle it.  By default, this error  handler  aborts  the  MPI
67       job.   The  error  handler may be changed with MPI_Errhandler_set ; the
68       predefined error handler MPI_ERRORS_RETURN may be used to  cause  error
69       values  to  be  returned  (in C and Fortran; this error handler is less
70       useful in with the C++ MPI  bindings.   The  predefined  error  handler
71       MPI::ERRORS_THROW_EXCEPTIONS  should  be used in C++ if the error value
72       needs to be recovered).  Note that MPI does not guarantee that  an  MPI
73       program can continue past an error.
74
75       All  MPI  routines  (except  MPI_Wtime  and MPI_Wtick ) return an error
76       value; C routines as the value of the function and Fortran routines  in
77       the  last  argument.  The C++ bindings for MPI do not return error val‐
78       ues; instead, error values are communicated by throwing  exceptions  of
79       type  MPI::Exception  (but not by default).  Exceptions are only thrown
80       if the error value is not MPI::SUCCESS .
81
82
83       Note that if the MPI::ERRORS_RETURN handler is set in  C++,  while  MPI
84       functions  will  return  upon an error, there will be no way to recover
85       what the actual error value was.
86       MPI_SUCCESS
87              - No error; MPI routine completed successfully.
88       MPI_ERR_OP
89              - Invalid operation.  MPI operations (objects of type  MPI_Op  )
90              must either be one of the predefined operations (e.g., MPI_SUM )
91              or created with  MPI_Op_create  .   Additionally,  only  certain
92              datatypes  are  alloed  with  given  predefined operations.  See
93              MPI-1, section 4.9.2.
94       MPI_ERR_ARG
95              - Invalid argument.  Some argument is invalid and is not identi‐
96              fied  by  a  specific  error  class.   This  is typically a NULL
97              pointer or other such error.
98       MPI_ERR_OTHER
99              - This error is returned when some part of the LAM/MPI implemen‐
100              tation is unable to acquire memory.
101
102

SEE ALSO

104       MPI_Op_free
105
106

MORE INFORMATION

108       For more information, please see the official MPI Forum web site, which
109       contains the text of both the MPI-1 and MPI-2 standards.   These  docu‐
110       ments  contain  detailed  information  about each MPI function (most of
111       which is not duplicated in these man pages).
112
113       http://www.mpi-forum.org/
114
115
116

ACKNOWLEDGEMENTS

118       The LAM Team would like the thank the MPICH Team for the handy  program
119       to  generate  man  pages ("doctext" from ftp://ftp.mcs.anl.gov/pub/sow‐
120       ing/sowing.tar.gz ), the initial formatting, and some initial text  for
121       most of the MPI-1 man pages.
122

LOCATION

124       opcreate.c
125
126
127
128LAM/MPI 7.1.2                      2/23/2006                  MPI_Op_create(3)
Impressum