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

IPP nuget packages on nuget.org

npross
Beginner
2,183 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
2,148 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


0 Kudos
AbhishekD_Intel
Moderator
2,109 Views

Hi,


Please give us an update on the provided details.


-Abhishek


0 Kudos
npross
Beginner
2,101 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.

 

0 Kudos
AbhishekD_Intel
Moderator
2,091 Views

Hi Norm,


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


-Abhishek


0 Kudos
Gennady_F_Intel
Moderator
2,074 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).



0 Kudos
Gennady_F_Intel
Moderator
2,027 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.


0 Kudos
RodneyThomson
Beginner
1,812 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.

0 Kudos
firelight
Beginner
1,781 Views

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

0 Kudos
Reply