2016-11-14 5 views
0

프로파일 링을 수행하기 위해 매우 졸린 CS를 사용하고 있습니다.프로파일 링; ippvmGetLibVersion : 전화하지 않았습니다.

IPP (인텔 통합 성능 프리미티브)는 기본적으로 단일 통화, 내 프로젝트에 사용됩니다

ippsExp_64fc_A26(reinterpret_cast<Ipp64fc*>(delta_vector.data()), reinterpret_cast<Ipp64fc*>(delta_vector_out.data()), delta_vector.size()); 

는 프로파일 링 후, 나는 함수 호출로 만든 이상한 함수 호출을 발견 이전에 하나를 언급했다. ippvmGetLibVersion은 그 이름이고, 실행 시간의 거의 1/3을 차지합니다. 내 출처에는 언급이 없습니다. ippInit은 주 프로그램의 시작 부분에서 호출됩니다.

무슨 일이 일어나고 있으며 어떻게 제거합니까? 동일한 반환을 가진 일정한 외침을위한 실행 시간을 낭비하는 것은 어리석은 것처럼 보인다.

답변

0

실제로 버그입니다. Visual Studio의 프로파일 러는 언급 된 기능의 흔적을 보이지 않습니다.

+1

Very Sleepy CS의 이러한 행동에 대한 이유는 다음과 같을 수도 있습니다. 모든 프로파일 러는 CPU 샘플링을 사용합니다. 즉, 일정 간격 후에 인터럽트 응용 프로그램을 사용하고 중단 전에 응용 프로그램이 작동하는 위치를 확인하려고 시도합니다. 이 분석은 스택 및 글로벌 기호의 정보에 대해 수행됩니다. ippsExp_64fc_A26 및 IPP 벡터 수학 도메인의 다른 함수에는 응용 프로그램 주소 공간에 전역 이름이 없습니다. 따라서 VS CS는 배치 분석 중에 기초 자료가 아닙니다. 가장 가까운 알려진 글로벌 심볼 (귀하의 경우 ippvmGetLibVersion)을 가리킬 수 있습니다. 스택 해제 정보 부족)). –

1

누가 ippvmGetLibVersion을 호출했는지 확인할 수 있습니까? VS CS는 그 기능을 제공합니까? 그렇지 않으면 ippvmGetLibVersion address에서 중단 점을 설정하고 호출 스택을 표시 할 수 있습니다.

P. 이 함수가 ippsExp_64fc_A26과 공통점이 있는지 확인하겠습니다.

감사합니다. Sergey.

+0

아니요. 예상대로 ippVMGetLibVersion이 ippsExp_64fc_A26에서 호출되지 않았습니다. GetLibVersion의 다른 가능한 호출을 찾으십시오. –

+0

감사! 나는 그것을 조사하려고 노력할 것입니다. 아마도 프로파일 러 자체가 도청되었거나 뭔가 있습니다. 왜냐하면 ippInit와 다른 호출은 없기 때문입니다. –