IBM PE
Here's how to use the MemoryScape with IBM PE MPI codes.There are two alternatives. The first is to place the following proc within your .tvdrc file:
# Automatically enable memory error notifications
# (without enabling memory debugging) for poe programs.
proc enable_mem {loaded_id} {
set mem_prog poe
set executable_name [TV::image get $loaded_id name]
set file_component [file tail $executable_name]
if {[string compare $file_component $mem_prog] == 0} {
puts "Enabling Memory Debugger for $file_component”
dheap -notify
}
}
# Append this proc to TotalView’s image load
# callbacks so that it runs this macro automatically
dlappend TV::image_load_callbacks enable_mem
Here’s the second method:
mpcc_r -g test.o -o test -Lpath_mr -Lpath \
path/aix_malloctype.o
2 Start TotalView on poe as usual:
totalview poe -a test args
Because
tvheap_mr.a is not in poe’s LIBPATH, enabling memory debugging upon the
poe process will cause problems because
poe will not be able to locate the
tvheap_mr.a malloc replacement library.
3 If you want TotalView to notify you when a heap error occurs in your application (and you probably do):
Select the
Debug> Stop on Memory Error command from the Process Window showing
poe. This command turns on notification in the
poe process. The MPI processes to which TotalView will attach inherit notification.
4 Run the poe process.
5 Select Debug > Open MemoryScape from the menu to open MemoryScape to examine your memory usage.