MC++ is a multi-group Monte Carlo criticality code written in C++ and based on
the POOMA framework.
This illustrates how different views presented by RACY were used in MC++.
This shows an MC++ profiled run and the profile of routine mc_kcode particle updates
.
The text profile of node 0 shows the relative contribution of routines on that node.
The same profile on node 0 can be seen with bar charts.
The routines are represented by colors as indicated in the function legend window. TAU allowed the user to label code sections with unique, descriptive
names, and then to gather performance statistics for them.
TAU allows the user to compare the profiles of two different runs. In the figure above we see the comparison between the mean profiles (over 8 processors each) of MC++ with SGI MIPSPro compiler (bottom) with KAI's optimizing KCC compiler (top).
Conclusions
TAU profiling information helped the MC++ designers to repeatedly assess
the impact of various modifications to their implementation. For instance,
when they changed the interface of the update function to allow the user to
supply an optional array of particle data, indicating whether or not each
particle should be considered as a candidate for being sent to another
procesor, the TAU profiling data gave them critical feedback on how
useful this extension was.
When MC++ was scaled to run on a large number of processors, the TAU
profiling displays revealed a bottleneck in the section of code which
input neutron cross-section data. Using the ability to assign each
profiled function to a particular "group", it was easy to focus on this
bottleneck, by requesting TAU profiling data from only those functions in
the "User I/O" profiling group. When an alternate implementation for this
section of code was developed, TAU's profiling data verified that it had the
desired scaling with processor numbers.
(From "Portable Profiling and Tracing for Parallel Scientific Applications using C++" - In Proc. ACM SIGMETRICS Symp. on Parallel and Distributed Tools, pp. 134-145, Aug. 1998)