diff --git a/src/Numerics/Control.cs b/src/Numerics/Control.cs index 7c6d165d..47064a79 100644 --- a/src/Numerics/Control.cs +++ b/src/Numerics/Control.cs @@ -28,6 +28,8 @@ // OTHER DEALINGS IN THE SOFTWARE. // +using MathNet.Numerics.Algorithms.LinearAlgebra.Mkl; + namespace MathNet.Numerics { using System; @@ -66,7 +68,26 @@ namespace MathNet.Numerics CheckDistributionParameters = true; ThreadSafeRandomNumberGenerators = true; DisableParallelization = false; - LinearAlgebraProvider = new ManagedLinearAlgebraProvider(); + + try + { + const string name = "MathNetNumericsLAProvider"; + var value = Environment.GetEnvironmentVariable(name); + switch (value != null ? value.ToUpper() : string.Empty) + { + case "MKL": + LinearAlgebraProvider = new MklLinearAlgebraProvider(); + break; + default: + LinearAlgebraProvider = new ManagedLinearAlgebraProvider(); + break; + } + } + catch + { + // We don't care about any failures here at all + LinearAlgebraProvider = new ManagedLinearAlgebraProvider(); + } } ///