MatGetOwnershipRange() 对顺序矩阵有什么作用?

计算科学 宠物
2021-11-26 07:06:58

我正在使用顺序矩阵类型编写 petsc 代码。因为我希望它易于并行化,所以我在代码中放了一些现在没用的东西,但以后会更容易并行化。

我添加的其中一件事是MatGetOwnershipRange()定义我用来构建矩阵的迭代器的范围。该矩阵是 MatSeqAIJ 类型,并且没有分配任何值,尽管内存已分配给MatSeqAIJSetPreallocation().

但是,当我运行MatGetOwnershipRange()时,我得到的范围开头和结尾的两个 PetscInt 都是 0。

MatGetOwnershipRange()仅适用于 MPI 矩阵吗

它是否仅适用于已分配其值的矩阵MatSetValues()

1个回答

它适用于任何已设置大小的矩阵,返回 a 的所有权范围,该范围Vec可能是矩阵向量乘积的结果。对于大多数矩阵类型,这与基于行的存储相匹配,尽管这不是绝对必要的。对于顺序矩阵,所有权范围是所有行。