1

私は、Math.Net を使用して三重対角システムを解くことに取り組んでいました。MKL (x86) と OpenBLAS 拡張機能をインストールしましたが、CPU 使用率を見ると、1 つのコアしか動作していないようです。これがコードです

MathNet.Numerics.Control.UseNativeMKL();
MathNet.Numerics.Control.UseMultiThreading();

Matrix<double> A;
Vector<double> x;
Vector<double> b;
// *** FILL A and B ***

for (int n = 0; n < 50000; n++)
    x = A.Solve(b);

もちろん、これは実際のコードを大幅に簡略化したものですが、複数の CPU を使用する場合には何も役に立ちません。

コードは最適化を有効にしてリリースでコンパイルされ、「任意の CPU」と「x64」の両方を試しました。

私は何か間違ったことをしていますか?

[編集] 言及するのを忘れていましたが、 for ループ中に A と b が変更される可能性があるため、 for ループを並列化できません。この質問は、「Math.Net に LA プロバイダーのマルチスレッド ラッパーを強制的に使用させるにはどうすればよいですか?」に重点を置いています。

4

1 に答える 1