diff --git a/build.fsx b/build.fsx
index bfaae7dc..7fd34639 100644
--- a/build.fsx
+++ b/build.fsx
@@ -189,7 +189,7 @@ let coreSignedBundle =
let mklWin32Pack =
{ Id = "MathNet.Numerics.MKL.Win-x86"
Version = mklPackageVersion
- Title = "Math.NET Numerics - MKL Native Providers (Windows 32-bit)"
+ Title = "Math.NET Numerics - MKL Native Provider for Windows (x86)"
Summary = ""
Description = "Intel MKL native libraries for Math.NET Numerics. Requires an Intel MKL license if redistributed."
ReleaseNotes = mklReleaseNotes
@@ -205,7 +205,7 @@ let mklWin32Pack =
let mklWin64Pack =
{ mklWin32Pack with
Id = "MathNet.Numerics.MKL.Win-x64"
- Title = "Math.NET Numerics - MKL Native Providers (Windows 64-bit)"
+ Title = "Math.NET Numerics - MKL Native Provider for Windows (x64)"
Files =
[ @"..\..\out\MKL\Windows\x64\libiomp5md.dll", Some "content", None;
@"..\..\out\MKL\Windows\x64\MathNet.Numerics.MKL.dll", Some "content", None ] }
@@ -213,7 +213,7 @@ let mklWin64Pack =
let mklLinux32Pack =
{ Id = "MathNet.Numerics.MKL.Linux-x86"
Version = mklPackageVersion
- Title = "Math.NET Numerics - MKL Native Providers (Linux 32-bit)"
+ Title = "Math.NET Numerics - MKL Native Provider for Linux (x86)"
Summary = ""
Description = "Intel MKL native libraries for Math.NET Numerics. Requires an Intel MKL license if redistributed."
ReleaseNotes = mklReleaseNotes
@@ -229,7 +229,7 @@ let mklLinux32Pack =
let mklLinux64Pack =
{ mklLinux32Pack with
Id = "MathNet.Numerics.MKL.Linux-x64"
- Title = "Math.NET Numerics - MKL Native Providers (Linux 64-bit)"
+ Title = "Math.NET Numerics - MKL Native Provider for Linux (x64)"
Files =
[ @"..\..\out\MKL\Linux\x64\libiomp5.so", Some "content", None;
@"..\..\out\MKL\Linux\x64\MathNet.Numerics.MKL.dll", Some "content", None ] }
diff --git a/src/Numerics/Providers/LinearAlgebra/Mkl/MklLinearAlgebraProvider.cs b/src/Numerics/Providers/LinearAlgebra/Mkl/MklLinearAlgebraProvider.cs
index 542b6eee..6d0dd6e4 100644
--- a/src/Numerics/Providers/LinearAlgebra/Mkl/MklLinearAlgebraProvider.cs
+++ b/src/Numerics/Providers/LinearAlgebra/Mkl/MklLinearAlgebraProvider.cs
@@ -159,17 +159,12 @@ namespace MathNet.Numerics.Providers.LinearAlgebra.Mkl
}
catch (EntryPointNotFoundException e)
{
- // we currently accept this to continue to support the old version for a while.
- // however, this is planned to be dropped for the final v3 release at latest.
- // TODO: drop return statement and instead fail with the exception below
- return;
-
- throw new NotSupportedException("MKL Native Provider found but does not support capability querying and is therefore not compatible. Try to upgrade to a newer version.", e);
+ throw new NotSupportedException("MKL Native Provider does not support capability querying and is therefore not compatible. Consider upgrading to a newer version.", e);
}
if (a != 0 || b != -1 || linearAlgebra <=0 || _nativeRevision < 4)
{
- throw new NotSupportedException("MKL Native Provider found but too old or not compatible.");
+ throw new NotSupportedException("MKL Native Provider too old or not compatible. Consider upgrading to a newer version.");
}
// set numerical consistency, precision and accuracy modes, if supported
@@ -191,6 +186,11 @@ namespace MathNet.Numerics.Providers.LinearAlgebra.Mkl
///
public void FreeBuffers()
{
+ if (SafeNativeMethods.query_capability(67) < 1)
+ {
+ throw new NotSupportedException("MKL Native Provider does not support memory management functions. Consider upgrading to a newer version.");
+ }
+
SafeNativeMethods.free_buffers();
}
@@ -199,14 +199,24 @@ namespace MathNet.Numerics.Providers.LinearAlgebra.Mkl
///
public void ThreadFreeBuffers()
{
+ if (SafeNativeMethods.query_capability(67) < 1)
+ {
+ throw new NotSupportedException("MKL Native Provider does not support memory management functions. Consider upgrading to a newer version.");
+ }
+
SafeNativeMethods.thread_free_buffers();
}
///
/// Disable the MKL memory pool. May impact performance.
///
- public void DisableMklMemoryPool()
+ public void DisableMklMemoryPool()
{
+ if (SafeNativeMethods.query_capability(67) < 1)
+ {
+ throw new NotSupportedException("MKL Native Provider does not support memory management functions. Consider upgrading to a newer version.");
+ }
+
SafeNativeMethods.disable_fast_mm();
}
@@ -217,6 +227,11 @@ namespace MathNet.Numerics.Providers.LinearAlgebra.Mkl
/// Returns the number of bytes allocated to all memory buffers.
public long MemoryStatistics(out int allocatedBuffers)
{
+ if (SafeNativeMethods.query_capability(67) < 1)
+ {
+ throw new NotSupportedException("MKL Native Provider does not support memory management functions. Consider upgrading to a newer version.");
+ }
+
return SafeNativeMethods.mem_stat(out allocatedBuffers);
}
@@ -227,6 +242,11 @@ namespace MathNet.Numerics.Providers.LinearAlgebra.Mkl
/// The peak memory usage.
public long PeakMemoryUsage(MklMemoryRequestMode mode)
{
+ if (SafeNativeMethods.query_capability(67) < 1)
+ {
+ throw new NotSupportedException("MKL Native Provider does not support memory management functions. Consider upgrading to a newer version.");
+ }
+
return SafeNativeMethods.peak_mem_usage((int)mode);
}