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

Error while loading IppSP libraries

gregorio_chindamo
3,329 Views
Hi,

I am evaluating the IPP 7.0 version and trying to speed up the execution time of my applications.

Currently, I am runningone of themwhich is using header files as below:

ipp.h
ipps.h
ippcore.h

and Iwant to have a dynamic linking.


I linked the following libs:

ippcore.lib,
ipps.lib

and I am using the complete IPP CPU specific libraries suiteat run time including:

ippcore-7.0.dll
ipps-7.0.dll
libiomp5md.dll

The applications works fine on my machine (which has an Intel Xeon E31245 CPU)where 7.0 IPP is installed, but when I copy the exe and dlls on toanothermachine (which has a Mobile Intel Celeron CPU)and start it, it throws an error saying "Error at loading of IppSP library. No DLLs were found in the waterfall procedure".

Could you please let me know if I am missing something? Does IPP 7.0 support the Intel Mobile Celeron CPU?

Thanks very much in advance.


Best Regards,

Gregorio Chindamo

0 Kudos
15 Replies
igorastakhov
New Contributor II
3,329 Views
Hi,

You should copy all ippsxxx.dll libraries - ipps-7.0.dll is only dispatcher that selects the best suitable library for current CPU and loads corresponding dll.

Regards,
Igor
0 Kudos
gregorio_chindamo
3,329 Views
Hi Igor,

As I said I have already copied all of them including the dispatcher, but it doesnt work. I suspect that Intel Celeron Mobile CPU is not supported. Can anyone confirm this?

Thanks.

Regards,
Gregorio Chindamo
0 Kudos
igorastakhov
New Contributor II
3,329 Views
Hi Gregorio,

Could you run ippCpuInfo sample on your Celeron and provide me an output? I'll check if your CPU is supported.

Regards,
Igor
0 Kudos
SergeyKostrov
Valued Contributor II
3,329 Views
>>...error saying "Error at loading of IppSP library. No DLLs were found in the waterfall procedure"...

Hi Gregorio,

You canuse an MSutility Depends.exe from Platform SDK ( older versions \ always in Bin folder) in order to see all dependenciesfor yourapplication(s).

Some versions of MS Visual Studios also could have Depends.exe ( ..\CommonX\Tools\Bin folder ).

Theutility is very helpful becausehas UI and allows to see all dependent DLLs.

Best regards,
Sergey

0 Kudos
gregorio_chindamo
3,329 Views
I created a small exe inserting the IppGetCpuType function. The result is 0x09 which should mean that my Intel Celeron Mobile is recognized as an Intel Centrino mobile technology.

Any other idea?

Thanks.

Regards,
Gregorio
0 Kudos
gregorio_chindamo
3,329 Views
I already used Dependency Walker to look for missing libs, but everything seems to be there.

Thanks.

Regards,
Gregorio
0 Kudos
igorastakhov
New Contributor II
3,329 Views
Gregorio,

the lowest CPU supported by IPP 7.0.x is Pentium4 (SSE2 instruction set), Centrino is P6 architecture (SSE1 only), so it isn't supported. Use IPP 6.1 for it...

Regards,
Igor
0 Kudos
gregorio_chindamo
3,329 Views
Thanks for the support Igor.

Do you know where I can download it from?

Thanks.


Regards,
Gregorio
0 Kudos
SergeyKostrov
Valued Contributor II
3,328 Views
Did you have a chance to check IppCpuType enumeration from 'ippdefs.h' header file? Does it have a value 0x09?

My older versions of IPP and IPLdon't have it.

Best regards,
Sergey
0 Kudos
Sergey_K_Intel
Employee
3,328 Views
I already used Dependency Walker to look for missing libs, but everything seems to be there.

Thanks.

Regards,
Gregorio

Library dispatcher uses LoadLibrary API call to load/link proper DLL. At's a run-time action. Walker shows only static linkage dependencies.

Regards,
Sergey

0 Kudos
igorastakhov
New Contributor II
3,328 Views
For Sergey: from ippdefs.h IPP6.1:

