PETSc 使用相邻向量值对操作进行向量化

PETSc vectorize operations with neighboring vector values

我正在实施 uFDTD book 的有限差分算法。许多 FDM 方程涉及对相邻向量元素的运算。 例如,电场的更新方程

ez[m] = ez[m] + (hy[m] - hy[m-1]) * imp0

使用相邻向量值 hy[m]hy[m-1]

如何在 PETSc 中高效地实现这些操作?除了局部向量循环和 scatterers?

之外还有其他东西吗?

如果我的目标是效率,我会调用模板引擎。有很多很多论文,有时甚至是开源代码,例如 Devito。这个想法是 PETSc 管理数据结构和并行性。然后您可以将本地数据块提供给您最喜欢的模板计算机。