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 管理数据结构和并行性。然后您可以将本地数据块提供给您最喜欢的模板计算机。
我正在实施 uFDTD book 的有限差分算法。许多 FDM 方程涉及对相邻向量元素的运算。 例如,电场的更新方程
ez[m] = ez[m] + (hy[m] - hy[m-1]) * imp0
使用相邻向量值 hy[m]
和 hy[m-1]
。
如何在 PETSc 中高效地实现这些操作?除了局部向量循环和 scatterers?
之外还有其他东西吗?如果我的目标是效率,我会调用模板引擎。有很多很多论文,有时甚至是开源代码,例如 Devito。这个想法是 PETSc 管理数据结构和并行性。然后您可以将本地数据块提供给您最喜欢的模板计算机。