mpi文件读取没有结束

时间:2014-12-27 13:35:22

标签: c file-io mpi

我正在尝试使用mpi以下列方式读取txt文件:

"主节点应该加载数据,在它之间划分和分配 工人加工者。"

但是我的代码没有结束。

以下是相应的代码:

MPI_File_open(MPI_COMM_WORLD, argv[1], MPI_MODE_RDONLY, MPI_INFO_NULL, &in);

if (rank == 0){

    printf("OK\n");   

    MPI_Offset filesize;
    MPI_Offset localsize;
    MPI_Offset start;
    MPI_Offset end;
    char *chunk;

    MPI_File_get_size(in, &filesize);
//localsize = filesize/size;
    start = 0;
    end   = filesize - 1;
    printf("OK\n");

localsize =  end - start + 1;

/* allocate memory */
    chunk = malloc( (localsize + 1)*sizeof(char));

    MPI_File_read_at_all(in, start, chunk, localsize, MPI_CHAR, MPI_STATUS_IGNORE);
    printf("OK\n");
    chunk[localsize] = '\0';
}

MPI_Finalize();

上面的代码不打印第三个" OK"。因此我想问题是MPI_File_read_at_all()

可能是什么问题?

1 个答案:

答案 0 :(得分:3)

MPI_File_read_at_allMPI_File_read_at集体版本。集合操作仅在给定通信器中的所有队列进行呼叫时才完成。在您的情况下,开放操作包含MPI_COMM_WORLD,而您只在0级调用MPI_File_read_at_all

您应该将其替换为非集体MPI_File_read_at,或者更好的是,使用标准的C I / O例程。