Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Beginner
5 Views

Building a custom DLL from the command line for an old IPP distribution

Hello,

I am trying to build a custom IPP DLL with the command line tool  ipp_custom_library_tool .

I have    compilers_and_libraries_2018  installed  and I find the custom library  tool in   /opt/intel/ipp/tools/custom_library_tool .

I have created a file with the list of needed symbols and they are recognized by the tool. 

My problem is that we actually link with and use and old  IPP ( composer_xe_2015.7.234 )  but we compile with 2018. The custom_library_tool does not exist (to my knowledge) in that old 2015 distribution and when I use the -c option of custom_library_tool  to point to the old distribution, I get an error:

    Error: Compilers and Libraries files aren't found

If I dont use -c, the tool completes but warns about many not found symbols that exist in 2015.7  but do not anymore in 2018 (ex: ippiErode3x3_32f_C3IR ).

Is it possible to build a custom library from an old IPP distribution ?

Thanks

Gilbert

 

0 Kudos
3 Replies
Highlighted
Beginner
5 Views

 

I thought I would add some more precise details in hope to get some reply.

I created the list of ipp symbols used in my dylib (Mac OS) with:

nm libMylib.dylib |grep 'U _ipp'| sed -E 's/^[ ]+U _(.+)$/\1/' > /tmp/ippFuncs.txt

Then I went to the custom_library_tool :

cd /opt/intel/compilers_and_libraries_2018.1.126/mac/ipp/tools/custom_library_tool

and I tried to create a custom library with:

./ipp_custom_library_tool  -n libMyCustLib -l /tmp/ippFuncs.txt  -o /tmp/ipp_customs/ -intel64  -macos

I got many warnings for missing symbols:

Warning: ippiCrossCorrSame_NormLevel_32f_C1R doesn't match with any Intel(R) IPP function
Warning: ippiCrossCorrSame_NormLevel_32f_C3R doesn't match with any Intel(R) IPP function
Warning: ippiCrossCorrSame_NormLevel_32f_C4R doesn't match with any Intel(R) IPP function
Warning: ippiCrossCorrSame_NormLevel_8u32f_C1R doesn't match with any Intel(R) IPP function
Warning: ippiCrossCorrSame_NormLevel_8u32f_C3R doesn't match with any Intel(R) IPP function
Warning: ippiCrossCorrSame_NormLevel_8u32f_C4R doesn't match with any Intel(R) IPP function
Warning: ippiCrossCorrSame_NormLevel_8u_C1RSfs doesn't match with any Intel(R) IPP function
Warning: ippiCrossCorrSame_NormLevel_8u_C3RSfs doesn't match with any Intel(R) IPP function
Warning: ippiCrossCorrSame_NormLevel_8u_C4RSfs doesn't match with any Intel(R) IPP function
Warning: ippiCrossCorrSame_Norm_32f_C1R doesn't match with any Intel(R) IPP function
Warning: ippiCrossCorrSame_Norm_32f_C3R doesn't match with any Intel(R) IPP function
Warning: ippiCrossCorrSame_Norm_32f_C4R doesn't match with any Intel(R) IPP function
Warning: ippiCrossCorrSame_Norm_8u32f_C1R doesn't match with any Intel(R) IPP function
Warning: ippiCrossCorrSame_Norm_8u32f_C3R doesn't match with any Intel(R) IPP function

This is because my libMylib.dylib is linked against ipp2015.7  but the ipp_custom_library_tool seems to want to use the 2018 IPP libraries to build the custom library.

Any hint on possibly building a custom library for the 2015.7 (or any older IPP libraries) ?

 

0 Kudos
Highlighted
Beginner
5 Views

 

Another question regarding the ipp_custom_library_tool,  will such a custom library contain the symbols for all architectures ?

For example, if my library needs   ippsSet_16s   will I get it for e9, g9, m7, mx, p8, .  So that my custom library can be used to build an application that could run on any architecture ?

 

0 Kudos
Highlighted
Employee
5 Views

These two functions was deprecated in the old release, and not included in the latest pacakge: 
 
Could you use the following new functions to replace the old one? 
ippiCrossCorrSame_NormLevel_32f_C1R   ippiCrossCorrNorm_32f_C1R+algType=ippiROISame|ippiNormCoefficient
ippiCrossCorrSame_Norm_32f_C1R           ippiCrossCorrNorm_32f_C1R+algType=ippiROISame|ippiNorm
 
yes, it is right.  ipp_custom_library_tool build the library for multiple processors, and it will do the runtime dispatch for your code. 
 
Thanks,
Chao
0 Kudos