gpt4 book ai didi

c - 使用PAPI的一些问题

转载 作者:行者123 更新时间:2023-11-30 18:06:27 26 4
gpt4 key购买 nike

你用过PAPI吗?

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

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

#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.我的电脑(uname -a):Linux xunzhang-虚拟机 2.6.35-28-generic#49-Ubuntu SMP 周二三月 ... X86_64 GNU/Linux

我(命令)如何查看我的内核对性能事件的支持?我只是使用默认结论 >2.6.32....

2.我只是在我的MAC中使用我的虚拟机,这有效果吗?..

请说一些指导/帮助我的话。谢谢!!

最佳答案

您没有初始化 PAPI。您应该在开始计数之前进行初始化,并在计数之后进行关闭。您可能想阅读 ctests 目录中的文件以了解它是如何完成的。

关于c - 使用PAPI的一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5509320/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com