Software Tuning, Performance Optimization & Platform Monitoring
Discussion regarding monitoring and software tuning methodologies, Performance Monitoring Unit (PMU) of Intel microprocessors, and platform updating.

Error building IntelPerformanceCounterMonitorV2.8 in Visual Studio 2013

kmathew
Beginner
646 Views

Hello,

I encounter the following error when I compile IntelPerformanceCounterMonitorV2.8 using Visual Studio 2013.

1>------ Build started: Project: PCM-Service, Configuration: Release Win32 ------
1>  utils.cpp
1>c:\intelperformancecountermonitorv2.8\utils.h(60): error C3861: 'YieldProcessor': identifier not found
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Has anyone encountered this issue? 

Thanks

 

0 Kudos
1 Solution
Thomas_W_Intel
Employee
646 Views

I don’t know why, but it looks like Microsoft dropped YieldProcessor with Windows 8. Replacing it with _mm_pause solves the issue. Unfortunately, this fix did not make it in the latest release.

View solution in original post

0 Kudos
8 Replies
Bernard
Valued Contributor I
646 Views

It seems like #include header issue.Check if Winnt.h header file is #included.

 

 

0 Kudos
Bernard
Valued Contributor I
646 Views

Actually you may check utils.h header file and see if it file includes Winnt.h header file.

0 Kudos
Thomas_W_Intel
Employee
647 Views

I don’t know why, but it looks like Microsoft dropped YieldProcessor with Windows 8. Replacing it with _mm_pause solves the issue. Unfortunately, this fix did not make it in the latest release.

0 Kudos
Bernard
Valued Contributor I
646 Views

Thomas

Thanks for the info.

0 Kudos
kmathew
Beginner
646 Views

_mm_pause solved the issue. Thanks

I encounter another error when compiling the WinMSR driver

C:\IntelPerformanceCounterMonitorV2.8\WinMSRDriver\Win7>mymake.bat
C:\IntelPerformanceCounterMonitorV2.8\WinMSRDriver\Win7>set BUILD_PATH=
C:\IntelPerformanceCounterMonitorV2.8\WinMSRDriver\Win7>rmdir /S /Q objfre_win7_amd64
The system cannot find the file specified.
C:\IntelPerformanceCounterMonitorV2.8\WinMSRDriver\Win7>nmake
Microsoft (R) Program Maintenance Utility Version 12.00.21005.1
Copyright (C) Microsoft Corporation.  All rights reserved.
makefile(1) : fatal error U1052: file '\makefile.def' not found
Stop.

Is this a known issue as well?

I feel that it would be simpler for users if Intel just shipped the binaries for this package. (atleast for Windows)

0 Kudos
Thomas_W_Intel
Employee
646 Views

Please consider Intel PCM as sample code for accessing the PMU, not as an Intel product. That's why it is distributed under a BSD-like license instead of binaries.
Building and signing the driver is probably the hardest part of compiling PCM. Is using the atlernative WinRing0 driver an option for you? There are binaries available for that on the net. See also the included WINDOWS_HOWTO.

0 Kudos
kmathew
Beginner
646 Views

Building and signing the driver is probably the hardest part of compiling PCM. Is using the atlernative WinRing0 driver an option for you? 

I agree that driver signing can be an issue. But why does the driver project not compile? The WinRing0 works well and that is what I use. I still feel the binaries for the rest of the modules would help.

Below is an additional problem that arises. The Intelpcm.lib is not found in the expected location and it seems to be linked to compiling from within Visual Studio

1>------ Build started: Project: Intelpcm.dll, Configuration: Release Win32 ------
1>  dllmain.cpp
1>     Creating library C:\IntelPerformanceCounterMonitorV2.8\PCM-Service_Win\Release\Intelpcm.lib and object C:\IntelPerformanceCounterMonitorV2.8\PCM-Service_Win\Release\Intelpcm.exp
1>  Generating code
1>  Finished generating code
1>  Intelpcm.dll.vcxproj -> C:\IntelPerformanceCounterMonitorV2.8\PCM-Service_Win\Release\Intelpcm.dll.dll
2>------ Build started: Project: PCM-Service, Configuration: Release Win32 ------
2>LINK : fatal error LNK1181: cannot open input file '..\intelpcm.dll\Release\Intelpcm.lib'
========== Build: 1 succeeded, 1 failed, 1 up-to-date, 0 skipped ==========

By default build_all.bat builds in Debug|Win32 mode which does not work on some platforms for eg

C:\PCM-Service-v2.8>pcm.exe
DEBUG: Setting Ctrl+C done.

 Intel(r) Performance Counter Monitor V2.8 (2014-12-18 12:52:39 +0100 ID=ba39a89)

 Copyright (c) 2009-2014 Intel Corporation

Starting MSR service failed with error 2 The system cannot find the file specified.
Trying to load winring0.dll/winring0.sys driver...
Using winring0.dll/winring0.sys driver.

Error in processor group size counting: 48!=32
Make sure your binary is compiled for 64-bit: using 'x64' platform configuration.
Access to Intel(r) Performance Counter Monitor has denied (no MSR or PCI CFG space access).

C:\PCM-Service-v2.8>

The batch file needs to be adapted to get the right binaries. Would you accept patches or setup a project on git-hub to faciliate contributions to make things better?

Thanks

 

0 Kudos
Roman_D_Intel
Employee
646 Views

Hi kmathew,

Thanks for your feedback.

Did you start mymake.bat from WDK build environment ? (there is a special command line short-cut in WDK) Usually this error appears if WDK environment variables are not defined.

Intelpcm.lib should be compiled before PCM-Service that uses it (with the correct version Win32/x64, Debug/Release).

The next version of PCM will contain a build script for Windows that compiles all 64-bit x64 Windows binaries by default (it existed a while ago already).

Best regards,

Roman

0 Kudos
Reply