While Sun HPC ClusterTools libraries have TNF probes for performance profiling, user code probably will not. You can add probes manually, but since they are C macros you can add them only to C and C++ code. To use TNF probes from Fortran code, you must make calls to C code, such as in this C file, probes.c:
#include <tnf/probe.h>
void my_probe_start_(char *label_val) {
TNF_PROBE_1(my_probe_start,"user_probes","",tnf_string,label,
label_val);
}
void my_probe_end_ (double *ops_val) {
TNF_PROBE_1(my_probe_end ,"user_probes","",tnf_double,ops,
*ops_val);
}
The start routine accepts a descriptive string, while the end routine takes a double-precision operation count.Then, using Fortran, you might write in main.f:
DOUBLE PRECISION OPERATION_COUNT
OPERATION_COUNT = 2.D0 * N
CALL MY_PROBE_START("DOTPRODUCT")
XSUM = 0.D0
DO I = 1, N
XSUM = XSUM + X(I) * Y(I)
END DO
CALL MY_PROBE_END(OPERATION_COUNT)
Fortran will convert routine names to lowercase and append an underscore character.
To compile and link, use
% cc -c probes.c % f77 main.f probes.o -ltnfprobe
By default, the Prism command tnfcollection on enables all probes. Alternatively, these sample probes could be controlled through their probe group user_probes. Profile analysis can use the interval my_probe.
For more information on TNF probes, consult the man page for TNF_PROBE(3X).