Error while loading IppSP libraries

Error while loading IppSP libraries

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

16 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

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

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

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

>>...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

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

I already used Dependency Walker to look for missing libs, but everything seems to be there.

Thanks.

Regards,
Gregorio

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

Thanks for the support Igor.

Do you know where I can download it from?

Thanks.

Regards,
Gregorio

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

Quoting gregorio.chindamo
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

Regards, Sergey

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

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

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

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

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

Leave a Comment

Please sign in to add a comment. Not a member? Join today