Blacs:不使用所有MPI内核的处理器网格

时间:2017-09-04 17:08:54

标签: c++ c scalapack

当处理器网格不使用所有可用的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);

在具有ids 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的一部分吗?

1 个答案:

答案 0 :(得分:0)

除非有人有更好的来源,否则http://icl.cs.utk.edu/lapack-forum/viewtopic.php?t=139中的第二篇文章提供了一个C示例,该示例仅为进程调用ScaLAPACK函数

activator(ans, _data: Data.value.micros)