What happens if MKL cannot allocate space for internal buffers.
In case of memory allocation problems for internal buffers, MKL reports this- via XERBLA function call (for some components like BLAS, LAPACK, etc.)- or by returning corresponding error if return code is supported for a MKL function
Does that mean if it runs out of space the result is invalid. Or does it compute the result by a simpler method requiring no extra space?
If MKL functioncalls XERBLA or retuns error code on user levelthen calculations are aborted and function result is invalid. However, in some cases MKL functions can or coulduse different implementations depending on available resources.
Let me be more precise. Assuming all the arguments to dgemm are correct. Is there then any way it can fails?
[For instance due to lack of buffer space.]
So if you call say dgemm from multiple threads threads you will not know in which thread it failed? Right?
Wouldn't MKL call the error function from the thread that failed, and you could check which thread it was by calling GetCurrentThreadID()?
Standard XERBLA will not provide such info.However, you can redefine it with your own XERBLA and see thread-id