Hi everybody. I am a novice when it comes to using Intel performance monitoring products, so I am not sure how to properly phrase this question.
I am attempting to use the PCM to test some code a colleague and I developed for large scale numerical calculations in a super computing environment. We want investigate some performance characteristics of our methods compared to competitors. The problem is I am getting some nonsense information from the PCM, and I do not now why.
=== Relevant hardware and OS information ===
Computer: MacBook pro with Intel i5 processor
OS: OpenSUSE 13.1 running within a VirtualBox
PCM Version: 2.0b
When I run our code with calls to the PCM, I get the following information returned:
getIPC(before_sstate1,after_sstate1) // Returns -1
getL3CacheHitRatio(before_sstate1,after_sstate1) // Returns 1
getL3CacheMisses(before_sstate1,after_sstate1) // Returns 0
getBytesReadFromMC(before_sstate1,after_sstate1) // Returns 0
Where before_sstate1and after_sstate1 are declared as follows:
SystemCounterState before_sstate1 = getSystemCounterState();
/* EXPERIMENTS */
SystemCounterState after_sstate1 = getSystemCounterState();
Upon further investigation, I figured out that inside getIPC(), the line
int64 clocks = before_sstate1.CpuClkUnhaltedThread - after_sstate1.CpuClkUnhaltedThread;
is returning zero which causes the return value of -1 for getIPC(). It turns out that both before_sstate1.CpuClkUnhaltedThread
and after_sstate1.CpuClkUnhaltedThread have value zero.
Is any of this information helpful? I'm hoping this is the result of some common mistake. My colleague is really the computer scientist, but he is unable to continue work on this project at the moment, and I have taken the reigns. If further information or a copy-pasting of some code would help, please let me know.
Thank you all for any help you can give.