From 29ad488ca2d35abc48cc09e2036df52e6efe20b5 Mon Sep 17 00:00:00 2001 From: Christoph Ruegg Date: Sun, 3 Feb 2013 10:30:41 +0100 Subject: [PATCH] Control: choose default linear algebra provider by env var Setting the variable MathNetNumericsLAProvider=MKL will now make Control default to the MKL provider. If non is set or setting it fails, it will fall back to the managed provider as before. --- src/Numerics/Control.cs | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) 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(); + } } ///