首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在不同的函数中调用PAPI_start()和PAPI_stop()?

在不同的函数中调用PAPI_start()和PAPI_stop()?
EN

Stack Overflow用户
提问于 2014-05-19 16:33:42
回答 1查看 414关注 0票数 0

PAPI通常是这样使用的:

代码语言:javascript
复制
Initialize Lib
Add Event(s)
PAPI_start()
someCalculation()
PAPI_stop()

但是,我有一个应用程序,它的代码如下所示:

代码语言:javascript
复制
start = time()
someCalculation()
t = time() - start;

我想重写这个时间()函数,它位于另一个文件中。我的代码:

代码语言:javascript
复制
static int INIT=0;
int retval;
static int eventSet = PAPI_NULL;
long long res[1];

if(INIT){
        // eventSet is NOT PAPI_NULL here!
        if ((retval = PAPI_stop(eventSet, res)) != PAPI_OK)
                handle_error(retval);
        return res[0]/1e9;
}

INIT = 1;
retval = PAPI_library_init(PAPI_VER_CURRENT);

if ((retval = PAPI_create_eventset(&eventSet)) != PAPI_OK)
    handle_error(retval);

if ((retval = PAPI_add_named_event(eventSet, (char *) "rapl:::PP0_ENERGY:PACKAGE0")) != PAPI_OK)
    handle_error(retval);

if ((retval = PAPI_start(eventSet)) != PAPI_OK)
    handle_error(retval);

return 0.0;

在运行应用程序时,我从PAPI_stop()获得PAPI_stop()。

我假设在函数的两次运行之间共享eventSet变量就足够了。不幸的是,当调用PAPI_stop()时,这似乎不起作用,因为事件没有运行。

有机会解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-09 08:50:13

当你第三次打电话给计时器时会发生什么?你已经停止了。您需要重新考虑您的设计,也许可以使用PAPI_read - Anycorn。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23742877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档