[Pooma Logo]MC++


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++.

[Racy

This shows an MC++ profiled run and the profile of routine mc_kcode particle updates.

[Text

The text profile of node 0 shows the relative contribution of routines on that node.

[Node

The same profile on node 0 can be seen with bar charts.

[Legend]

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.

[Comparison]

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)