We have a little cluster with the Intel Cluster Toolkit. On the cluster we are using our programs developed in our labor: - it is a code to solve Fluid-Structure Interaction: so we have a code for the fluid part, a code for the solid part and a coupling program - the program for the fluid part is written in Fortran. - the program for the solid part is written in C++. - the coupling program is written in C++.
We would like to optimize them. Particularly the program for the fluid part (Fortran).
I have found that in the Intel Cluster Toolkit there are 2 possible products, which could be useful: - Intel Trace collector - Intel Trace analyzer Are these products relevant for my problem ? Or are they useful just for tracking MPI problem ?
With the key word "profiling" I found the "-p" option combined with the "gprof" command. It gives interesting results, but is there a way to restrict the profiling just to a part of a subroutine (in order to get an idea where are the problems) ?
I found the Intel Vtune product too. What do you think ? Could this product be interesting for my problem ? or gprof or others tools are enough ?
Trace collector/analyzer is primarily for analyzing performance of your MPI layer. Gprof isn't particularly suited to a multi-rank cluster application, but it's useful for finding the time spent by a single rank in various functions (including the MPI library). For profiling at the loop level inside your functions, VTune is excellent. The closest open source tool would be oprofile.
Intel Trace Collector is just a tool which helps you to collect information about all MPI functions and communications in your program. If you don't call MPI functions it's useless (well, strictly speaking there is an API which can help you with any application). Intel Trace Analyzer helps you to analyze collected data. This is a graphical tool and using different charts you can find imbalance of your application.
Also you can use option '-tcollect' of the Intel compiler. In this case all functions will be instrumented.
Furthermore, there is a tool called itcpin using which you can instrument any application even if you have executable only.