MathNet.Numerics不使用Mkl本机提供程序

时间:2014-05-31 04:23:30

标签: f# blas mathnet

我有一个F#项目,它使用MathNet.Numerics进行线性代数例程。

我已将以下代码放在F#模块中:

module LinearAlgebra

open MathNet.Numerics
open MathNet.Numerics.LinearAlgebra.Double
open MathNet.Numerics.LinearAlgebra.Generic

Control.LinearAlgebraProvider <- new Algorithms.LinearAlgebra.Mkl.MklLinearAlgebraProvider()

但是,无论是启用还是注释掉这行代码,我所看到的矩阵乘法的时间都保持不变。

我安装了Mkl提供程序NuGet包,如下所述: http://christoph.ruegg.name/blog/mathnet-numerics-with-native-linear-algebra.html

并确保将这两个dll复制到bin目录: libiomp5md.dll MathNet.Numerics.MKL.dll

关于如何检测本机提供程序是否实际被使用的任何想法?

1 个答案:

答案 0 :(得分:2)

docs比上述博客文章更新一些,但似乎所有必需的步骤都已完成。

  • 你的矩阵有多大?
  • 所有涉及的矩阵都是密集的吗?
  • 此模块是您的线性代数代码所在的模块吗?如果没有,你是否确定该模块实际执行 - 在线性代数代码之前?

您可以通过在执行线性代数代码之前检查Control.LinearAlgebraProvider来验证本机提供程序是否已启用。在第3版中,在其上调用ToString将提供一些其他信息,如平台和修订版。