当处理器网格不使用所有可用的 MPI 内核时,我遇到了 Scalapack 的问题。说我知道要设置的网格Pc*Pr<=NP
当我设置流程网格时
Cblacs_get(0, 0, &ctxt);
const char *order = ( column_major ? "Col" : "Row" );
Cblacs_gridinit(&ctxt, order, procrows, proccols);
Cblacs_gridinfo( ctxt, &procrows, &proccols, &myrow, &mycol );
Cblacs_gridinfo
将输入网格大小从2
x更改2
为-1
x -1
。在这种情况下,我正在使用11
MPI 内核进行测试。
这本身不会引发任何错误,但是当我尝试设置描述符向量时
int irsrc = 0, icsrc = 0;
descinit_(descA, &M, &N, &Mb, &Nb,&irsrc,&icsrc,&ctxt, &lda, &info);
在带有 id 的进程上4-10
我得到错误
{ -1, -1}: On entry to DESCINIT parameter number 6 had an illegal value
问题:
处理不在网格上的 MPI 内核的正确方法是什么?我应该跳过所有核心上的所有内容吗
Cblacs_gridinfo( ctxt, &procrows, &proccols, &myrow, &mycol );
回来了myrow=mycol=-1
?这是 API 的一部分吗?