- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
This is a somewhat newbee question. In the development of one of my programs, I am using MKL PARDISO. Now, here is the question(s):
I am unsure what is the proper way to set the MKL dependencies in my Visual Studio solution/project. On the one hand I have the Qmkl compiler flag, which seems to be enough on its own for my code to work (Qmkl:parallel) - but is it too much? And on the other hand, we have tools such as Link Line Advisor, that gives the few requested MKL libs to be explicitly specified in the project linker properties. So, which one should be used? What's the difference? Could Qmkl add more than strictly necessary (if there could be a difference at all).
Thank you.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
In general, it is better to enable the compiler option -Qmkl in Project B as it is only using the subroutine in Project A. If we enable the /Qmkl option in Project A then by default it will include all the libraries that are needed to run any MKL code which will lead to an increase in memory.
As mentioned by you Project A needs to be present in other projects such as Project C to Project Z which don't have any MKL code then it won't be necessary for other projects rather than an increase in the memory size.
Could you please provide us with your complete use case so that we could investigate more?
Thanks & Regards,
Varsha
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Stephane,
Thanks for posting in Intel Communities.
While running your MKL code using Microsoft Visual Studio, if you are enabling the Intel MKL by selecting Sequential/Parallel/Cluster then it will use the same options and libraries that are been mentioned in the Intel Link Line Advisor.
If you want to compile MKL code quickly, then you can use the option /Qmkl it will include all the libraries and paths same as Link Line Advisor but this option can be used only with the Intel compilers. For more details, please refer to the below link:
If you are using Intel Link Line Advisor, then you can see different fields and it can be used for different compilers(like gnu, intel) and also it is compatible with several compilers and third-party libraries, and provides different interfaces to the functionality. For more details, please find the below link:
There is no difference if you are using Intel Link Line Advisor or the /Qmkl option. Please find the below screenshot where we have enabled the /Qmkl option in Visual Studio and still the libraries and compiler options used are the same.
Could you please let us know if you have any other queries?
Thanks & Regards,
Varsha
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
thank you very much for your reply. I do have more questions actually. Here goes:
Let's say I have projects B to Z which all have project A (which produces a .lib) in their Visual Studio solution. So for instance, Solution B would be:
B.sln
|______A.vfproj
|______B.vfproj
Where B produces an exe (B to Z can be a mix of exes and DLLs). Now, let's assume B is the only project to use a subroutine in A. That subroutine relies on some Intel MKL function.
Now, should project A tell the compiler to (statically) link to certain libraries in MKL through the Qmkl compiler flag[1], or is it better to left it to "No" and have project B set its flag to either "parallel" or "sequential" instead? What will be the impact, if any, on projects C to Z if Qmkl is set in A? Will A increase in size, a few MB more (apparently up to 15MB), and C to Z as well in turn, even though they use nothing in MKL?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
In general, it is better to enable the compiler option -Qmkl in Project B as it is only using the subroutine in Project A. If we enable the /Qmkl option in Project A then by default it will include all the libraries that are needed to run any MKL code which will lead to an increase in memory.
As mentioned by you Project A needs to be present in other projects such as Project C to Project Z which don't have any MKL code then it won't be necessary for other projects rather than an increase in the memory size.
Could you please provide us with your complete use case so that we could investigate more?
Thanks & Regards,
Varsha
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Stephane,
Glad to know that your issue is resolved. Thanks for accepting our solution. If you need any other information, please start a new thread as this thread will no longer be monitored by Intel.
Thanks & Regards,
Varsha

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page