Hi All,<br><br>So I spent some time last week learning how to use TAU, which stands for Tuning and Analysis Utilities. It is essentially a tool that allows easy profiling of software, including using hardware counters for things like cache misses and floating point instructions. It uses PAPI underneath to use the hardware counters, and it provides a graphical interface for making performance plots. It has a lot of other capabilities that I don&#39;t know how to use yet, but so far it has been pretty useful to use.<br>

<br>It can auto instrument software to profile the code for you, or you can manually instrument the code. I&#39;ve had some issues with the auto instrumentation, as it doesn&#39;t work well with fortran for some reason. Since we have built in timers in MPAS already, I have a version where I added the tau hooks into the timer module. This allows tau to profile sections of code specified by us with our mpas timers, and you can get hardware counter information for those sections of code.<br>

<br>I&#39;m proposing to commit these changes to the trunk. I have attached the three files that change. Essentially, we add the tau hooks to mpas_timer.F wrapped with ifdefs on the variable MPAS_TAU, and then change two makefiles (root and src) to pass a different linker in if you build with tau.<br>

<br>I&#39;m currently using the make variable TAU=true to define you want to use the tau hooks, and MPAS_TAU for tau hooks in the actual code. If anyone would rather these be named something different feel free to let me know, as I&#39;m not attached to either one.<br>

<br>If no one has any issues with this, I&#39;ll probably commit it to the trunk either tomorrow or the day after.<br><br>Also just so everyone knows, without TAU=true the code will compile as it currently does and you won&#39;t get the extra tau information. One last thing, in doing this TAU handles all of the calls to PAPI. So we could remove the option to build with PAPI, and leave the timers in MPAS to be either the MPI timers or the system clock timers. Just to take one option away that is already handled.<br>

<br>Let me know if anyone has any questions/comments.<br>Thanks,<br>Doug<br>