在MPI环境中创建全局文件

时间:2014-08-05 04:49:37

标签: python mpi

我在python中使用mpi4py来激发分布式应用程序。

我需要创建一个文件OUTPUT_FILE,它可以被所有进程访问,并且在启动应用程序之前应该为空。

问题是mpi4py启动多个进程。如果我给出一个清空OUTPUT_FILE的命令,所有进程都会尝试这样做。这是不可取的,因为某些数据可能会丢失。

是否可以创建这样的OUTPUT_FILE,如果是,那么如何?

1 个答案:

答案 0 :(得分:1)

我对mpi4py没有太多经验,但您应该可以做以下事情:

from mpi4py import MPI

comm = MPI.COMM_WORLD
rank = comm.Get_rank()

# first open your file / clear it whatever
# with just one of your processes:
if rank == 0:
    myfile = open("myfile", "w")

# have all your processes sync up
comm.Barrier()

if rank != 0:
    # all the other processes can open 
    # in append mode, or whatever
    myfile = open("myfile", "a")

# Carry on, doing science or what have you ;-)

我假设您确实想在MPI.File中使用并行IO支持,但正如我已经说过的那样,我对mpi4py并不十分熟悉。