ScaLAPACK中的小型矩阵:如何处理空块

时间:2019-04-15 16:09:05

标签: fortran scalapack

我有一个描述物理系统的大矩阵。最后两行与其他行根本不同,因此需要单独设置。此外,将这些行中的每个行分布在不同的进程上是没有意义的。我想在第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问题。)

0 个答案:

没有答案