我正在尝试对OpenMx的一个函数进行CPU时间分析,该R包含有C++和Fortran代码。我的操作系统是OS X 10.10。我已经阅读了R手册中关于这个主题的部分以及这篇文章,它们都引导我尝试使用Instruments。以下是我所做的:
。命令行工具sample返回相同的输出。
问题在于看起来
在包的原始版本中,
有没有想法如何获得一个合理的分析器输出?
- 打开Instruments
- 选择时间分析模板
- 点击记录按钮
- 使用RStudio启动我的R脚本
![Instruments Output](https://istack.dev59.com/aKIQm.webp)
问题在于看起来
omxunsafedgemm_
将直接从主线程调用。然而,这是一个低级Fortran函数。它总是被一个名为omxDGEMM
的C++函数调用。在这个例子中,omxDGEMM
首先被omxCallRamExpection
调用(所以几乎在调用树的底部)。omxDGEMM
的总时间为0。因此,目前的分析信息是无用的。在包的原始版本中,
omxDGEMM
被定义为内联。我改变了这一点,希望能解决问题。但事实并非如此。omxunsafedgemm
被omxDGEMM
调用,方式如下:F77_CALL(omxunsafedgemm)(&transa, &transb,
&(nrow), &(ncol), &(nmid),
&alpha, a->data, &(a->leading),
b->data, &(b->leading),&beta, result->data, &(result->leading));
有没有想法如何获得一个合理的分析器输出?