Intel® Integrated Performance Primitives
Community support and discussions relating to developing high-performance vision, signal, security, and storage applications.

IPP nuget packages on nuget.org

npross
Beginner
989 Views

Hi, I was hoping to use the nuget packages that are posted to nuget.org but I have run into a number of basic issues that I just can't believe haven't been experienced by others.  According to nuget.org I am not the only one who has downloaded these packages...

I am having linker errors.  It seems like the targets files are incorrectly authored and there appear to be missing files too...

Steps to reproduce:
create a brand new project and new solution (console exe) in VS2017.  

in the nuget package manager console:
"Install-Package intelipp.devel.win-x64 -Version 2021.1.1.47"

in the configuration manager for both x64 Debug and Release select Dynamic linking and Sequential Threading for the intelipp.devel/win-x64/General settings

Then compile.

Error LNK1181 cannot open input file 'tbb12.lib' IntelIPPTest 


So I did some investigation:

inteltbb.devel.win.targets is in:

packages\inteltbb.devel.win.2021.1.1.133\build\native\nuget\inteltbb.devel.win.targets

<AdditionalLibraryDirectories>$(MSBuildThisFileDirectory)..\..\lib\native\win-x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>

tbb12.lib is in:

packages\inteltbb.devel.win.2021.1.1.133\lib\native\win-x64

So I think that should be ..\..\..\lib not ..\..\lib or looking in an earlier versions (2019.3.235) of the nuget package the targets file was in build\native not build\native\nuget

After fixing that:

Error LNK1181 cannot open input file 'tbbproxy.lib' IntelIPPTest

tbbproxy.lib is not in the inteltbb.devel.win.2021.1.1.133 package

Yet is referenced here:

<AdditionalDependencies>tbb12.lib;tbbmalloc.lib;tbbmalloc_proxy.lib;tbbproxy.lib;%(AdditionalDependencies)</AdditionalDependencies>

It is in the 2019.3.235 package

And finally:

Also if you try changing Threading Layer from Sequential to TBB or OpenMP you get:

Error LNK1104 cannot open file 'ippcore_tl.lib' IntelIPPTest 

<ItemDefinitionGroup Condition="'$(linkage-IPP-devel-win-x64)' != '' And '$(threading-IPP-devel-win-x64)' == 'tbb'">
<Link>
<AdditionalLibraryDirectories>$(MSBuildThisFileDirectory)..\..\lib\native\win-x64\tbb;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>

The path is lib\native\win-x64\tbb, but in the nuget package the libs are in:
lib\native\win-x64\tl\tbb (Note the additional tl subdirectory)

Going back in time this never seems to have been correct. (at least back to 2019).  The 2019 versions do not have the nuget subdirectory for the target files.

0 Kudos
8 Replies
AbhishekD_Intel
Moderator
954 Views

Hi Norm,


Thanks for reaching out to us.

The Intel IPP library has a dependency on Intel OpenMP, Intel TBB packages, and the devel packages on Windows also have a dependency on the runtime redist packages. So please try a clean installation of all the dependencies before the installation of intelipp.devel.win-x64 package.


You may also try to download and install the Intel Integrated Performance Primitives from the official site.

https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/ipp.html



Warm Regards,

Abhishek


AbhishekD_Intel
Moderator
915 Views

Hi,


Please give us an update on the provided details.


-Abhishek


npross
Beginner
907 Views

@AbhishekD_Intel   intelipp.devel.win-x64 package does indeed depend on TBB and OpenMP but these get installed when you install IPP so I'm not sure that is the problem. Just to prove it I installed them separately before installing IPP and the result is exactly the same.  The packages.config contain exactly the same packages:

<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="intelipp.devel.win-x64" version="2021.1.1.47" targetFramework="native" />
<package id="intelipp.redist.win-x64" version="2021.1.1.47" targetFramework="native" />
<package id="intelopenmp.devel.win" version="2021.1.2.265" targetFramework="native" />
<package id="intelopenmp.redist.win" version="2021.1.2.265" targetFramework="native" />
<package id="inteltbb.devel.win" version="2021.1.1.133" targetFramework="native" />
<package id="inteltbb.redist.win" version="2021.1.1.133" targetFramework="native" />
</packages>

Installing the OneAPI from the developer site is fine for developing on a single machine but does nothing for Continuous Integration that is what package management and nuget packages are all about.  Manually going around and installing OneAPI on every machine that needs it would then require implementing some sort of auto-deployment... which is exactly what the nuget package is all about.

 

I just can't believe I am the only one with this problem.  I'm no expert on nuget packages but if you look at my initial post I really believe that there are errors in how they are authored.

 

It is trivial to reproduce:
just make a new console app in visual studio, add the nuget package and set the configuration to Dynamic link and it will not build.

 

AbhishekD_Intel
Moderator
897 Views

Hi Norm,


Thanks for all the details, we will try to reproduce it and will get back to you with the updates.


-Abhishek


Gennady_F_Intel
Moderator
880 Views

Might the cause of the problem is that the names of the tbb libs were changed since the latest version of IPP 2021 compares with the previous (2020) one.

For example,

Static ippcore lib renaming scheme:

 

IPP 2021 - ippcore_tl_tbb.lib

IPP 2020 - ippcore_tl.lib

Dynamic version:

IPP 2021 - ippcore_tl_tbb.dll

IPP 2020 - ippcore_tl.dll

A similar renaming happened regarding others lib/dll : ippcc_tl_tbb.dll and ippi_tl_tbb.dll ( color conversion and image processing correspondingly).



Gennady_F_Intel
Moderator
833 Views

There is no feedaback. The issue is closing and we will no longer respond to this thread. If you require additional assistance from Intel, please start a new thread. Any further interaction in this thread will be considered community only.


RodneyThomson
Beginner
618 Views

I encountered the exact same issues as @npross when attempting to compile and link using the intelipp.devel.win-x64 2021.4 NuGet package. The package is faulty and is yet to be fixed for release 2021.4.

Additionally, I don't understand why it would be attempting to link against tbbproxy.lib when 'Sequential' is selected as the Threading Layer.

I had no issues with static linking using intelipp.static.win-x64.

firelight
Beginner
587 Views

Ty @npross for posting this solution. I also encountered broken paths while trying to install tbb through nuget.

Reply