2

我有一个将 MathNet.Numerics 用于线性代数例程的 F# 项目。

我已将以下代码放在 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

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

4

1 回答 1

2

这些文档比提到的博客文章更新了一些,但似乎所有必需的步骤都已完成。

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

Control.LinearAlgebraProvider您可以通过在执行线性代数代码之前检查来验证本地提供程序是否已启用。在 v3 中,调用ToString它还会提供一些额外的信息,例如平台和修订版。

于 2014-05-31T08:39:48.263 回答