Using MKL has no effect

Jan 7, 2014 at 8:29 PM
I can't get the native provider to work (I don't see any performance improvement)

Is there a way to tell that it's being used, other than the performance improvement?

Code is as follow:

mRef is a Matrix<double>
vDet is a Vector<double>
Control.LinearAlgebraProvider = new MklLinearAlgebraProvider();
            
var mRefT = mRef.Transpose();  // reference matrix transposed
var dV = mRefT * vDet;
var A = mRefT * mRef;
var pV = A.LU().Solve(dV);
Using version 2.4.0.26 of MathNet.Numerics

Thanks!
Jan 7, 2014 at 8:57 PM
A bit more info:

I know for a fact that if the libiomp5md.dll and MathNet.Numerics.MKL.dll file aren't included, an exception is raised.

dV is typically 500 elements long.
mRef can vary from a 1x500 to 6x500

The "500" can go up to 1000-1500, technically more, but it's uncommon.
Coordinator
Jan 7, 2014 at 9:48 PM
Edited Jan 7, 2014 at 9:49 PM
A) What are the actual instance types of the involved matrices and vectors? I.e. are there any which are not DenseMatrix/DenseVector?

B) Would it be possible to upgrade to Math.NET Numerics v2.6.2?

Thanks,
Christoph
Jan 8, 2014 at 2:36 PM
Looks like it was working all along, the improvement became obvious when running without the debugger attached.

A) They are all DenseMatrix/DenseVector

B) Yes, is 2.6.2 released as NuGet, or do I need to get the source and compile?

Sorry for raising a false alarm.
Marked as answer by cdrnet on 1/8/2014 at 12:30 PM
Coordinator
Jan 8, 2014 at 8:30 PM
Thanks for the update. Yes, 2.6.2 is on NuGet. It's the newest v2 release. You may also have a look at the v3 pre-releases already - they are still alpha and will thus change, but these changes will be negligible compared to the changes fro v2 to v3.

Thanks,
Christoph
Marked as answer by cdrnet on 1/8/2014 at 12:30 PM