|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
RRP £12.95 ($19.95)
5.8.6 What to expect when using the MPI wrappers
The wrappers should reduce Memcheck's false-error rate on MPI applications. Because the wrapping is done at the MPI interface, there will still potentially be a large number of errors reported in the MPI implementation below the interface. The best you can do is try to suppress them.
You may also find that the input-side (buffer length/definedness) checks find errors in your MPI use, for example passing too short a buffer to ‘MPI_Recv’.
Functions which are not wrapped may increase the false error rate. A possible approach is to run with ‘MPI_DEBUG’ containing ‘warn’. This will show you functions which lack proper wrappers but which are nevertheless used. You can then write wrappers for them.
A known source of potential false errors are the ‘PMPI_Reduce’ family of functions, when using a custom (user-defined) reduction function. In a reduction operation, each node notionally sends data to a “central point” which uses the specified reduction function to merge the data items into a single item. Hence, in general, data is passed between nodes and fed to the reduction function, but the wrapper library cannot mark the transferred data as initialised before it is handed to the reduction function, because all that happens “inside” the ‘PMPI_Reduce’ call. As a result you may see false positives reported in your reduction function.
|ISBN 0954612051||Valgrind 3.3 - Advanced Debugging and Profiling for GNU/Linux applications||See the print edition|