0
我想阅读下列方式使用MPI一个txt文件:MPI文件的读取未结束
“主节点应该加载数据,鸿沟和 工人处理器之间分配它。”
但是我的代码没有结束。
这里是相应的代码块:
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()
,我想。
可能是什么问题?
当你正在从一个* single *节点读取数据时,是否有使用MPI IO而不是常规IO(从'')使用MPI IO的原因?从我所读的内容来看,MPI IO是*并行的,集体IO *,所以这种方式击败了目的(并可能解释为什么它被卡住了)。 –
Rufflewind
2014-12-27 13:55:06
我认为你是对的,但这是一个学校项目。可能是TA的错误。无论如何,我只需要了解如何在处理器之间读取文件和发送/接收消息。 – user2870 2014-12-27 14:02:32
@Rufflewind,MPI IO非常适用于非平行的情况,甚至可以方便地使用,例如它允许使用派生的MPI数据类型传输数据。 – 2014-12-27 14:04:15