opencv and IPP 5.3.3.082

opencv and IPP 5.3.3.082

I am evaluating IPP 5.3.3.082 in conjunction with opencv 1.0. I was using opencv before and I have installed IPP now. Iwrote asmall Cprogram for opencv based on some stuff I saw on the web and I tried to check if IPP is getting loaded but it appears that it is not. The print out shows I am loading the opencv libraries but no IPP libraries. I found out that the problem might be related to a old cxswitcher.cpp that was not updated for 5.3 and I got the new one but it did not make any difference. Here is the code snippet I am using - any ideas?

const char* opencv_info= 0;
const char* plugin_info= 0;
cvGetModuleInfo(0, &opencv_info, &plugin_info);

if (plugin_info != 0 && strstr(plugin_info,"ipp")!=0)
printf("IPP is used plugin_info=%s opencv=%s
", plugin_info, opencv_info);
else
printf("Opencv is used %s
", opencv_info);

How can I resolve my problem?

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

Hello,

this is known issue, please take a look on IPP technical support page for workaround

OpenCV does not detect Intel IPP 5.3

Regards,
Vladimir

Hi Vladmir,

I already tried that workaround. I am using Windows Visual C++ 2003 and I already downloaded the file cxswitcher.cpp (from a windows link) and recompiled the opencv libraries. Unless there is more that, itdid not help. Any other ideas? Thanks

Rohit

Hi Rohit,

this work for other customers. Could you pleasego throughdebugger to see what is the reason in your case?

Regards,
Vladimir

Hello Vladimir
I seem to have a similar problem as rohit.
May I ask you where to debug in the OpenCV Code for the IPP loading stuff?
Thank you

Regards
Andreas

I found the problem, there were simply laying some old OpenCV libs around and I didn't adjust all the paths properly. Sorry for the inconvenience.

But, whatever the reason is, there is no performance improvement.

cvGetModuleInfo reports:
cxcore: 1.0.0, cv: 1.0.0
ippcv-5.3.dll, ippi-5.3.dll, ipps-5.3.dll, ippvm-5.3.dll, ippcc-5.3.dll

I use cvMinMaxLoc, cvThreshold and cvMorphologyEx (Closing).

Is there anything I have to mind? I use VS2005 with the original compiler and linker

Hello mulla7,

I have the same problem : ipp is not detected (I use the fixed cxswitcher.cpp, Path is ok and directories under vs2005 are updated)... How do you exactly do to fix the problem ?

Thanks by advance.

Hi Hunta Kirua
I used the fixed cxswitcher.cpp to recompile OpenCV, but I missed to replace the existing OpenCV DLLs in the windows/system32 folder.
After replacing these DLLs, OpenCV detected the IPP modules.

But unfortunately I got no noticeable speedup...

Regards
Andreas

Thanks Andreas. It's ok now !

Best regards,
Hunta

I'm having the same problems (IPP evaluation 5.3 Update 4 for Intel IA 32. Intel Core 2 Duo processor. Windows XP. IDE: MS Visual Studio .NET 2008 Standard Edition).

I exchanged the cxswitcher.cpp by a newer one (as supposed/proposed in another thread), rebuild the OpenCV library and still the following code indicates, that no IPP support is available:

//find out, if IPP is used
int numOptimizedFuncCalls = cvUseOptimized(1);
char buffer[100];
sprintf(buffer, "numOptimizedFuncCalls = %d", numOptimizedFuncCalls);
OutputDebugString(buffer);
const char* plugin_info = 0;
cvGetModuleInfo(0,0,&plugin_info);
bool ipp_is_used = plugin_info != 0 && strstr(plugin_info,"ipp") != 0;
sprintf(buffer, "is IPP used: %d", ipp_is_used);
OutputDebugString(buffer);

Output:

numOptimizedFuncCalls = 0

is IPP used: 0

In the system32 folder there are no OpenCV libraries. I've got the OpenCV bin directory as well as the IPP bin directory in my PATH system variable.

Debugging of cxcoretest (part of OpenCV build project) told, that in cvUseOptimized the LoadLibrary call doesn't return a valid handle - even for the ippcv-5.3.dll, which is definitely in the IPP bin directory.

Is there any #define/preprocessor definition I have to add in order to get IPP support?

I reinstalled the IPP evaluation version 5.3.4.087 and now debugging cxcoretest project/application of OpenCV shows, that the IPP *5.3.dlls are loaded at runtime correctly.

Nevertheless my other application (which consists of several OpenCV calls like cvConvertScale, cvResize, cvFilter2D, cvErode, cvFindContours etc.) doesn't load IPP dlls.

My project builds a dll, which is embedded in another host application. Is there anything I have to do for using IPP functions instead of simple OpenCV functions in this case (I still want to call the functions using the OpenCV syntax and OpenCV shall internally choose the IPP implementation)?

Ok, the problem was that the host application couldn't find the IPP dlls (although the IPP bin directory is part of my PATH system variable). I had to start the runtime installer in the IPP installation directory IntelIPP5.3.4.087ia32toolsruntimeinstaller, which copies the dlls into the system32 folder. Now my host application uses the IPP dlls and the output of the previously mentioned code snippet is:

numOptimizedFuncCalls = 384

is IPP used: 1

Hope that helps others as well... (though I still don't understand, why the dlls couldn't be found in first place...)

Ah, I've forgotten: my host application had some OpenCV dlls in its directory and after rebuilding OpenCV I had forgotten to replace them - that's why the host exe used the old OpenCV dlls which didn't know anything about the version "5.3"... so no IPP was used...

Quoting - vdudnik

Hello,

this is known issue, please take a look on IPP technical support page for workaround

OpenCV does not detect Intel IPP 5.3

Regards,
Vladimir

hello,
how can i get IPP 5.3.3.082? now i need something about ipp**.dll series. thanks!
Micheal.

I think you just need a regular DLLs from IPP 5.3 package you have. It might be 5.3 update 3 (5.3.3.082) or it might be IPP 5.3 update 4 or it might be IPP 6.0 or whatever.
Vladimir

Leave a Comment

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