Which dlls to redistribute together with a .NET app?

Which dlls to redistribute together with a .NET app?

I am using MKL for a C# program, via dllimport. I only use its BLAS functionality and want to minimize the number of dependent DLLs that come with BLAS.

How do I select the right DLLs to redistribute together with my C# program?

Thanks.

7 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.
Noah Clemons (Intel)'s picture

Hi, we have created a resource that should completely answer your question and possible follow-ups! Please let me know if anything is unclear from the following article.

http://software.intel.com/en-us/articles/some-more-additional-tips-how-to-call-mkl-from-your-c-code

I followed this article: http://software.intel.com/en-us/articles/using-intel-mkl-in-your-c-program/, and also the article that you provided.

I'm using MKL 10.3, so according to the article, I should use DllImport("mkl_rt")

When I tried dumpbin /references mkl_rt.dll, this is what I get

dumpbin /DEPENDENTS mkl_rt.dll
Microsoft (R) COFF/PE Dumper Version 11.00.51106.1
Copyright (C) Microsoft Corporation. All rights reserved.

Dump of file mkl_rt.dll

File Type: DLL

Image has the following dependencies:

msvcrt.dll
KERNEL32.dll

I don't know much about single dynamic library (which mkl_rt.dll is), but I think that in order to use MKL's BLAS, I need at least the following dlls:

  • mkl_core.dll
  • mkl_blacs_*.dll

Is it the case that dumpbin doesn't work on SDL?

Hi,

 Really, you can’t see MKL dependencies with dumpbin for mkl_rt.dll.

It has been developed to dynamically select the interface and threading layer for Intel MKL.
So different libraries could be linked depending on certain parameters setting – via environment macros or function calls.

I think you’d better build custom dll which includes only required stuff (see documentation and %MKL_ROOT%\mkl\tools\builder).
It allows to minimize the size of MKL redistributables.

Regards,
 Vladimir

 

>>...How do I select the right DLLs to redistribute together with my C# program?

1. You could try to use MS Depends but unfortunately it wont display DLLs loaded at run-time using LoadLibrary or LoadLibraryEx Win32 API functions.

2. You could also start your application under VS Debugger then do some processing and close the application. After that take a look at the Output Window and find all loaded MKL DLLs.

Thanks. Will try your suggestions.

>>>>...take a look at the Output Window and find all loaded MKL DLLs...
>>
>>Thanks. Will try your suggestions.

In case of any problems please post the output from the Output Window for review.

Login to leave a comment.