c++ - 黑人 : processor grids that do not use all MPI cores

标签 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 内核。

这本身不会引发任何错误,但是当我尝试设置描述符 vector 时

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 的一部分吗?

最佳答案

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

 if ((myrow>-1)&(mycol>-1)&(myrow<nprow)&(mycol<npcol)) {
    // do the job
    Cblacs_gridexit( 0 );
 }

关于c++ - 黑人 : processor grids that do not use all MPI cores,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46041592/

相关文章:

c++ - Centos6 gcc6 : default ABI not picked up when compiling simple c++11 test file

C++ boost wave,作用域宏

c - 在 C 中使用 mpi 和 lapack 时出现段错误

时间:2019-03-08 标签:c++customoperatornew

c++ - 这个 C++ 成员初始化行为是否定义良好?

python - 如何解决 AMD64 Win Python35_d.lib 中缺少 PyModule_Create2 的问题?

c - C程序中的浮点异常

c - 对 `strtok_r' Windows 10 MinGW 的 undefined reference

c - Scalapack 返回错误答案

c++ - Cholesky 分解 ScaLapack 错误