如何使用mpi将文件从一个进程传输到另一个进程?

时间:2012-03-10 20:28:02

标签: c++ mpi

我有一个只在一台计算机上可用的文本文件,我还需要其他计算机才能读取该文件。 如何使用mpich2(c ++)发送文件?

我尝试使用MPI_File_open(),但似乎所有计算机都需要本地文件才能正常工作。

2 个答案:

答案 0 :(得分:2)

好的,这是你的问题的秘密忍者答案。 haraldkl的答案是最简单的,但还有另一种方式:ROMIO(MPICH2中的MPI-IO实现)有一个名为延迟打开的文档,如果你告诉ROMIO你不会做任何独立的I / O,而你只做集体调用,然后只有“i / o聚合器”将打开文件,并且两阶段集体i / o优化将该数据发送到所有处理器。

MPI_Info_set(info, "romio_no_indep_rw" "true"); MPI_File_open(comm, filename, mode, info, &fh); MPI_File_read_all(fh, buf, count, MPI_CHAR, &status);

读取和播放可能是要走的路,因为每个进程都在读取相同的数据。我想如果你发现自己处于另一个并非每个进程都可以访问该文件的情况,我都会提到这一点。

我在ROMIO博客上有一篇更详细的文章:http://press3.mcs.anl.gov/romio/2003/08/05/deferred-open/

答案 1 :(得分:0)

所以我最终读取文件,将其作为char数组广播到其余的过程中 谢谢@haraldkl