Intel® oneAPI Data Analytics Library
Community support for building compute-intensive applications that run fast on Intel® architecture.
Announcements
Welcome to the Intel Community. If you get an answer you like, please mark it as an Accepted Solution to help others. Thank you!
204 Discussions

Debug version of DAAL library linked with TBB

Codara__Giorgio
Beginner
996 Views

Hello,

I have downloaded DAAL 2020.1.216 tool for Windows from Intel website and installed it under C:\Program Files (x86)\IntelSWTools.

I have an application that uses DAAL in parallel mode with dynamic link, TBB (version 2020.0.166) for vc14 with dynamic link and that is built with Visual Studio. I manage to correctly build and run my application in release mode, that is I can link my application with daal_core.dll, daal_thread.dll, tbb.dll and tbb_malloc.dll and run it fine. However, I am not able to run my application in debug mode, because DAAL libraries link to release version of tbb/tbbmalloc, and not to tbb_debug.dll/tbbmalloc_debug.dll as expected.

I have looked around into this forum and into Intel DAAL documentation but I can't find any reference to a debug version of DAAL libraries nor any suggestion to how to solve my problem. Using a release version of DAAL and TBB both in release and debug configuration of Visual Studio project isn't a solution, because I use other libraries that links to tbb_debug.dll in debug configuration.

Does a version of DAAL library that uses debug version of TBB exists? If not, is it a specific requirement or just a mistake? How can I solve my problem?

Thanks to everyone.

0 Kudos
14 Replies
JananiC_Intel
Moderator
996 Views

Hi,

Thanks for reaching out.

We need few details to test from our side.Could you provide us the application details and commands used ?

Codara__Giorgio
Beginner
996 Views

Assuming Intel DAAL is installed under "C:\Program Files (x86)\IntelSWTools" just look for pca_svd_dense_batch example project which can be found under "C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2020.1.216\windows\daal\examples\cpp\vcproj\pca_svd_dense_batch\pca_svd_dense_batch.vcxproj".
Open it with Visual Studio and build it for x64 platform with "Debug.dynamic.threaded" configuration.
Copy "daal_core.dll" and "daal_thread.dll" from "C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2020.1.216\windows\redist\intel64_win\daal" to project's debug output dir.
Copy "tbb_debug.dll" and "tbbmalloc_debug.dll" from "C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2020.1.216\windows\redist\intel64_win\tbb\vc_mt" to project's debug output dir.
Now run the project and it should fail loading DAAL libraries, prompting the following message:

Intel DAAL FATAL ERROR: Cannot find/load library daal_sequential.dll.
Intel DAAL FATAL ERROR: Cannot load neither libdaal_thread.dll nor libdaal_sequential.dll.
Intel DAAL FATAL ERROR: Cannot find/load library daal_sequential.dll.
Intel DAAL FATAL ERROR: Cannot load neither libdaal_thread.dll nor libdaal_sequential.dll.

This happens because "daal_thread.dll" has "tbb.dll" and "tbbmalloc.dll" as depencencies (as shown from dependes.exe), but with debug configuration I need to use "tbb_debug.dll" and "tbbmalloc_debug.dll" as I do with other Intel libraries.

JananiC_Intel
Moderator
996 Views

Hi,

Thanks for the update.

Has this issue been resolved?Do you need any help from the expert?

Codara__Giorgio
Beginner
996 Views

Hi,

No it is still open. I'm looking for a version of daal_thread.dll that carries tbb_debug.dll instead of tbb.dll.

If it exists can you provide it? If not, is it in plan for future release?

Thanks

Andrey_G_Intel2
Employee
996 Views

Hello!

could you try to rename tbb_debug.dll/bbmalloc_debug.dll to tbb.dllbbmalloc.dll aftter copying to debug output dir?

Andrey

Codara__Giorgio
Beginner
996 Views

Unfortunately it won't work, because in the same application I have other libraries that has tbb_debug.dll as dependency.

Moreover, carrying both tbb.dll and tbb_debug.dll will lead to undefined behaviors.

Andrey_G_Intel2
Employee
996 Views

Hello!

could you try to rename copy tbb_debug.dll/bbmalloc_debug.dll to tbb.dllbbmalloc.dll after copying to debug output dir?

Andrey

Codara__Giorgio
Beginner
996 Views

Andrey Gilev (Intel) wrote:

could you try to rename copy tbb_debug.dll/bbmalloc_debug.dll to tbb.dllbbmalloc.dll after copying to debug output dir?

Will cause my application to load tbb two times from different files. First my application will load tbb_debug.dll, then daal_thread.dll will load tbb.dll, leading to undefined behaviors.

I need to use only tbb_debug.dll for its debugging features and because I'm in a debug configuration and this should be the expected behavior.

Andrey_G_Intel2
Employee
996 Views

> Will cause my application to load tbb two times from different files. First my application will load tbb_debug.dll, then daal_thread.dll will load tbb.dll, leading to undefined behaviors.

I understand how it works. I can`t understand which undefined behavior do you mean. Yes, you will have two copies of the "same" library in the memory, but you should be able to do debug.

I don`t try to propose it as solution, but as workaround to quickly solve your problem. Actually, DAAL doesn`t provide debug libraries.

Andrey

Vladimir_P_Intel2
996 Views

If I remember correctly visual studio runtime handles a mix of release and debug in proper way if there is no cross boundary memory management. So there might might be oversubscription because of 2 instances of TBB which is not critical for the debug config, but there shouldn't be UB.

cheers,
Vladimir 

Codara__Giorgio
Beginner
996 Views

Hello,

Thanks everyone for answering and for your help, I'll try Andrey workaround for now.

greetings

JananiC_Intel
Moderator
991 Views

Hi,

Has this issue been resolved?Could you give us an update?


Codara__Giorgio
Beginner
982 Views

Hello,

Yes the issue has been resolved, can be closed.

Thanks

JananiC_Intel
Moderator
979 Views

Hi,

Thanks for the confirmation,we are closing the case.


Reply