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