typedef enum {

/* Enumeration: Processor: */

ippCpuUnknown = 0x00,

ippCpuPP = 0x01, /* Intel Pentium processor */

ippCpuPMX = 0x02, /* Pentium processor with MMX technology */

ippCpuPPR = 0x03, /* Pentium Pro processor */

ippCpuPII = 0x04, /* Pentium II processor */

ippCpuPIII = 0x05, /* Pentium III processor and Pentium III Xeon processor */

ippCpuP4 = 0x06, /* Pentium 4 processor and Intel Xeon processor */

ippCpuP4HT = 0x07, /* Pentium 4 Processor with HT Technology */

ippCpuP4HT2 = 0x08, /* Pentium 4 processor with Streaming SIMD Extensions 3 */

ippCpuCentrino = 0x09, /* Intel Centrino mobile technology */

ippCpuCoreSolo = 0x0a, /* Intel Core Solo processor */

ippCpuCoreDuo = 0x0b, /* Intel Core Duo processor */

ippCpuITP = 0x10, /* Intel Itanium processor */

ippCpuITP2 = 0x11, /* Intel Itanium 2 processor */

ippCpuEM64T = 0x20, /* Intel 64 Instruction Set Architecture (ISA) */

ippCpuC2D = 0x21, /* Intel Core 2 Duo processor */

ippCpuC2Q = 0x22, /* Intel Core 2 Quad processor */

ippCpuPenryn = 0x23, /* Intel Core 2 processor with Intel SSE4.1 */

ippCpuBonnell = 0x24, /* Intel Atom processor */

ippCpuNehalem = 0x25, /* Intel Core i7 processor */

ippCpuNext = 0x26,

ippCpuSSE = 0x40, /* Processor supports Streaming SIMD Extensions instruction set */

ippCpuSSE2 = 0x41, /* Processor supports Streaming SIMD Extensions 2 instruction set */

ippCpuSSE3 = 0x42, /* Processor supports Streaming SIMD Extensions 3 instruction set */

ippCpuSSSE3 = 0x43, /* Processor supports Supplemental Streaming SIMD Extension 3

instruction set */

ippCpuSSE41 = 0x44, /* Processor supports Streaming SIMD Extensions 4.1 instruction set */

ippCpuSSE42 = 0x45, /* Processor supports Streaming SIMD Extensions 4.2 instruction set */

ippCpuAVX = 0x46, /* Processor supports Advanced Vector Extensions instruction set */

ippCpuAES = 0x47, /* Processor supports AES New Instructions */

ippCpuX8664 = 0x60 /* Processor supports 64 bit extension */

} IppCpuType;

Regards,
Igor

0 Kudos
gregorio_chindamo
3,328 Views

Hi Sergey,

yes, I had the possibility to have a list of CPU types and corresponding enumerations.

Unfortunately Ive already deleted the IPP7.0 and I do not remember in which file was it.

Regards,
Gregorio

0 Kudos
gregorio_chindamo
3,328 Views
Hi Sergey,

I had the possibility to look into a file and see the enumeration. Unfortunately I have already deleted the IPP 7.0 and I do not rememember which file was it.

Regards,
Gregorio
0 Kudos
gregorio_chindamo
3,328 Views

Well, I have downloaded the IPP v6.1. But from what I see the various Ipp filtering (FIRMR_Direct etc) are missing.

Is there in Ipp 6.1 any other function which could give me the same result of theIpp 7.0 FIRMR_Direct function?

Thanks.

Gregorio

0 Kudos
igorastakhov
New Contributor II
3,328 Views
Gregorio,

FIRMR_Direct function is just a wrapper for

IPPAPI(IppStatus, ippsFIRMRInitAlloc_32f, (IppsFIRState_32f** pState, const Ipp32f* pTaps, int tapsLen, int upFactor, int upPhase, int downFactor, int downPhase, const Ipp32f* pDlyLine))

IPPAPI(IppStatus, ippsFIR_32f, (const Ipp32f* pSrc, Ipp32f* pDst, int numIters, IppsFIRState_32f* pState))

IPPAPI(IppStatus, ippsFIRFree_32f, (IppsFIRState_32f* pState))

set of functions, anyway FIRMR_Direct is also available in 6.1 - I've just checked

Regards,
Igor

0 Kudos
Reply