我想用MPI提供的例程(特别是Open MPI)实现一些文件io。如何用MPI中的单个节点写入
由于可能的环境限制,我想知道,如果有可能限制负责IO的节点,以便所有其他节点都需要对这组进程执行隐藏mpi_send
,写入数据。这在例如例如,主节点放置在具有高性能文件系统的节点上,而其他节点只能访问存储二进制文件的低性能文件系统。
其实,我已经发现了一些信息,这可能是有益的,但我找不到更多的信息,如何真正落实这些事情:
1:有一个信息键MPI_IO
属于沟通者,它告诉哪个等级提供符合标准的IO例程。由于这被列为环境调查,我没有看到,我可以在哪里修改。
2:有一个信息键io_nodes_list
,它似乎属于文件相关的信息对象。不幸的是,这个键的可能值没有记录,并且Open MPI
似乎没有以任何方式实现它们。实际上,我甚至无法获取由mpi_file_get_info
返回的信息对象的文件名...
作为解决方法,我可以想象两件事:一方面,我可以使用标准Fortran例程,或者另一方面,创建一个新的沟通者,负责IO。但在这两种情况下,负责IO的进程都必须检查来自其他进程的可能IO以执行手动通信和文件交互。
是否有一个很好的自动方法来限制IO到某些节点?如果是的话,我怎么能实现呢?
注意'MPI_IO'属于执行环境的预定义的属性,因此是只读的。这主要是出于历史和便携性的原因。在现代集群系统中,其值始终为'MPI_ANY_SOURCE',因为所有CPU都以某种方式连接到I/O子系统。 – 2014-09-25 15:38:09