I am trying to profile a function of OpenMx, an R package containing C++ and Fortran code, for CPU time. My operating system is OS X 10.10. I have read the section regarding this topic in the R manual. This section and this post lead me to try Instruments. Here is what I did
- Opened Instruments
- Chose the Time Profiler Template
- Pressed Record
- Started my R script using RStudio
I get the following output: . The command line tool sample returns the same output.
The problem is that it looks like omxunsafedgemm_
would be called directly from the Main Thread. However, this is a low level Fortran function. It is always called by a C++ function called omxDGEMM
. In this example omxDGEMM
is first called by omxCallRamExpection
(so almost at the bottom of the call tree). The total time of omxDGEMM
is 0. Thus, the profiling information is currently useless.
In the original version of the package omxDGEMM
is defined as inline. I changed this in the hope that it would resolve the issue. This was not the case. omxunsafedgemm
is called by omxDGEMM
like that
F77_CALL(omxunsafedgemm)(&transa, &transb,
&(nrow), &(ncol), &(nmid),
&alpha, a->data, &(a->leading),
b->data, &(b->leading),&beta, result->data, &(result->leading));
Any ideas how to obtain a sensible profiler output?