Listed below are a few ideas for future development of TAU within OpenCMISS
- Separate TAU directory tree - Currently, there is no difference in directory structure between OpenCMISS built with or without TAU. This becomes inconvenient if you often switch between the two options as it usually requires a clean when switching. This may also result in a mismatch of TAUPROF setting between OpenCMISS and your example. Suggest moving OpenCMISS built with TAU into
x86_64-tauprof
or a similarly named folder and add tauprof
into example executable filename.
- More advanced Makefile linking for TAU library naming - The filename of the TAU library files depends on how TAU is compiled (i.e the flags set). Currently, the TAU library filename is hardcoded (libtau-phase-mpi-papi.a) in NewExampleMakefile. In the future, it would be more user friendly to have the Makefile search for the tau files and select one based on a set of rules.
- Stricter phase naming conventions - Currently, naming is implemented in a rather unstructed manner developed for a select case. Perhaps a better, stricter naming structure would help new user jump into TAU.
- More advanced profiling
- Selective profiling - Have the ability to specify which functions to profile based on groupings. Maybe use an automated source instrumentor script like that supplied with TAU.
- Depth-based profiling - Have the ability to specify how deep you want to profile using some sort of specification similar to used in Diagnostics.
- Enter/Exit based profiling - Instrument Enter and Exit subroutines (which are called by every OpenCMISS function) with TAU and use some sort of function list file to select where to issue start and stop calls. This kind of file would hold pairs of function names which represent start and stop points (i.e a start call would be implemented in the enter of one function and the stop call would be implemented in the exit of another). This would need a intuitive, but strict format to avoid overlapping TAU calls. Inconsistent Enter/Exit arguments may cause problems with this approach.