如何使用MPI_Irecv将请求发送到不同的进程

时间:2015-11-14 23:45:35

标签: c parallel-processing mpi

我想向某些进程发送请求,看看是否有任何进程返回任何内容。如果它们都没有返回任何内容,则该进程应返回-1。我以为我可以使用github.com/pydata/pandas/issues/3686来做到这一点。问题是任何解决方案都要求我(必须?)等待并检查它们中的任何一个是否确实返回。但这不是我想要的。我想发送一些请求,然后等待(最多1秒),如果有什么东西被罚款,如果没有,那么进程应该返回-1。我已经写了一半的方法,如果有人可以帮助完成它的话会很棒。

    int findJob(MPI_Comm world, int size, int rank, int target, MPI_Status *status){

    int counter = 0;    
    int req = -1;
    MPI_Status status;

    while(counter < size){

        if(target == rank)
            continue;

        printf("Process %d sending job request to process %d\n",rank,target);
        MPI_Send(&rq, 1, MPI_INT, target,0,world);

        printf("Process %d listening for response from %d\n",rank,target);
        MPI_Irecv(&req, 1, MPI_INT,target,MPI_ANY_TAG,world,&status)

    }

    return req;
}

0 个答案:

没有答案