mpi4py 中的文件互操作性

MPI4py在并行I/O中提供文件互操作性,确保不同环境和进程间文件的一致性解析。文章重点讨论了native、internal和external32三种数据表示方式,其中external32提供了跨平台的兼容性。通过设置正确的数据类型和文件视图,MPI4py支持创建可移植的文件。自定义数据表示允许用户注册解析机制,以处理特定文件格式。文件视图的设置对于实现互操作性至关重要。
摘要由CSDN通过智能技术生成

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

上一篇中我们介绍了 mpi4py 中 I/O 操作的一致性语义,下面我们将介绍 mpi4py 中的文件互操作性。

文件是一种持续性的存储,当程序运行完后依然会存在(只要程序不删除文件),可能会被其他程序或在其他环境中使用,因此文件的互操作性就是一个问题。所谓文件互操作就是指一个运行环境/进程写入文件的数据能够被另外的环境/进程所正确解析。MPI 程序操作的文件只是一般的普通文件,MPI 并不会自动在其操作的文件中添加应用和环境等相关的额外信息。为性能上的考虑,MPI 并没有指定应用该以何种物理方式创建文件,尽管 MPI 在逻辑上总是将一个文件视作一个线性的字节序列。如果某个 MPI 实现创建的文件不同于文件系统的普通文件,MPI 标准要求 MPI 实现提供将其创建的文件转换成一个线性字节序列的功能,而且还必须提供一些像复制、删除、移动文件等用户熟悉的功能。因此,非 MPI 的程序总是能够访问由 MPI 创建的文件,虽然可能需要做一些转换。在大多数情况下,MPI 创建的文件是和非 MPI 程序创建的文件完全一致,因此根本用不着转换步骤。

处于单一运行环境下,MPI 可以实现百分之百的互操作。为实现不同运行时环境之间的文件互操作,MPI 定义了统一的外部文件表示规范——external32。

只要满足文件一致性约束,即可保证单一运行环境下的文件互操作性,不论参与的进程数量是多少,都可一致地解析数据文件。文件互操作性可概括为如下 3 种:

  • 从二进制表示解析文件的内容。
  • 不同文件结构之间的互相转换。
  • 不同主机环境之间信息解释机制的互相转换。

这里主要讨论文件在 MPI 环境内外传输时的互操作性,具体而言就是要指定 MPI 环境如何提供能够与 POSIX 兼容的语义(如 cp,rm,mv 等),此外还要保持文件在环境内外相应字节偏移位置上的一一对应。

对不同主机环境之间的文件互操作,通过类型信息(etype 和 filetype)加以规范和转换,并据此提供跨环境(MPI 与非 MPI)、跨平台(不同结构主机)的文件互操作性。

文件数据表示

因为不同的主机环境可能会有不同的二进制数据表示,如字节顺序,数据类型包含的字节数目等,一个主机环境创建的文件可能无法被另一个主机正确地解析。MPI 提供了相应的机制来创建可移植性的文件,我们将在下面进行逐步的介绍。

在前面的所有例子中,我们都没有显式地设置 MPI.File.Se

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值