mpi4py 中的简单并行 I/O 操作

本文从本人简书博客同步过来

上一篇中我们介绍了 mpi4py 中的 memory 对象及内存操作,下面我们将介绍 mpi4py 中的简单并行 I/O 操作。

前面我们已经简要地介绍了 mpi4py 中的并行 I/O 及文件视图等相关概念和操作,但是 MPI 中的 I/O 操作应该是 MPI 标准中最复杂和最难理解的部分,因为 MPI 中 I/O 操作的方法非常多,而且极易发生混淆(可参见这里的表格),很难知道在什么情况下该选用什么合适的并行 I/O 操作方法以达到高的 I/O 性能。在很多时候,并行计算程序的性能瓶颈都在 I/O 操作上,因此理解并选用合适的 I/O 操作对提高程序的整体性能是非常重要的。在下面的若干篇中,我们将逐步由浅入深地介绍 mpi4py 中的并行 I/O 操作方法,讲解这些方法的区别和使用场合,以及获得高性能 I/O 操作的途径、注意事项和建议等。

使用独立文件指针

对最简单的并行文件 I/O 操作,其实也遵循通常的(非并行)I/O 操作方式,即:打开文件,移动文件指针到指定位置,读/写文件,然后关闭文件。对这种并行 I/O 操作方式,每个进程都拥有自己的文件指针,每个进程都独立地移动自己的文件指针,并且从自己的文件指针所指的位置读写数据,因此被称作使用独立文件指针的并行 I/O。不过需要注意的是,使用独立文件指针的 I/O 操作不是线程安全的,因为独立文件指针为每个进程所拥有,如果在进程中使用多线程,则每个线程对独立文件指针的操作会相互冲突。下面是使用独立文件指针相关方法的使用接口:

MPI.File.Open(type cls, Intracomm comm, filename, int amode=MODE_RDONLY, Info info=INFO_NULL)

并行打开文件,返回打开文件的句柄。此为一个集合操作,comm 必须为一个组内通信子对象,该通信子内的所有进程以访问模式 amode 同时打开名为 filename 的文件,可通过 info 参数向 MPI 环境传递一些 hints,这些 hints 通常用来指出文件访问以及文件系统相关的一些特殊信息,要求所有进程打开的文件 filename 都在物理上指向同一个文件(即文件路径可能不同,但一定要是磁盘上同一个物理位置的文件),所有进程打开文件使用的 amode 也必须相同,但每个进程可以分别使用自己的 info 对象。如果某个进程需要独自打开一个文件访问,则可设置其参数 comm 为 MPI.COMM_SELF。访问模式 amode 有如下几种:

  • MPI.MODE_RDONLY:只读;
  • MPI.MODE_RDWR;读写;
  • MPI.MODE_WRONLY:只写;
  • MPI.MODE_CREATE:如果不存在,则创建文件;
  • MPI.MODE_EXCL:如果要创建的文件已经存在则报错;
  • MPI.MODE_DELETE_ON_CLOSE:关闭时删除文件;
  • MPI.MODE_UNIQUE_OPEN:不允许同时打开文件,包括从 MPI 环境内和环境外两种情况;
  • MPI.MODE_SEQUENCIAL:顺序方式访问
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值