Are there any known issues with Win81 running on a virtual (Win81) machine (Hyper V), and MKL (pardiso specifically) ?
I get the following message when executing pardiso:
Intel MKL INTERNAL ERROR: Not enough work memory in function xgemm
And, it seems this does not cause pardiso to return with an error code.
I have increased the available memory on the machine well beyond the amount that the application seems to require on the system monitor when run on an actual machine.
As a performance oriented library, MKL is typically not to be used in a virtualized environment. As far as I know, it's not been tested/validated on any virtual machines. Are there any particular reason you need to use MKL on virtual machines?
MKL prints the above mentioned message (Intel MKL INTERNAL ERROR: Not enough work memory in function xgemm) when it cannot find memory for temporary buffers used in computations. This does not always mean that the computation is wrong. In most cases, we have fall-back code paths that would still return the correct results but at a much lower performance. I suspect this might be the case for you.
There has been a change in this behavior starting from MKL 11.2.2. Starting from this release, MKL does not print an error message on the screen when memory allocation fails and computations are correct. It does not print any warning message neither, but we are planning to do this when MKL_VERBOSE mode is turned ON in the near future.
The comments in #4 suggest that the context of the run, i.e., a virtual machine, may have little bearing on the error message and that, in fact, the same code run on a native Windows installation would generate the same message. Jens, can you post a small example source code to enable the error to be reproduced?
Thanks all for replies, here are some follow-up comments
Re #3: I only need to run it in a virtualized environment in order to test the application on different platforms. I get this message on only one of many tests. The only distinguishing thing about this particular test is that it requires significant memory (about 1GB when I run it on my own physical computer).
Re #4, #5: I checked the same test when run on a physical computer, and there is no error message then. Also, as I mentioned in #2 an exception is thrown (std::bad_alloc) on the virtual machine, so it is a real error.
#5: Unfortunately it is difficult to debug this example, and also difficult to come up with a minimum failing example. I use pardiso as part of a large finite element application, and the error shows up only for this larger large model, and only in win81 on a virtual machine ...
Have you configured your virtual machine to provide enough memory for running your program? I have used Vmware and Xen, but not Hyperv, so I do not know about its parameters.