mpi p2p发送c和c ++代码之间的接收通信

时间:2014-11-27 12:32:51

标签: c++ c parallel-processing mpi communication

在使用不同语言(C和C ++)编写源代码的两个代码部分/函数之间进行通信时,是否需要做任何特殊的事情?

我已经在C ++代码中注入了具有不同等级的所有并行从属任务所使用的发送:

if (rank != 0)
{
    const long bufferlength = 1000000; 
    char filename[300];
    double array[bufferlength*4];

    MPI_Send(filename, 300, MPI_CHAR, 0, rank, MPI_COMM_WORLD);  
    MPI_Send(array, bufferlength*4, MPI_DOUBLE, 0, rank, MPI_COMM_WORLD); 
}

在C源代码中,相应的接收仅由主0进程放置和调用,因为存在多个子任务(此处为num_process):

if (rank==0)
{
    typedef struct array_s
    {
        char filename[300];//text for file name as identifier
        double *t;//time buffer 
        double *x;//X coordinate buffer
        double *y;//Y coordinate buffer
        double *z;//Z coordinate buffer
    } arraystruc;
    arraystruc arraybuffer;

    double array[bufferlength*4]; 

    for(i=1;i<num_process;i++) 
    {
        MPI_Recv(arraybuffer.filename, 300, MPI_CHAR, i, MPI_ANY_TAG, MPI_COMM_WORLD,&status);    
        MPI_Recv(array, bufferlength*4, MPI_DOUBLE, i, MPI_ANY_TAG, MPI_COMM_WORLD,&status);
    }
}

字符数组正确到达,但不幸的是数组缓冲区没有正确到达主服务器。它只是空的。

0 个答案:

没有答案