Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
22 Views

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

0 Kudos
15 Replies
Highlighted
New Contributor II
22 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
Highlighted
22 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
Highlighted
New Contributor II
22 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
Highlighted
Valued Contributor II
22 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
Highlighted
22 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
Highlighted
22 Views

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

Thanks.

Regards,
Gregorio
0 Kudos
Highlighted
New Contributor II
22 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
Highlighted
22 Views

Thanks for the support Igor.

Do you know where I can download it from?

Thanks.


Regards,
Gregorio
0 Kudos
Highlighted
Valued Contributor II
22 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
Highlighted
Employee
22 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
Highlighted
New Contributor II
22 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
Highlighted
22 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
Highlighted
22 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
Highlighted
22 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
Highlighted
New Contributor II
22 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