The message "No symbol file loaded..." is normal and expected for compiler RT and MKL libraries that do not come with separate Release/Debug versions. This message is not a cause for concern. Nor is accessibility of the DLL at issue -- the DLL was loaded and its code was executed and caused an access violation (C0000005 error code).
On the other hand, the access violation in one of these DLLs is the real problem. More specifically, a call to a routine in MKL appears to be passing an integer variable with the value -1 when an address was required.
Look at the Call Stack panel and report what you see there. Examine your code and see if you can pin down the MKL function call that caused the problem, and examine the argument list for correctness (number of arguments, types, values).
If possible, provide a "bug reproducer" example.
I am using:
a) I have installed visual studio# 2017 (see attached picture visual_studio_version_picture.png)
b) I have installed parallel_studio_xe_2020_update4_cluster_edition_setup.exe to use MKL.
c) I am trying to call feast from MKL for eigen solution. I am statically linking with mkl_core.lib (you can see from my attached project).
d) I am using /MTd (muti-threaded Debug) to compile.
e) while linking I get this error "mkl_core.lib(_avx512_jit_destroy.obj) : : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in c_example.obj"
In my experience, this error happens in the DEBUG module. However, I can link with mkl_core_dll.lib (I do not like to do that). It seems to be bug between developer studio 2017 and intel compiler.
Any help is appreciated. Please do not hesitate to contact me for further investigation.
Unfortunately, I tried according to intel MKL Linker Adviser. I have added "mkl_intel_ilp64.lib mkl_intel_thread.lib mkl_core.lib libiomp5md.lib" (only these four libraries are used for linking). The strange thing is that the linking error happens ONLY WHEN I call FEAST routine. It does not happen if I call other LAPACK or BLAS routines. Would you please check if anything I am doing wrong? I have attached the project.
The error happens only when I call FEAST. The error does not happen for other LAPACK or BLAS routines. I am trying 2x2 eigenvalue analysis. The error happens in the debug module. It does not happen in the release module. I have included the exact libraries, that Intel MKL link advisor suggests ( mkl_intel_ilp64.lib mkl_intel_thread.lib mkl_core.lib libiomp5md.lib).
From your post, is seems to me* that you may be passing 4-byte integer arguments to the FEAST solver. If MKL_INT is not redefined, which can be done in one of several ways, it will default to "int", which is 4-byte. Such 4-byte integer arguments are not compatible with the ILP64 versions of the MKL libraries. You should have used the LP64 libraries instead. Or, if you really require 8-byte integers, take the steps needed to make MKL_INT be 8-byte, and use the ILP64 libraries.
If you call other MKL routines, e.g., the BLAS or Lapack routines, and those routines do not take any integer arguments, this mismatch of integer sizes is not an issue for those calls.
* I am replying from a Chromebook, so I cannot open up your project in Visual Studio to check.
P.S. (90 minutes later, back on a Windows PC):
I added two diagnostic print statements, one before and the other after the call to dfeast_scsrgv in your example source code:
printf("size of mkl_int: %d\n",sizeof(MKL_INT)); dfeast_scsrgv(...); printf("FEAST returned info = %d\n",info);
Compiling, linking, and running:
S:\LANG\MKL>icl /Qmkl c_example.cc S:\LANG\MKL>c_example size of mkl_int: 4 FEAST returned info = 0 S:\LANG\MKL>
These findings are in agreement with my conjecture regarding your using ILP64 libraries when LP64 should have been chosen.
Since, I could build only the release executable, here is the outcome.
By the way can I get an example with dfeast_srci. I could not find an example in MKL directory.
Thanks in advance.
size of mkl_int: 8
that's very strange if you are able to build BLAS and LAPACK examples and failed to build the FEAST. There are no differences between all of these examples from a building point of view.
You may try to build the existing FEAST example from mklroot/examples/solvers_eec directory. There you may find out the makefile ready to build. For example, you may take a separate example, e.x - sexample_sparse_c.c, and building the code from the command line.
This issue has been resolved 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.