首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MPI中的互通器

MPI中的互通器
EN

Stack Overflow用户
提问于 2012-06-07 23:54:01
回答 1查看 726关注 0票数 1

我对以下代码有问题:

代码语言:javascript
复制
#include "mpi.h"
#include <stdio.h>
#include <stdlib.h>
#include <iostream>

#define NUM_SPAWNS 2
// Based on the example from: http://mpi.deino.net/mpi_functions/MPI_Comm_spawn.html
void MPI_messenger(int stuff, int dest)
{
    MPI_Send(&stuff, 1, MPI_INT, dest, 1,intercomm);
}

int main( int argc, char *argv[] )
{
    int my_rank;
    int size;
    int np = NUM_SPAWNS;
    int errcodes[NUM_SPAWNS];
    MPI_Comm parentcomm, intercomm, testcomm;
    MPI_Init( &argc, &argv );
    MPI_Status stat;
    MPI_Comm_get_parent( &parentcomm );
    if (parentcomm == MPI_COMM_NULL)
    {
        MPI_Comm_spawn( "spawn_example4", MPI_ARGV_NULL, np, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &intercomm, errcodes );
        MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);
        MPI_Comm_size(MPI_COMM_WORLD, &size);
        int lol = 10;
        MPI_messenger(lol,0);
        MPI_messenger(lol,1);
    }
    else
    {
        MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);
        MPI_Comm_size(MPI_COMM_WORLD, &size);
        int lol;
        MPI_Recv(&lol, 1, MPI_INT,0,1,parentcomm, &stat);


        std::cout << lol << "\n";
    }
    fflush(stdout);
    MPI_Finalize();
    return 0;
}

当然,互通器intercomm不在函数MPI_messenger的作用域中定义。我想知道是否以及如何在不将其作为参数传递的情况下将此互通器放入函数中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-08 00:59:12

与处理任何其他变量的方式相同:将其声明为全局变量,或者在对main()MPI_messenger()都可见的其他公共范围内声明它(例如,在与成员相同的类中)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10935387

复制
相关文章

相似问题

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