Browse Source

Control: simpler UseNativeMKL() and UseManaged() methods

optimization-1
Christoph Ruegg 13 years ago
parent
commit
46bf65d87e
  1. 20
      src/Numerics/Control.cs

20
src/Numerics/Control.cs

@ -66,16 +66,17 @@ namespace MathNet.Numerics
_parallelizeElements = 300; _parallelizeElements = 300;
// Linear Algebra Provider // Linear Algebra Provider
#if NATIVEMKL
try try
{ {
const string name = "MathNetNumericsLAProvider"; const string name = "MathNetNumericsLAProvider";
var value = Environment.GetEnvironmentVariable(name); var value = Environment.GetEnvironmentVariable(name);
switch (value != null ? value.ToUpperInvariant() : string.Empty) switch (value != null ? value.ToUpperInvariant() : string.Empty)
{ {
#if NATIVEMKL
case "MKL": case "MKL":
LinearAlgebraProvider = new Providers.LinearAlgebra.Mkl.MklLinearAlgebraProvider(); LinearAlgebraProvider = new Providers.LinearAlgebra.Mkl.MklLinearAlgebraProvider();
break; break;
#endif
default: default:
LinearAlgebraProvider = new ManagedLinearAlgebraProvider(); LinearAlgebraProvider = new ManagedLinearAlgebraProvider();
break; break;
@ -86,18 +87,27 @@ namespace MathNet.Numerics
// We don't care about any failures here at all // We don't care about any failures here at all
LinearAlgebraProvider = new ManagedLinearAlgebraProvider(); LinearAlgebraProvider = new ManagedLinearAlgebraProvider();
} }
#else
LinearAlgebraProvider = new ManagedLinearAlgebraProvider();
#endif
} }
public static void ConfigureSingleThread() public static void UseSingleThread()
{ {
_numberOfThreads = 1; _numberOfThreads = 1;
DisableParallelization = true; DisableParallelization = true;
ThreadSafeRandomNumberGenerators = false; ThreadSafeRandomNumberGenerators = false;
} }
public static void UseManaged()
{
LinearAlgebraProvider = new ManagedLinearAlgebraProvider();
}
#if NATIVEMKL
public static void UseNativeMKL()
{
LinearAlgebraProvider = new Providers.LinearAlgebra.Mkl.MklLinearAlgebraProvider();
}
#endif
/// <summary> /// <summary>
/// Gets or sets a value indicating whether the distribution classes check validate each parameter. /// Gets or sets a value indicating whether the distribution classes check validate each parameter.
/// For the multivariate distributions this could involve an expensive matrix factorization. /// For the multivariate distributions this could involve an expensive matrix factorization.

Loading…
Cancel
Save