首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Blacs:不使用所有MPI核心的处理器网格

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

Stack Overflow用户
提问于 2017-09-04 17:08:54
回答 1查看 127关注 0票数 1

当处理器网格没有使用所有可用的MPI核心时,我对Scalapack有问题。假设我知道设置Pc*Pr<=NP的网格

当我设置一个进程网格时

代码语言:javascript
复制
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将输入网格大小从2x2更改为-1x-1。在本例中,我使用11 MPI内核进行测试。

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

代码语言:javascript
复制
int irsrc = 0, icsrc = 0;
descinit_(descA, &M, &N, &Mb, &Nb,&irsrc,&icsrc,&ctxt, &lda, &info);

对于i为4-10的进程,我得到了错误

代码语言:javascript
复制
{   -1,   -1}:  On entry to DESCINIT parameter number    6 had an illegal value

问题:

处理不在网格上的MPI核心的正确方法是什么?我要跳过所有的核心吗?

代码语言:javascript
复制
Cblacs_gridinfo( ctxt, &procrows, &proccols, &myrow, &mycol );

myrow=mycol=-1回来了?这是API的一部分吗?

EN

回答 1

Stack Overflow用户

发布于 2017-09-04 18:49:07

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

代码语言:javascript
复制
 if ((myrow>-1)&(mycol>-1)&(myrow<nprow)&(mycol<npcol)) {
    // do the job
    Cblacs_gridexit( 0 );
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46041592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档