IPP8.0 ippGetNumThreads

IPP8.0 ippGetNumThreads

Portrait de alessandro c.

Dear all,

I've recently passed from IPP7.1 to IPP8.0. I see that my app that I've created with IPP 7.1 doesn' work anymore with ipp 8.0:

the problem is in calling this IPP API:

IppStatus ippGetNumThreads(int*pNumThr); that return the following error IppStsNoOperation

IppStsNoOperation. Indicates that there is no such operation in the static version of the library.

It is very strange because I link IPP Library in dynamic mode

Thank you for your help

9 posts / 0 nouveau(x)
Dernière contribution
Reportez-vous à notre Notice d'optimisation pour plus d'informations sur les choix et l'optimisation des performances dans les produits logiciels Intel.
Portrait de Igor Astakhov (Intel)

Hi Alessandro,

by default IPP is now single threaded as multi-threaded libraries are declared as deprecated - if you've downloaded the default version of the package - it contains only single-threaded version of the static library, the multi-threaded static is a separate dowload.

regards, Igor

Portrait de alessandro c.

Thank you Igor

I've installed this package w_ipp_8.0.0.083.exe

I see there are two versions of IPP Libraryis it the default one? or the multithreaded one?

I see that under  (Installationpath)Intel\Composer XE 2013 SP1.083\ipp\lib\ia32 there are two version of every single lib

for example ippcore.lib and ippcoremt.lib

I suppouse that mt is for multithreaded ... Howvever i try to link IPP in dynamic not static way.

Portrait de Sergey Kostrov

>>...by default IPP is now single threaded as multi-threaded libraries are declared as deprecated - if you've downloaded
>>the default version of the package - it contains only single-threaded version of the static library, the multi-threaded static is
>>a separate dowload.

A removal of multi-threaded functionality was announced some time ago and I understood that multi-threading would be removed completely. What I see now looks like:

- multi-threading is removed from static IPP libraries version 8.x
- multi-threading is Not removed and still available for dynamic ( non static ) IPP libraries version 8.x

It gets confusing and please clarify.

Portrait de Sergey Kostrov

>>...I see that my app that I've created with IPP 7.1 doesn' work anymore with ipp 8.0:
>>
>>the problem is in calling this IPP API:
>>
>>IppStatus ippGetNumThreads(int*pNumThr); that return the following error IppStsNoOperation

If your application uses multi-threading to do IPP related processing then you need to consider ( possibly ) a rollback of IPP library back to 7.x. Or, you could try to mix both versions. However, that mixing approach will create some additional programming overhead for developers and I don't think this is the best way to proceed.

In overall, there is some issue with your approach: you've moved to a new version of IPP library without R&D, Testing, Verification and Validation phases (!) for your software. Please don't blame IPP team in that case.

Portrait de alessandro c.

Dear all,

maybe I've explained my problem in a bad way.

My application links IPP DLL  version 7.1 dinamically. Now I try to upgrade IPP to version 8.0,  of course I'm at the first step just try to compile my application and see if it works before Testing and Verification so i've nothing to blame to IPP team.

However I see that IppGetNumThreads doesn't work anymore neither if i link ipp in a dynamic mode. Is this correct?

Portrait de Sergey Kostrov

>>...IppStatus ippGetNumThreads(int*pNumThr); that return the following error IppStsNoOperation...

This is what I found in headers:
...
ippStsNoOperation = 1, /* No operation has been executed. */
...
ippStsNoOperation - processed area is disappeared, no operation
...
ippStsNoOperationInDll - function does nothing in the dynamic version of the library
...

The function doesn't do anything according to the error code returned.

Portrait de Sergey Kostrov

>>>>...IppStatus ippGetNumThreads(int*pNumThr); that return the following error IppStsNoOperation...
>>
>>...
>>The function doesn't do anything according to the error code returned.

You could also step into the code of that function under Debugger to verify that the function does nothing.

Portrait de Igor Astakhov (Intel)

Alessandro,

how did you get 8.0 dlls? For 8.0 install the thin client is used - by default only single-threaded libraries are "checked" (it's true both for static and dynamic - single-threaded dynamic libs are new feature for 8.0) - so to install multi-threaded libraries you should check the corresponding check-box - in this case threaded libraries will be installed in same place with the same names under "threaded" folder. "mt" suffix doesn't mean "multi-threaded" - it has the same meaning as for MS libraries - thread-safe, so can be used in mt environment.

regards, Igor

Connectez-vous pour laisser un commentaire.