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

CPU matching problem

youeris
Beginner
415 Views
Hi everyone,

I am new to IPP and have some problem at installation.
I installed the IPP 5.3 exactly as the guide on the website, but when I started an OpenCV application I got a message showing

Set ipp library error
No ipp matching to cpu was found during the waterfall

The CPU I use is Intel Core 2 E6320 and I also tried to use ippStaticInit(ippGetCpuType()) but the function returns zero @@
The value ippGetCpuType() is 33 and I am not sure what the integer means.
Thanks for help :)
0 Kudos
6 Replies
Ying_S_Intel
Employee
415 Views

Dear Customer,

This is a known issue, please check Intel IPP support site at: http://support.intel.com/support/performancetools/libraries/ipp/linux/ia/sb/CS-028706.htmfor work around.

Hope it helps.
Thanks,
Ying

0 Kudos
youeris
Beginner
415 Views
Dear Ying,

Thanks for the reply, but it doesn't help :(. the problem remains.
My operating system is windows XP professional with service pack 2.
Is there any other possible cause?

Thanks for the help
0 Kudos
paulsgauthier
Beginner
415 Views

I'm having the same problem with IPP 5.3 and OpenCV 1.0. Tried the revised version of cxswitcher.cpp to build a new cxcore100.dll/lib but it did not help. Does anyone have a solution to this?

Paul Gauthier

Image Softworks, Vermont, USA

0 Kudos
dug1
Beginner
415 Views
We ran into this problem ONLY when using the custom IPP interface for OpenCV.

The dllmain.c file in the ippopencv project (OPENCVinterfacesIPP) has only been written to support for Pentium III and Petium 4 processors (a6 & w7). When using this custom ippopencv.dll, if the host machine does not have one of the these two processors, then it returns the "No ipp matching to CPU was found during the Waterfall" popup.

We commented out the MessageBox to suppress that error as a temporary measure, but what we really need to do is write a version of the dllmain.c file that supports the core2 and core 2 duo processors (v8 & p8). i was hoping to find that someone had already done this, but it doesn't look that way.

Are you guys using the custom IPP interface?

dug.

cheif software engineer
dimensional imaging
http://www.di3d.com



0 Kudos
Shibby_Sadot
Beginner
415 Views

You can do this yourself rather easily. Just add new tags for t7 and v8 and add the new cpu types to GetProcessorId().

Quoting - dug
We ran into this problem ONLY when using the custom IPP interface for OpenCV.

The dllmain.c file in the ippopencv project (OPENCVinterfacesIPP) has only been written to support for Pentium III and Petium 4 processors (a6 & w7). When using this custom ippopencv.dll, if the host machine does not have one of the these two processors, then it returns the "No ipp matching to CPU was found during the Waterfall" popup.

We commented out the MessageBox to suppress that error as a temporary measure, but what we really need to do is write a version of the dllmain.c file that supports the core2 and core 2 duo processors (v8 & p8). i was hoping to find that someone had already done this, but it doesn't look that way.

Are you guys using the custom IPP interface?

dug.

cheif software engineer
dimensional imaging
http://www.di3d.com




0 Kudos
Ying_H_Intel
Employee
415 Views
Dear all,

IPP 6.1 release recently. OpenCV should be able to recoginize it without problem. If possible, please try it.

To who use OpenCV, OpenCV load IPP library by cvUseOptimized() in cxswitcher.cpp:
static const char* ipp_sfx_ia32[] = { "-6.1", "-6.0", "-5.3", "-5.2", "-5.1", "", 0 };
So if for further version, you may modify them manually.

Same as if you use IPP opencv Interface to build ippopencv.dll. It use ippGetCpuType() to decide cpu-special code.
so for future cpu,you mayneed add p8 code yourself.

33 means /* Intel Core 2 Duo processor .
You may check ippdef.h to see more detials, for example,
typedef enum {
/* Enumeration: Processor: */
ippCpuUnknown = 0x00,
ippCpuPP = 0x01, /* Intel Pentium processor */
ippCpuCoreSolo = 0x0a, /* Intel Core Solo processor */
ippCpuCoreDuo = 0x0b, /* Intel Core Duo processor */
ippCpuC2D = 0x21, /* Intel Core 2 Duo processor */
ippCpuC2Q = 0x22, /* Intel Core 2 Quad processor */
ippCpuPenryn = 0x23, /* Intel Core 2 processor with Intel SSE4.1 */
} IppCpuType;

But ippGetCpuType()will beobsoletein new release. Start version 6.0, we strongly recommend using this new function ippGetCpuFeatures() to detect the CPU feature if needed.
See http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-is-there-any-function-to-detect-processor-type/.
So you may build ippopencv.dll by the sampe provided by IPP directly. It may make thing easy.

Best Regards,
Ying
0 Kudos
Reply