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

これらの 2 つの dll が bin ディレクトリにコピーされていることを確認しました: libiomp5md.dll MathNet.Numerics.MKL.dll

ネイティブ プロバイダーが実際に使用されているかどうかを検出する方法についてのアイデアはありますか?

4

1 に答える 1

2

ドキュメントは前述のブログ投稿よりも少し最新ですが、必要な手順はすべて完了しているようです。

  • 行列の大きさは?
  • 関連するすべての行列は密ですか?
  • このモジュールは、線形代数コードが入っているモジュールですか? そうでない場合、このモジュールが実際に実行されることを確認しましたか? 線形代数コードの前に?

Control.LinearAlgebraProvider線形代数コードが実行される直前にチェックすることで、ネイティブ プロバイダーが有効になっていることを確認できます。v3 では、ToStringそれを呼び出すと、プラットフォームやリビジョンなどの追加情報も提供されます。

于 2014-05-31T08:39:48.263 に答える