0

OpenFOAM、PETSc、または同様のものによって実現される行列乗算のソースコードをどこで見つけることができるか教えてもらえますか? それは自明なアルゴリズムではありえません。OpenFOAM と PETSc のホームページを見つけましたが、doc には乗算メソッドとソース コードが見つかりません。

4

1 に答える 1

1

PETSc は、多くの形式の行列乗算を実装しています。最も基本的な実装については、 MatMult_SeqAIJのこの部分を参照してください。ai行の開始点、列のインデックスaj、およびエントリを含む圧縮されたスパース行形式で格納されたスパース行列の場合aa、乗算は次の単純なカーネルで構成されます。

for (i=0; i<m; i++) {
  y[i] = 0;
  for (j=ai[i]; j<ai[i+1]; j++)
    y[i] += aa[j] * x[aj[j]];
}
于 2011-02-15T15:56:48.430 に答える