Intel® oneAPI Threading Building Blocks
Ask questions and share information about adding parallelism to your applications when using this threading library.

TBB Deployment on Windows

nizanh
Beginner
437 Views
Hi,

I am looking for the right method to deploy TBB 2.0 (commercial release, using the vc8 version) on client machines (Windows XP).

To be more specific, I need to know how tbb.dll is linked to CRT (msvcp80.dll and msvcr80.dll). Microsoft CRT has more than one version. Which one was used to build tbb?
Does tbb.dll contain an embedded manifest?
As far as I can tell, tbb doesn't contain an embedded manifest. If so, how am I suppose to deploy tbb on another machine?

Thanks.


0 Kudos
3 Replies
robert-reed
Valued Contributor II
437 Views
Well, you could just copy the DLLs to a directory on the other machine and include that directory in the PATH environmental variable. Admittedlythis methoddoes not have the sophistication of manifests and side-by-side assemblies, used to avoid version conflicts on Windows. Intel Threading Building Blocks is supported on multiple operating systems, which complicates the version naming required for the use of manifests. Instead,TBBlibrary disambiguationrelies on environmental variables like TBB20_INSTALL_DIR to identify a specific version, a method that is portable across operating systems.
0 Kudos
nizanh
Beginner
437 Views
Thanks for the prompt response.

I understand the TBB isn't a side-by-side dll. However CRT dll's are "side-by-side" and therefore must be loaded through manifest. Since tbb.dll doesn't have an embedded manifest, a manifest file (tbb.dll.manifest) must be installed together with tbb.dll describing the CRT dll's version that tbb.dll is linked to.
I can create the manifest file by myself, but I need to know the CRT version the tbb.dll was built with.
0 Kudos
Alexey-Kukanov
Employee
437 Views

I assume that you also use VS 2005 (vc8) to build your EXE or DLL that uses TBB, and also that your modules depend on CRT as well; well, you should have included a TBB header and it most probably included some MSVC headers even you do not use those directly. So as your app uses the same runtime and has the manifest, you should be just fine. We only experienced problems when different runtime versions were used in tbb.dll and an app that uses it, e.g. debug vs release, or vc8 vs vc9. And by the way, having the right manifest file next to tbb.dll did not help usin those cases.

Personally, I think that manifests solve less problems than they create. Well, might be I just do not understand how to use those right, and what value they bring.

One suggestion I have heard for a similar question (but unrelated to TBB) was:justcopy subfolders under "C:Program FilesMicrosoft Visual Studio 8VC edistx86" to the .exe's folder. Of all subfolders there, TBB only needs Microsoft.VC80.CRT. It might not be suitable for you of course...

0 Kudos
Reply