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

Compilation and Link issues with old/legacy IPP

Pankaj_C_
Beginner
592 Views

Hi All,

I am looking to build an old openCV application (link of application here). This application uses, opencv 2.3.1 and old IPP. I downloaded intel legacy libs to compile build. I am able to compile, it using ipp90legacy_win, which I downloaded from intel website. 

I am getting quite a few unresolved symbols. 

_ippiSum_8u_C1R@20 referenced in function "public: double __thiscall Matrix<float>::Sum(unsigned int)const " (?Sum@?$Matrix@M@@QBENI@Z) _ippiMax_32f_C1R@20 referenced in function "public: float __thiscall Matrix<float>::Max(unsigned int)const " (?Max@?$Matrix@M@@QBEMI@Z)      

I'm making sure that I include and link each .lib from ipp90legacy_win on my preprocessor and linker path. Could someone please point to the library to which these functions belong ? Just want to make sure that I am not missing a specific library on my local paths/machine.

Thanks in advance.

 

Thanks in advance.

 

 

0 Kudos
6 Replies
Zhen_Z_Intel
Employee
592 Views

Dear customer,

The IPP legacy package is intend to contain deprecated domains which are not part of the Intel IPP release, such as Small Matrix Operations (ippMX), Speech codecs (ippSC). For function ippisum & ippimax should belong to the ippi(Image processing) domain which is contained in IPP release. I am afraid you have to download the IPP release package if you you would like to build with IPP. Here's the document about the ippisum function, you could have a quick view to know its reference & dependencies. Hope this information wuld be useful to you.

Best regards,
Fiona

0 Kudos
Jing_Xu
Employee
592 Views

Hi Pankaj,

Did you just download and link against the IPP 9 Legacy?

As refered to "Download and Installation" section of the article about IPP Legacy Lib (https://software.intel.com/en-us/articles/intel-ipp-legacy-libraries), Intel® IPP IPP Legacy Libraries need to be used with Intel IPP 9.0 and Intel IPP 2017 main package.

Probably the issue was caused by lacking libs of main package, where ippisum and ippimax belong to. You may would like to try to install the main package, and test again.

UPDATE:

Since OpenCV 3.0 , IPP-ICV is integrated to OpenCV library by default.  User don’t need to install or build Intel® IPP package into OpenCV.  Check this page on Intel IPP-ICV package for opencv 3.0: http://code.opencv.org/projects/opencv/wiki/Opencv3

Reference:

https://software.intel.com/en-us/articles/intel-ipp-legacy-libraries

0 Kudos
Pankaj_C_
Beginner
592 Views

Hi Fiona and Jing ,

Thanks to both of you for your timely help. Yes, issue is that I assumed the IPP legacy would provide all functions. As you said, I need IPP 9.0, to get these the functions that I am missing. I am able to compile/build now.

Thanks,

 

0 Kudos
Chao_Y_Intel
Moderator
592 Views

Pankaj,

Possibly you can check the IPP 2017 release, which is a newer version with new optimization.  Intel IPP legacy libraries was released with IPP 9.0 release, but it can be used with later IPP version as well. 

Thanks,
Chao

 

0 Kudos
Pankaj_C_
Beginner
592 Views

Hi Chao,

I am trying to build OpenCV 3.1.0 with its inbuilt IPP. My command is, cmake -D WITH_IPP=ON ..

This gives quite a few errors. Any idea, whether we can build openCV with IPP or not ?

 

Thanks

pankaj

 

-- Checking for module 'gtk+-3.0'
--   Found gtk+-3.0, version 3.18.9
-- Checking for module 'gstreamer-base-1.0'
--   Found gstreamer-base-1.0, version 1.8.2
-- Checking for module 'gstreamer-video-1.0'
--   No package 'gstreamer-video-1.0' found
-- Checking for module 'gstreamer-app-1.0'
--   No package 'gstreamer-app-1.0' found
-- Checking for module 'gstreamer-riff-1.0'
--   No package 'gstreamer-riff-1.0' found

 

0 Kudos
Jing_Xu
Employee
592 Views

1. You don't have to use the WITH_IPP switch. You may use the following command to compile OpenCV.

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

By default, IPP in "3rdparty" directory will be compiled into final libraries. Please refer to this page (http://docs.opencv.org/2.4/doc/tutorials/introduction/linux_install/linux_install.html#linux-installation) for further information.

2. The following warning messages you attached are actually not error messages. They just indicates whether these packages are found or not in your computer. gstreamer* are third-party libraries for video encoding/decoding, not related to IPP. Lacking these packages won't interfere the compilation of OpenCV.

-- Checking for module 'gtk+-3.0'
--   Found gtk+-3.0, version 3.18.9
-- Checking for module 'gstreamer-base-1.0'
--   Found gstreamer-base-1.0, version 1.8.2
-- Checking for module 'gstreamer-video-1.0'
--   No package 'gstreamer-video-1.0' found
-- Checking for module 'gstreamer-app-1.0'
--   No package 'gstreamer-app-1.0' found
-- Checking for module 'gstreamer-riff-1.0'
--   No package 'gstreamer-riff-1.0' found

3. Please refer to the following article for further information about compiling OpenCV with IPP package (not the one in the "3rdparty" directory).

https://software.intel.com/en-us/articles/enabling-ipp-on-opencv-windows-and-linux-ubintu

 

0 Kudos
Reply