答案 0 :(得分:2)
我在尝试弄清楚如何使用PDGEMR2D方面遇到了类似的困难,并且我认为我会在这里分享我的结论。
简而言之,如果您尝试设置多个上下文,请不要使用提供的DESCINIT子例程。它的错误检查假定所有进程都参与了初始化数组描述符的上下文,如果您尝试使用PDGEMR2D则不是这种情况。
您可以在不使用DESCINIT的情况下轻松初始化自己的描述符,因为它只是一个长度为9的整数数组。前8个字段(dtype,ctxt,m,n,mb,nb,csrc和rsrc)是全局的,并且应该在所有进程中具有相同的值。只有第9个字段(lld)是本地的,并且在不是定义数组的上下文成员的进程中忽略其值。
ScaLAPACK源代码中的示例程序pdgemrdrv.c(在线版here)对我来说非常有用,当时我试图弄清楚这些东西。它包含许多不必要的复杂功能,但您可以推断出以下要点:
希望这会有所帮助。欢呼声。