使用 PETSC 的稀疏矩阵向量积

计算科学 稀疏矩阵 宠物 矩阵 向量
2021-12-06 10:55:41

我正在尝试使用 PETSC 进行简单的并行稀疏矩阵向量乘法。我的稀疏矩阵是一个简单的三对角拉普拉斯矩阵,它使用 PETSC 分布在多个处理器上。

我的主要问题是,如果我通过简单地迭代向量并更新每个值来执行相同的操作 A[i] = -1*A[i-1] + 2*A[i] + -1*A[i+ 1],它比使用 PETSC SpMV 花费的时间要少得多。为什么会这样?还是我做错了什么?

1个回答
  • 我假设您正在使用手动编码的无矩阵方法将乘法与组装的 PETSc 矩阵进行比较。后者可能确实更快,但这可能是因为没有从内存中加载需要的条目。更有意义的比较可能是与 PETSc 中的无矩阵运算符(参见手册中的第 3.3 节)。A
  • 一旦你有一个苹果与苹果的比较,你可以尝试通过使用优化的构建configure --with-debugging=0(-log_summary