私は少し苦労します。外部ループをOpenMPで最適化し、還元を
#pragma omp parallel reduction(+:det).
私はそれを解決する方法と失敗した理由を誰かに教えてもらえますか?
// template<class T> using vector2D = std::vector<std::vector<T>>;
float Det(vector2DF &a, int n)
{
vector2DF m(n - 1, vector1DF(n - 1, 0));
if (n == 1) return a[0][0];
if (n == 2) return a[0][0] * a[1][1] - a[1][0] * a[0][1];
float det = 0;
for (int i = 0; i < n; i++)
{
int l = 0;
#pragma omp parallel for private(l)
for (int j = 1; j < n; j++)
{
l = 0;
for (int k = 0; k < n; k++)
{
if (k == i) continue;
m[j - 1][l] = a[j][k];
l++;
}
}
det += std::pow(-1.0, 1.0 + i + 1.0) * a[0][i] * Det(m, n - 1);
}
return det;
}
_計算が間違っています。また、期待される出力は?実際の出力とは何ですか?あなた自身で問題を解決しようとするためにどのような措置を講じましたか? –
これは元のバージョンです:/ https://pastebin.com/ZJFjAY5T – dgrat
あなたの質問に答える(またはあなたの問題を解決する)ために必要なすべての情報は、質問自体に存在し、いくつかの外部リンクではなく、不特定の時間。そのために、私は外部のリンクに従うことを拒否します。 –