首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PAPI应注意的几个问题

使用PAPI应注意的几个问题
EN

Stack Overflow用户
提问于 2011-04-01 12:56:42
回答 2查看 628关注 0票数 0

你用过PAPI吗?

因为PAPI支持2.6.32以上的内核版本(perf-events),所以我选择它来测试我的代码。

为什么无论我选择什么事件代码,比如PAPI_TOT_INS、PAPI_BR_INS等,我都只能得到相同的数字(结果)。

代码语言:javascript
复制
#include <stdio.h>
#include "papi.h"
int main(){
int i,j,k;
int a[300][300];
int b[300][300];
int c[300][300];
for(i=0;i<300;i++){
    for(j=0;j<300;j++){
        a[i][j]=1;
        b[i][j]=2;
        c[i][j]=0;
    }
}

int Events[1]={PAPI_TOT_INS};//={PAPI_BR_INS,PAPI_BR_MSP};

long_long values[1];//values[0]=0;

PAPI_start_counters(Events,1);

for(i=0;i<300;i++){
    for(j=0;j<300;j++){
        for(k=0;k<300;k++){
            c[i][j]+=a[i][k]*b[k][j];
        }
    }
}
printf("r is %d\n",c[0][0]);

PAPI_read_counters(values,1);

printf("events is %lld\n",values[0]);

for(i=0;i<300;i++){
    for(j=0;j<300;j++){
        for(k=0;k<300;k++){
            a[i][j]+=b[i][k]*c[k][j];
        }
    }
}

PAPI_accum_counters(values,1);

printf("events is %lld\n",values[0]);

for(i=0;i<300;i++){
            for(j=0;j<300;j++){
                    for(k=0;k<300;k++){
                            a[i][j]+=b[i][k]*c[k][j];
                    }
            }
    }

PAPI_stop_counters(values,1);

printf("events is %lld\n",values[0]);

return 0;
}

我的想法是:

1.My pc(uname -a):Linux xunzhang virtual-machine 2.6.35-28-generic #49-Ubuntu SMP Tue Mar .Linux/ X86_64

如何(命令)查看我的内核对perf-events的支持?我只使用默认结论>2.6.32....

2.我只是在我的MAC中使用我的虚拟机,这会影响吗??.

说点什么来引导/帮助我。谢谢!!

EN

回答 2

Stack Overflow用户

发布于 2012-02-14 02:39:22

您没有初始化PAPI。您应该在开始计数之前进行初始化,并在对关机进行计数之后执行。您可能想要读取ctest目录中的文件,看看它是如何完成的。

票数 0
EN

Stack Overflow用户

发布于 2012-09-12 17:24:12

AFAIK,高级PAPI调用不调用显式初始化。我和你有同样的问题。如果你已经解决了,能让我知道怎么解决吗?

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

https://stackoverflow.com/questions/5509320

复制
相关文章

相似问题

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