知道python代码在群集上使用哪个目录

时间:2015-09-02 05:25:57

标签: python mpi mpich

我正在使用MPICH(MPI)版本的集群。基本上,代码在每个节点上以1 MPI进程运行,并且每个进程都具有可用的所有核心。这样,每个节点有一个MPI进程处理接收数据,然后python的本机多处理有一些工作。

从每个节点,数据都保存到目录,这就像/myfolder一样,它们都保存在同一位置的光泽文件系统中。

现在在本地开发时,我正在进行的多处理使用对内存的读/写,而在Linux中,它基本上使用tmp目录。

fd = os.open(filename, os.O_CREAT | os.O_TRUNC | os.O_RDWR)
#Make sure the memory is allocated
assert os.write(fd, '\x00' * memsize) == memsize
#Map the file to memory
buf = mmap.mmap(fd, memsize, mmap.MAP_SHARED,access=mmap.ACCESS_WRITE)
#Put the data
buf.seek(0)
buf.write(data)
buf.seek(0)
buf.close()
os.close(fd)

如何确定存储tmp的位置?例如,我想确保它在本地内存中,而不是在根节点或光泽系统上。

问题的动机是因为代码适用于10个节点,但当扩展到50时,它会挂起,其中一些节点已经开始计算而其他节点没有启动。我想知道那些开始时是否填满了一些普通机器的内存,导致崩溃。

1 个答案:

答案 0 :(得分:0)

并行文件系统上的mmap是可能的,但几乎总是一个坏主意。 mmap()将以4k块(linux页面大小)进行i / o,这可能适合您的文件系统,也可能不适合。

您可能希望了解mpi4py及其非常好的MPI-IO支持。您将能够完全避免使用mmap,当您(总体而言,如果它符合您的应用程序的需要)与您的光泽文件系统并行写入时,MPI库很可能会为您优化请求。