C MPI I/O在MPI中将文件从一个节点发送到另一个节点

C MPI I/O在MPI中将文件从一个节点发送到另一个节点,c,mpi,distributed-computing,mpi-io,C,Mpi,Distributed Computing,Mpi Io,我有一个MPI代码,用于将文件从一个节点传输到另一个节点。但不知何故,我无法在每个节点上的localscratch文件夹上运行。例如:我按如下方式运行代码: mpirun --host ser010,ser011 ./test <test.txt(inputfile)> <test2.txt(outputfile)> 代码在2个节点ser010、ser011上运行 进程0 ser010读取输入文件,进程1从进程0接收数据并作为输出文件写入 但当我在NFS上时,这是有效的

我有一个MPI代码,用于将文件从一个节点传输到另一个节点。但不知何故,我无法在每个节点上的localscratch文件夹上运行。例如:我按如下方式运行代码:

mpirun --host ser010,ser011 ./test <test.txt(inputfile)> <test2.txt(outputfile)>
代码在2个节点ser010、ser011上运行 进程0 ser010读取输入文件,进程1从进程0接收数据并作为输出文件写入

但当我在NFS上时,这是有效的。并行文件系统

每个节点ser010、ser011都有自己的localscratch文件夹,但不在nfs上。因此,每个节点中的文件都不会共享

如何将文件从ser010的草稿发送到ser011的草稿


请建议。我在这里使用OpenMPI。

您提供的链接上的程序可以工作,因为每个节点都可以访问NFS服务器上的文件。但是,如果试图写入节点的本地空间,则需要建立一种方法来指示从哪个节点发送文件,以及向哪个节点发送文件。如果没有节点共享scratch文件夹,那么性能就不会比串行发送文件更好。我现在不关心性能。只需要一种将文件从node1发送到node2的方法。代码同时在两个节点上运行。node1发送文件,node2接收文件。。只是我希望它是它们的临时目录,而不是NFS。您提供的版本使每个节点都从同一个文件读取并写入同一个文件——没有区分一个节点和另一个节点的功能。不只是用两台主机运行它,您可以用一百台主机运行它,并且行为应该是相同的。但是,将文件从一个特定节点发送到另一个节点的任务要求您能够区分源节点和目标节点。这将归结为一些代码,如ifthisNode==sourceNode sendFile;else ifthisNode==destNode recvFile;这是一个串行过程。