0

I'm using Very Sleepy CS to do profiling, if that matters.

IPP(Intel's Integrated Performance Primitives) are used in my project, basically for a single call:

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

After the profiling, I noticed a strange function call made from function that calls the previously mentioned one. ippvmGetLibVersion is its name, and it takes almost 1/3 of the time of execution. There's no mention of it in my sources. ippInit is called at the beginning of the main program.

What is happening and how do I get rid of it? Wasting execution time for constant calls with same returns seems stupid.

Leontyev Georgiy
  • 1,295
  • 11
  • 24

2 Answers2

1

Could you check who calls ippvmGetLibVersion? VS CS provides that capability? If not, you can set a breakpoint just at ippvmGetLibVersion address and display call stack.

P.S. I will check if this function has anything in common with ippsExp_64fc_A26.

Regards, Sergey.

Sergey Khlystov
  • 276
  • 2
  • 5
  • No. As expected, ippVMGetLibVersion is not called from ippsExp_64fc_A26. Look for other possible calls of GetLibVersion. – Sergey Khlystov Nov 15 '16 at 07:03
  • Thanks! I'll try to look into it - maybe the profiler itself is bugged or something, because there are no other calls but ippInit and this one. – Leontyev Georgiy Nov 16 '16 at 09:08
0

It is a bug indeed. Visual Studio's profiler shows no sign of the mentioned function.

Leontyev Georgiy
  • 1,295
  • 11
  • 24
  • 1
    The reason for such behavour of Very Sleepy CS may be also the following. All profilers use CPU sampling, i.e. interrupt application after some interval and try to determine where application was working before interruption. This analysis is done on information from stack and global symbols. The ippsExp_64fc_A26 and other functions from IPP vector math domain have no global names in application address space. So, VS CS has nothing to base on during placement analysis. It can point to closest known global symbol (ippvmGetLibVersion in your case). Lack of stack unwinding information )). – Sergey Khlystov Nov 17 '16 at 14:17