相关疑难解决方法(0)

如何使用所有处理器在MPI中发送/接收

该程序使用C Lagrange和MPI编写.我是MPI的新手,想要使用所有处理器进行一些计算,包括进程0.为了学习这个概念,我编写了以下简单程序.但是这个程序在接收到进程0的输入后挂在底部,并且不会将结果发送回进程0.

#include <mpi.h>
#include <stdio.h>

int main(int argc, char** argv) {    
    MPI_Init(&argc, &argv);
    int world_rank;
    MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
    int world_size;
    MPI_Comm_size(MPI_COMM_WORLD, &world_size);

    int number;
    int result;
    if (world_rank == 0) 
    {
        number = -2;
        int i;
        for(i = 0; i < 4; i++)
        {
            MPI_Send(&number, 1, MPI_INT, i, 0, MPI_COMM_WORLD);
        }
        for(i = 0; i < 4; i++)
        {           /*Error: can't get result send by other processos bellow*/
            MPI_Recv(&number, 1, MPI_INT, i, 99, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
            printf("Process 0 received number %d …
Run Code Online (Sandbox Code Playgroud)

c parallel-processing mpi

9
推荐指数
1
解决办法
2125
查看次数

标签 统计

c ×1

mpi ×1

parallel-processing ×1