有人可以告诉我,在哪里可以找到OpenFOAM,PETSc或其类似的矩阵乘法源代码?它不可能是微不足道的算法。 我找到了OpenFOAM和PETSc的主页,但在文档中我找不到多种方法和源代码。
答案 0 :(得分: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]];
}