Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.
6704 Discussions

Intel IPP 7.0 beta: ippGetNumCoresOnDie() returns 0 on Q9300 CPU

steffen_markert
Beginner
587 Views

Hi,

ippGetNumCoresOnDie() returns 0 on my system.

-------LogInfo--------------

CpuType: Intel Core 2 processor with Intel SSE4.1
CpuFreqMhz: 2527
MaxCacheSizeB: 6291456
NumCoresOnDie: 0
-----------------------------

OS: Microsoft Windows 7 Professional (x64)

CPU: Intel Core2 Extreme CPU Q9300 @ 2.53GHz

Compiler: Microsoft Visual C++ 2010

Intel IPP: 7.0 beta build 183.15 (ippsp8_t.lib)

Dependencies:libiomp5mt.lib;libmmt.lib;ippcore_t.lib;ipps_t.lib;ippm_t.lib;ippvm_t.lib

0 Kudos
12 Replies
PaulF_IntelCorp
Employee
587 Views
Hello Steffen,

This was supposed to have been fixed in 6.1.5 (see this thread http://software.intel.com/en-us/forums/showthread.php?t=72577). Will check with engineering to determine if something got missed in the beta or if the 6.1.5 fix does not work for your CPU.

Note that this is a purely informational function that does not impact the multi-threading behavior, which relies on the OpenMP library to detect and manage multiple threads.

Regards,

Paul
0 Kudos
PaulF_IntelCorp
Employee
587 Views
What happens when you use the __cpuid intrinsic?

It is available with both the Microsoft and Intel compilers. See this page for a description: http://msdn.microsoft.com/en-us/library/hskdteyh.aspx
0 Kudos
steffen_markert
Beginner
587 Views

I implemented the example given here:http://msdn.microsoft.com/en-us/library/hskdteyh.aspx

The results (excerpt):

CPU Brand String: Intel Core2 Extreme CPU Q9300 @ 2.53GHz
Cache Line Size = 64
L2 Associativity = 8
Cache Size = 6144K

Number of Cores = 4

ECX Index 0
Type: Data Cache
Level = 2
Self Initializing
Is Not Fully Associatve
Max Threads = 1
System Line Size = 64
Physical Line Partions = 1
Ways of Associativity = 8
Number of Sets = 64

...

0 Kudos
PaulF_IntelCorp
Employee
587 Views
Hello Steffen,

Engineering has been alerted to this bug. In the meantime, I would suggest you use the __cpuid intrinsic to determine the results you need. This function is not used by the IPP internal multi-threading library (the OpenMP library), it is provided strictly as an informational tool for you.

Paul
0 Kudos
steffen_markert
Beginner
587 Views

Hi,

on Windows Server 2008 with an Intel Core2 Quad CPU Q9550 @ 2.83GHz

ippGetNumCoresOnDie() returns 4. Maybe the bug depends on whether a mobile or a workstation cpu is used.

Strangely my TestApp takes significantly longer on the mobile cpu (12sec to 6.8sec).

0 Kudos
PaulF_IntelCorp
Employee
587 Views
Hello Steffen,

The closest to your Q9300 that I have for testing is also a Q9550. What happens when you build and run the IPPCPUINFO utility on the Q9300? Do you get a similar failure? When I test it on the Q9550 it works. I've build a 32-bit static version of that utility and attached it to this note so you can just run it and report back what it says are far as the number of cores.

Also, the fact that your app runs substantially slower on the Q9300 makes me think that it is being misidentified by the library and is running only the base code, not the optimized code. The cpuinfo tool will identify the library that should also be run (in 32-bit mode). Are you linking dynamically or statically?

Paul
0 Kudos
steffen_markert
Beginner
587 Views

Hello Paul,

attached you will find the results of ippcpuinfo.

I use the _IPP_PARALLEL_STATIC preprocessor definition. So it should statically link to the ippcore_t.lib.

0 Kudos
igorastakhov
New Contributor II
587 Views
hi,

could you run IPP cpuinfo sample on your Q9300? I don't have an access to 9300 - on 9550 and other this function works perfect. Runthe sampleplease and providean output, please: cpuinfo.exe > log9300.txt- this will make possible to fix this issue in 7.0.2 update.

Regards,
Igor
0 Kudos
PaulF_IntelCorp
Employee
587 Views
Hello Steffen,

Can you please try the attached test application, which has been built using the upcoming 7.0.2 release, to see if the ippGetNumCoresOnDie() function is fixed on your Q9300 system. All tests we have been able to do here appear to work, we would like to understand if the fix addresses the problem on your system.

Regards,

Paul


p.s. Below is the test application in source format:

[cpp]#include 
#include "ippcore.h"

int main()
{  
   int nCore = ippGetNumCoresOnDie();

   printf("nn nCore = %dn", nCore);

   return 0;
}
[/cpp]
0 Kudos
steffen_markert
Beginner
587 Views

Hello Paul,

Yes it works. The result is:

nCore = 4

0 Kudos
PaulF_IntelCorp
Employee
587 Views
Great news! I'll report that to engineering. The fix is part of the upcoming 7.0.2 release.
0 Kudos
Naveen_G_Intel
Employee
587 Views

Hi,

IPP 7.0 Update 2 is available now, we have fixed this issue this release. Please refer below to get complete details

Version 7.0.2 of the Intel Integrated Performance Primitives (Intel IPP) library is now available. The library is available as a stand-alone product or as a component in Intel Parallel Studio 2011, Intel Parallel Studio XE 2011, Intel C++ Studio XE 2011, Intel Composer XE 2011, and Intel C++ Composer XE 2011. Please visit the Intel Software Evaluation Center to download evaluation versions of these and other Intel software products.

What's New in 7.0.2

  • Additional optimizations for the 256-bit Intel AVX SIMD instruction set.
  • Further Intel Atom Processor optimizations have been incorporated.
  • Data compression gains of ~2x via a redesign of the "Inflate for Fixed Huffman" algorithm.
  • Cryptography improvements include 1.4x faster "sign verify" and a 2x faster ippsMontForm() function.
  • The ipp_zlib library is now based on the zlib 1.2.5 distribution.
  • Review a complete list of changes, bug fixes and new features on-line.

Regards,

Naveen Gv

0 Kudos
Reply