- publishing free software manuals
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)

Get a printed copy>>>

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 0954612051Valgrind 3.3 - Advanced Debugging and Profiling for GNU/Linux applicationsSee the print edition