您有沒有使用過PAPI?使用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.My PC (uname -a): Linux xunzhang-virtual-machine 2.6.35-28-generic#49 -Ubuntu SMP Tue Mar ... X86_64 GNU/Linux
我怎麼可以(命令)看到我的內核支持perf -events?我只是用那些> 2.6.32 ....
2.我只是用我的虛擬機在我的MAC默認的結論,這是否影響?? ..
說些什麼來指導/幫助我。謝謝!!
我有答案!我嘗試物理機器,它打印正確的答案... – xunzhang 2011-04-01 10:02:22