Intel® Integrated Performance Primitives
Community support and discussions relating to developing high-performance vision, signal, security, and storage applications.
Announcements
This community is designed for sharing of public information. Please do not share Intel or third-party confidential information here.
6629 Discussions

Building IPP dependent code with PGOPTI instrumentation

Hugo_P_
Beginner
131 Views

Hello,

I'm trying to build some code I've "inherited", that depends on IPP, with PGOPTI instrumentation for code coverage.

While doing so I'm running into linking issues such as:

/home/src/sdk/intel/IPP/lib/linux64/libippi.a(pimorphologyca_y8---ippiDilate_8u_C1R.o): In function `y8_ippiDilate_8u_C1R':

pimorphologyca_y8---ippiDilate_8u_C1R.i:(.text+0x15c): undefined reference to `y8_ippsMalloc_64s'
pimorphologyca_y8---ippiDilate_8u_C1R.i:(.text+0x2c3): undefined reference to `y8_ippsFree'

My guess is that the disabling of automatic CPU specialization is interfering with CPU dispatching in IPP libraries, but I've been unable to work around this.

Is this not possible to do and do I need to explicitly disable instrumentation on the components that link with IPP libraries?

Could anyone provide some assistance?

Thanks,

Hugo

0 Kudos
3 Replies
Sergey_K_Intel
Employee
131 Views

Hi Hugo,

Is your command line for linker correct? I mean, does it contain all required IPP libraries? In other words, is linking without PGOPTI ok?

Regards,

Sergey

Ying_H_Intel
Employee
131 Views

Right,  ippiDilate may depend on ippi.a ipps.a [ippvm.a] ippcore.a (in order).

Best Regards,

Ying

Hugo_P_
Beginner
131 Views

Hello Sergey,

Yes, I forgot to mention, but linking without PGOPTI is fine.

Hi Ying,

The linker command doesn't depend on PGOPTI instrumentation and includes the mentioned static libraries. Explicitly these and in this order:

-lippcc -lippvc -lippi -lipps -lippvm -lippcore

Interestingly though, later on the linker command, some of these libraries appear again, like this:

-lippvc -lippi

Note, no reference to ipps or ippcore at that point.

I found this strange. It looks like another library that is in the component's CMakeLists.txt list of target_link_libraries has ippvc and ippi as dependencies. Adding ipps and ippcore to that solves the linking issue.

Why it linked fine without PGOPTI I don't know.

Thanks,

Hugo

Reply