我有一个描述物理系统的大矩阵。最后两行与其他行根本不同,因此需要单独设置。此外,将这些行中的每一行分配到不同的进程是没有意义的。我想在第 0 个进程上设置两条线,然后将它们复制到全局矩阵中。
我有什么?- 一个分布式 M x N 矩阵,其中上部 (M-2) x N 块已被填充。
我想做什么?- 计算第 0 个进程的最后 2 x N 个元素,然后使用PDGEMR2D
问题是什么?- 我需要调用PDGEMR2D
所有进程。a
因此,需要分配要复制的矩阵(我认为它通常称为)并在所有进程上都有一个 scalapack 描述符。在第 0 个进程中,局部矩阵为 2 x N,在所有其他进程中为 0 x N。
如何处理空子矩阵?
通常,要获取 scalapack 描述符,我会调用descinit
本地行数为LLD
. 然而,这个数字需要 >= 1,但在具有空矩阵的进程上,它是 0。
(请注意,fortran 允许您分配具有 0 个元素的数组 - 这纯粹是一个 ScaLAPACK 问题。)