在非结构化网格上的传统 PDE 求解器中,我们确切地知道雅可比矩阵的稀疏模式,并且我们知道要通信的数据量远小于本地数据量。
那么使用幻影 PETSC Vec(使用VecCreateGhost
or创建VecCreateGhostWithArray
)是否比使用默认 Vec(使用 创建)更有效VecCreateMPI
?
在非结构化网格上的传统 PDE 求解器中,我们确切地知道雅可比矩阵的稀疏模式,并且我们知道要通信的数据量远小于本地数据量。
那么使用幻影 PETSC Vec(使用VecCreateGhost
or创建VecCreateGhostWithArray
)是否比使用默认 Vec(使用 创建)更有效VecCreateMPI
?
VecGhost
如果将内部值作为全局到局部(光环更新)的一部分复制成本很高,则可能很有用。专用本地向量的内存访问模式可以提供更好的缓存重用,因此感知的好处VecGhost
通常在遍历中被抹去。此外,由于VecGhost
包含幻影值的存储,它通常会增加 Krylov 空间使用的内存(相对于法线向量,其中有恒定数量的局部向量)。
VecGhost
是一个可疑的性能优化;我不建议在新代码中使用它,除非您已经为您的应用程序进行了分析并确定它是有益的。它的存在是为了让希望进行特定优化的用户不需要滚动他们自己的实现。