Linux 성능 카운터 하위 시스템에 대한 새로운 명령 줄 인터페이스 명령 인 'perf'를 사용하여 일부 응용 프로그램에서 실행되는 부동 소수점 및 산술 연산의 양을 측정하고자합니다. (테스트 목적으로 내가 만든 간단한 더미 응용 프로그램을 사용합니다 (아래 참조).linux perf 도구를 사용하여 응용 프로그램의 FLOP 측정
FP 및 정수 연산을 측정하기 위해 정의 된 'perf'이벤트를 찾을 수 없기 때문에 원시 하드웨어 이벤트 코드 (NNN은 이벤트 코드의 16 진수 값인 -rNNN과 함께 사용됨)를 파고 들기 시작했습니다. 그래서 내 진짜 문제는 은퇴 한 명령 (INST_RETIRED)에서 찾은 코드가 FP와 다른 명령 (X87 및 MMX/SSE)을 구별하지 않는다는 것입니다. 특정 코드에 적절한 umasks를 사용하려고하면 어떻게 든 'perf'가 umask 포함을 이해하거나 지원하지 않는다는 것을 알게되었습니다. 나에게 실행 된 X87의 지시를 내가 잘못 매개 변수를 공급라고한다
% perf stat -e rC0 ./a.out
나에게 은퇴 지침을 제공
하지만
% perf stat -e rC002 ./a.out
: 내가 함께했습니다. 아마도 그렇 겠지만, 'perf'와 함께 원시 하드웨어 이벤트의 umasks를 사용하는 올바른 방법은 무엇입니까? 일반적으로 perf 도구를 사용하여 실행 된 부동 소수점 연산과 정수 연산의 정확한 수를 얻는 방법은 무엇입니까? 내가 반환 한 확실하지 않다
int main(void){
float numbers[1000];
float res1;
double doubles[1000];
double res2;
int i,j=3,k=42;
for(i=0;i<1000;i++){
numbers[i] = (i+k)*j;
doubles[i] = (i+j)*k;
res1 = numbers[i]/(float)k;
res2 = doubles[i]/(float)j;
}
}
CPU가 무엇입니까? – osgx