| Valgrind 3.3 - Advanced Debugging and Profiling for GNU/Linux applications by J. Seward, N. Nethercote, J. Weidendorfer and the Valgrind Development Team Paperback (6"x9"), 164 pages ISBN 0954612051 RRP £12.95 ($19.95) |
5.8.4.1 Functions
All MPI2 functions except ‘MPI_Wtick’, ‘MPI_Wtime’ and ‘MPI_Pcontrol’ have wrappers. The first two are not wrapped because they return a ‘double’, and Valgrind's function-wrap mechanism cannot handle that (it could easily enough be extended to). ‘MPI_Pcontrol’ cannot be wrapped as it has variable arity: ‘int MPI_Pcontrol(const int level, ...)’
Most functions are wrapped with a default wrapper which does nothing except complain or abort if it is called, depending on settings in ‘MPIWRAP_DEBUG’ listed above. The following functions have “real”, do-something-useful wrappers:
PMPI_Send PMPI_Bsend PMPI_Ssend PMPI_Rsend PMPI_Recv PMPI_Get_count PMPI_Isend PMPI_Ibsend PMPI_Issend PMPI_Irsend PMPI_Irecv PMPI_Wait PMPI_Waitall PMPI_Test PMPI_Testall PMPI_Iprobe PMPI_Probe PMPI_Cancel PMPI_Sendrecv PMPI_Type_commit PMPI_Type_free PMPI_Pack PMPI_Unpack PMPI_Bcast PMPI_Gather PMPI_Scatter PMPI_Alltoall PMPI_Reduce PMPI_Allreduce PMPI_Op_create PMPI_Comm_create PMPI_Comm_dup PMPI_Comm_free PMPI_Comm_rank PMPI_Comm_size PMPI_Error_string PMPI_Init PMPI_Initialized PMPI_Finalize
A few functions such as ‘PMPI_Address’ are listed as ‘HAS_NO_WRAPPER’. They have no wrapper at all as there is nothing worth checking, and giving a no-op wrapper would reduce performance for no reason.
Note that the wrapper library itself can itself generate large numbers of calls to the MPI implementation, especially when walking complex types. The most common functions called are ‘PMPI_Extent’, ‘PMPI_Type_get_envelope’, ‘PMPI_Type_get_contents’, and ‘PMPI_Type_free’.
| ISBN 0954612051 | Valgrind 3.3 - Advanced Debugging and Profiling for GNU/Linux applications | See the print edition |