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

Some issues about IPP 8.0.1

Richard_H_6
Beginner
604 Views

Hi,

I had a try to upgrade IPP version from IPP 7.1 to 8.0.1. Two issues were found.
1) According to http://software.intel.com/en-us/forums/topic/391419, new function ippsDFTInit_C_32f was added in IPP 8.0. That's good. However, there's still no function ippsDFTGetSize_C_32f available. Even I find it seems to work by using ippsDFTGetSize_C_32fc instead. However, that's not ideal from my understanding.
2) The redistribute library names are changed. In previous version, the library names are like libippac_l.a, libipps_l.a and libippcore_l.a. However, they are changed to libippac.a, libipps.a and libippcore.a. Since the library name are fixed in Makefile, it doesn't work if we don't add a symbolic link to them. Why did that happen? Is it possible to fix it in future release?

Thanks,
Richard

 

0 Kudos
1 Solution
Pavel_B_Intel
Employee
604 Views

Hi Richard,

regarding your question about libraries name: in IPP 8.0 we use native OS libraries name conventions for each OS. I understand that you should change your Makefile, but this fact has good side - you can easily switch between static and shared libraries. We will not support old IPP name convention because we had a lot of claims from our customers about usability.

Please change your Makefile once and I hope you will happy.

Thanks, Pavel

View solution in original post

0 Kudos
8 Replies
Pavel_B_Intel
Employee
605 Views

Hi Richard,

regarding your question about libraries name: in IPP 8.0 we use native OS libraries name conventions for each OS. I understand that you should change your Makefile, but this fact has good side - you can easily switch between static and shared libraries. We will not support old IPP name convention because we had a lot of claims from our customers about usability.

Please change your Makefile once and I hope you will happy.

Thanks, Pavel

0 Kudos
Alexey_Tyndyuk
Beginner
604 Views

Hi Richard,

 

Could you specify the version of IPP you are using?

Both ippsDFTInit_C_32f and ippsDFTGetSize_C_32f functions were added in IPP 8.0.1.

 

Thanks,

Alexey

0 Kudos
Richard_H_6
Beginner
604 Views

Hi Pavel,
It's fine to change the Makefile for me. I just want to confirm whether there's any issue here by using different IPP versions.
If I change the Makefile to "-lippac -lipps -lippcore", for old IPPs, IIRC, it's symbolic linked to multiple thread version, right?
For IPP 8.0, it's single thread, right? Do you see any issues here? You know we can't say we only support IPP 8.0 at the moment.

Thanks,
Richard

0 Kudos
Richard_H_6
Beginner
604 Views

Hi Pavel,

It's fine to change the Makefile for me. I just want to confirm whether there's any issue here by using different IPP versions.
If I change the Makefile to "-lippac -lipps -lippcore", for old IPPs, IIRC, it's symbolic linked to multiple thread version, right?
For IPP 8.0, it's single thread, right? Do you see any issues here? You know we can't say we only support IPP 8.0 at the moment.

Thanks,
Richard

0 Kudos
Pavel_B_Intel
Employee
604 Views

Hi Richard,

yes, it makes sense. I will think about it.

Thank you, Pavel

0 Kudos
Pavel_B_Intel
Employee
604 Views

Hi Richard,

Thank you, I will think about it.

Pavel

0 Kudos
Richard_H_6
Beginner
604 Views

Hi Pavel,

Are there any updates regarding this issue? I gave a description on this topic below. I'm not sure whether you can give some suggestions about it.

========================================================

We only used single thread static libraries in our products. It seems there’s no impact to us. However, after this deprecation process, the library names have been changed. Let me give some details as below.

IPP 7.0
Static libraries:
libippac.a : Symbolic link to libippac_t.a
libippac_l.a: Single-thread
libippac_t.a: Multi-thread

IPP 7.1
Static libraries:
libippac_l.a: Single-thread, and it’s the only one in 7.1.

IPP 8.0:
Static libraries:
libippac.a: Single-thread, and it’s the only one in 7.1.

For shared libraries, it’s always libippac.so for all the above versions. In addition, the changes to libipps_l.a and libippcore_l.a are similar.

In our current Makefile, we are always using “-lippac_l -lipps_l -lippcore_l”. That means it works for IPP 7.0 and 7.1 but doesn’t work for IPP 8.0.
According to the suggestion from Intel in http://software.intel.com/en-us/forums/topic/494660, we may need to change the link option to "-lippac -lipps –lippcore”. That means its behaviour is quite different between different IPP versions.
•    7.0: Static link to Multi-thread IPP; Dynamic link works.
•    7.1: Static doesn’t work since there’s no libippac.a. Dynamic link works.
•    8.0: Static link to Single-thread IPP; Dynamic link works.
The IPP on Windows may have similar issues. 

=========================================================

Thanks,

Richard

0 Kudos
Pavel_B_Intel1
Employee
604 Views

Hi Richard,

sorry for the delay, I had some problems with my account. In IPP 7.1 and IPP 8.0 multi-threaded libraries are deprecated. If you need them you should download a separate package and install it.

Regarding your question "how to link static and/or shared libraries": you can use "-static" option of LD. In this case if you point "-static" LD will link static libraries, if you don't use this option - linker will try to use share libraries in the first priority and only after that static libraries if the linker can't find shared libraries. It is Linux native linker behaviour.

From my point of view if you would like to link static libraries much better use full path and names and use -l{libname} for shared libraries only. For example link with static libraries:

gcc -o testapp $IPPROOT/lib/ia32/libippi.a $IPPROOT/lib/ia32/libipps.a $IPPROOT/lib/ia32/libippcore.a

Link with shared libraries:

gcc -o testapp -L$IPPROOT/lib/ia32 -lippi -lipps -lippcore

Pavel

0 Kudos
Reply