我正在尝试分析 OpenMx 的功能,这是一个包含 C++ 和 Fortran 代码的 R 包,用于 CPU 时间。我的操作系统是 OS X 10.10。我已阅读R 手册中有关此主题的部分。本节和这篇文章引导我尝试 Instruments。这是我所做的
- 打开仪器
- 选择时间分析器模板
- 按下记录
- 使用 RStudio 启动我的 R 脚本
我得到以下输出:. 命令行工具示例返回相同的输出。
问题是它看起来像是 omxunsafedgemm_
直接从主线程调用的。但是,这是一个低级 Fortran 函数。它总是由一个名为 的 C++ 函数调用omxDGEMM
。在这个例子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));
任何想法如何获得合理的分析器输出?