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

IPP 7.1 with OpenCV 1.1

Andrew_L_3
Beginner
527 Views

Is IPP 7.1 compatiable with  OpenCV 1.1? I am having trouble getting sample OpenCV 1.1 code to autodetect IPP 7.1 DLL's at runtime. Note this  is cross posted on StackOverflow.

I have IPP 7.1 via Intel Composer XE 2013 on 64 bit Windows 7 with OpenCV 1.1 installed.I have followed Intel's instructions which seem to suggestthat I must first modify OpenCV's cxswitcher.c  I have changed three lines in  cxswitcher.c from:

[cpp]

static const char* ipp_sfx_ia32[] = { "-6.1", "-6.0", "-5.3", "-5.2", "-5.1", "", 0 };

static const char* ipp_sfx_ia64[] = { "64-6.1", "64-6.0", "64-5.3", "64-5.2", "64-5.1", "64", 0 };

static const char* ipp_sfx_em64t[] = { "em64t-6.1", "em64t-6.0", "em64t-5.3", "em64t-5.2", "em64t-5.1", "em64t", 0 };

[/cpp]

to include strings with "7.1" as best as I could match the pattern:

[cpp]

static const char* ipp_sfx_ia32[] = { "-7.1", "-6.1", "-6.0", "-5.3", "-5.2", "-5.1", "", 0 };

static const char* ipp_sfx_ia64[] = {"64-7.1", "64-6.1", "64-6.0", "64-5.3", "64-5.2", "64-5.1", "64", 0 };

static const char* ipp_sfx_em64t[] = { "em64t-7.1","em64t-6.1", "em64t-6.0", "em64t-5.3", "em64t-5.2", "em64t-5.1", "em64t", 0 };

[/cpp]

However, if I recompile and run the sample OpenCV code containing cvGetModuleInfo() mentioned in the above intel documentation, the code does not load any IPP modules.

I do not believe the paths are the issue because the included IPP demos find the DLL's no problem (whereas they didn't at first when I hadn't setup the paths). 

Note also that I need to use OpenCV 1.1 and not the newer 2.x because my goal is to run some legacy OpenCV 1.1 code that originally utilized Intel's IPP 6.1.

Any advise on what I should try next from here? Thank you very much.

0 Kudos
5 Replies
Chuck_De_Sylva
Beginner
527 Views

Andrew,

Are you using Visual Studio? If so, did you launch it from a 64 bit command prompt after calling ippvars_intel64.bat (located in the ipp\bin\intel64 folder)? In other words, the ipp environment is setup correctly, right?

- Chuck

0 Kudos
SergeyKostrov
Valued Contributor II
527 Views
Andrew, I understand that you need to use OpenCV v1.1. However, it is a very old library ( version 1.1 was released in January 2001 ) and you need to rebuild / refactor it. Since lots of things changed during last 12 years you should expect lots of challenges and problems. You also need to verify if IPL library is used and search for a string: ... #pragma comment( lib, "ipl" ) ... If you find it than your situation is even more complex because IPL is a predecessor of IPP. Note: IPL stands for Image Processing Library
0 Kudos
Andrew_L_3
Beginner
527 Views

Hi Chuck and Sergey,

Thank you both for your replies. I am actually compiling my code with mingw32 because historically I know that toolkit the best and now I have a large makefile that I hesitate to translate into Visual Studio.

I do realize that OpenCV v1.1 is extremely outdated. However, I wrote the code a few years back  to control a scientific instrument I made and the instrument works fine, so I have been reluctant to rewrite the code.

However, I did reach a very satisfactory conclusion. I found that one can still download older versions of the Intel Performance Primitives online, so for example IPP v 6.1 32bit is available here: http://registrationcenter-download.intel.com/akdlm/irc_nas/1525/w_ipp_ia32_p_6.1.1.035.exe

Moreover, I discovered that my new license for IPP 7.1 also works for IPP v6.1. And so by installing IPP v6.1 my code now works. I suspect I am losing a lot of potential performance improvements by using old 32 bit IPP code on a 64 bit Windows machine with a brand new Xeon processsor, however for now I think it will have to do. My benchmark is my old system running 32 bit Windows on an old XP machine with an older processor and I suspect on the whole the new system will have at least as good performance if not better.

Thank you for your help.

Best,

Andy

0 Kudos
SergeyKostrov
Valued Contributor II
527 Views
>>...I suspect I am losing a lot of potential performance improvements by using old 32 bit IPP code on a 64 bit Windows machine >>with a brand new Xeon processsor... I really like older IPP libraries and it is hard to tell without any performance numbers if there is some disadvantage. Also, take into account that if you're Not allocating more than 2GB of memory on a 32-bit platform your application with older IPP libraries could work for you and scientific community for many-many years.
0 Kudos
Andrew_L_3
Beginner
527 Views

That's encouraging. Thank you very much for your help.

0 Kudos
Reply