并行程序设计基础——并行I/O(3)

(6) MPI-IO: fileview MPI_File_set_view MPI_File_get_view #include #include #include #include"mpi.h" /** * int MPI_File_set_view(MPI_File fh, MPI_Offset disp, MPI_Datatype etype, MPI_Datatype filetype, char * datarep, MPI_Info info); * etype = basic uni 阅读详情

目录

一、多视口的并行文件并行读写

1、文件视口与指针

1.1 MPI_FILE_SET_VIEW

1.2 MPI_FILE_GET_VIEW

1.3 MPI_FILE_SEEK

1.4 MPI_FILE_GET_POSTION

1.5 MPI_FILE_GET_BYTE_OFFSET

2、阻塞方式的视口读写

2.1 MPI_FILE_READ

2.2 MPI_FILE_WRITE

2.3 MPI_FILE_READ_ALL

2.4 MPI_FILE_WRITE_ALL

3、非阻塞方式的视口读写

3.1 MPI_FILE_IREAD

3.2 MPI_FILE_IWRITE

4、两步非阻塞视口组调用

4.1 MPI_FILE_READ_ALL_BEGIN

4.2 MPI_FILE_READ_ALL_END

4.3 MPI_FILE_WRITE_ALL_BEGIN

4.4 MPI_FILE_WRITE_ALL_END


        本节继续对并行I/O部分的剩余内容进行介绍。

一、多视口的并行文件并行读写

        前面所介绍的文件读写方法,都不涉及文件指针,文件读写的位置都是作为参数明确给出的,这一部分介绍的文件读取都是从一个特定的文件视口中,从文件指针的当前位置,对文件进行读写操作。

        不同进程对应的文件指针可以是互不相同的,它们可以分别指向同一文件的不同位置。视口是相对于某一进程来说的,它是特定进程所能看到的文件,某一进程的文件视口可以是整个文件,但多数情况下,文件视口只是整个文件的一个或几个部分。文件视口在整个文件中对应的部分可以是不连续的,但各个进程看到的其文件视口中的数据却是连续的。

1、文件视口与指针

        文件视口可以用一个三元组来表示:

<起始偏移,基本类型,文件类型>

        其中偏移是指该视口在文件中的起始位置,该位置度量是以字节为单位的。基本类型是视口数据存取的基本单位,基本类型可以是MPI的预定义数据类型或派生数据类型。文件类型或者就是基本类型,或者是从基本类型派生出来的其它类型,文件类型真正限定了文件中哪些数据可以被视口访问,哪些数据对视口是不可见的。文件视口就是文件中从特定的偏移开始,连续多个直至文件结束的特定文件类型组成的。

1.1 MPI_FILE_SET_VIEW

        MPI_FILE_SET_VIEW设置文件视口,它是一个组IO调用,所有与fh相联系的进程组中的进程都执行这一调用。调用进程在fh对应的文件中设置本进程的文件视口,该视口相对于文件头的偏移是disp,即视口首先从文件中跳过disp个字节,然后给出了视口数据的基本数据单位etype,以后所有对该视口的访问必须以etype为单位来进行,而filetype则在etype的基础上,通过以etype为单位定义数据类型filetype,将视口不需要的数据排斥在外,即一般filetype定义的数据类型是有“空穴”的,这些空穴是视口无需访问的数据。

MPI_FILE_SET_VIEW(fh, disp, etype, filetype, datarep, info)
INOUT    fh            视口对应文件的文件句柄
IN       disp          视口在文件中的偏移位置
IN       etype         视口基本数据类型
IN       filetype      视口文件类型
IN       datarep       视口数据的表示方法
IN       info          传递给运行时的信息

//c语言的说明
int MPI_File_set_view(MPI_File fh, MPI_Offset disp, MPI_Datatype etype, MPI_Datatype filetype, char *datarep, MPI_Info info)
//Fortran语言的说明
MPI_FILE_SET_VIEW(FH, DISP, ETYPE, FILETYPE, DATAREP, INFO, IERROR)
CHARACTER*(*)  DATAREP
INTEGER  FH, ETYPE, FILETYPE, INFO, IERROR

        从上面内容可知,文件视口其实就是一种特殊的数据类型,它指定的位置不像前面定义派生数据类型那样是在内存中,而是在文件中。它的另一个约束是都必须以基本的数据单位etype为基础来进行定义,而不是可以任意使用不同的数据类型来定义;视口包含数据的多少其实是通过定义内容不连续的数据类型filetype来实现的,该类型不连续的部分是视口不需要访问的部分,手段指定本视口包括哪些数据;从偏移disp开始,连续重复N次直到文件结束,由数据类型filetype得到的新的派生数据类型,才是文件视口对应的数据类型。

        以后当进程对它们各自的文件视口进行访问时,可以认为该文件中只包含视口对应的数据,而且数据之间是没有空隙的。

        不同的进程,通过在相同的文件上定义互不交叉的文件视口,就可以实现对文件的并行访问。

        MPI_FILE_SET_VIEW调用完成后,原来的文件句柄fh就不再代表该文件,而是代表本调用产生的文件视口,以后使用fh对文件的所有操作都是对其视口的操作。

        其中视口数据的表示方法有三种:native、internal和external32。定义数据表示是为了高效解决MPI的一致性问题,因为不同类型的计算机,其数据的表示方法是不同的。

        ①native:该数据表示的含义是数据在文件中的存储方式和在内存中的完全一样。这样在进行文件存取时,就没有数据转换的开销,对文件访问的效率和精度没有损失。显然这种方法在由不同类型的计算机组成的异构环境是行不通的,使用native数据表示虽然效率高,但存在移植性的问题。

        ②internal:该数据表示是由具体的实现来定义的,比如相同的MPI实现可以在不同类型的机器上实现数据转换,它是为了解决native数据表示的不可移植问题,通过在某一个具体的实现上提供特定的手段,来实现一定程度的移植性,它解决可移植问题并不彻底。

        ③external32:该数据表示是为了彻底解决任何不同类型机器之间的数据移植问题,用external32数据表示产生的文件,可以被任何MPI实现,在任何计算机上进行访问。但是external32数据表示的一个缺点是效率问题,对每次不同文件的读写都必须进行一次同一格式的转换。

并行程序设计基础——并行I/O(4) 主要介绍MPI-2新增特性并行I/O中对于共享文件读写的操作 阅读详情

相关推荐

并行程序设计基础——并行I/O(1)

主要介绍MPI-2中新增加的主要特性之一-并行I/O

欢迎各位大佬光临“寒舍”!请多多指点,共同进步! 1563

并行程序设计基础——并行I/O(2)

主要对MPI-2中新增加的特性“并行I/O”中显式偏移的并行文件读写操作进行介绍

欢迎各位大佬光临“寒舍”!请多多指点,共同进步! 923

并行程序设计基础——并行I/O(5)

主要对MPI-2新增特性“并行I/O”的分布式数组文件存取操作进行介绍

欢迎各位大佬光临“寒舍”!请多多指点,共同进步! 1081

《Linux程序设计》实验5 Linux文件I/O操作

含义:所有者读权限(Owner Read Permission)值:0400(八进制)描述:允许文件的所有者读取文件内容。对于目录,这表示可以列出目录内容。

J1481852914的博客 1393

实验6 I/O程序设计

实验6  I/O程序设计输入/输出是对外部设备进行控制和数据交换的过程。CPU与外设之间的信息交换,是通过接口电路中的I/O端口进行的。I/O程序设计必须使用IN、OUT指令,对端口进行读、写操作。6.1 读取实时时钟现代微机中都包含一个实时钟,它自动地定时更新时间与日期。实时钟信息(年、月、日、时、分、秒)保存在CMOS RAM中,在系统关机后,时钟电路自带的后备电池继续向RAM供电

leapme的专栏 5195

并行程序设计基础——并行模式之对等模式

通过雅克比迭代的多种MPI并行实现介绍了MPI并行程序设计模式中的对等模式

欢迎各位大佬光临“寒舍”!请多多指点,共同进步! 1465

解决vLLM安装卡在vllm-nccl-cu12依赖项的实战指南

本文提供了解决vLLM安装过程中卡在vllm-nccl-cu12依赖项的详细指南。通过分析CUDA版本兼容性问题,介绍了三种实用解决方案:安装指定版本vLLM、手动安装nccl-cu12依赖以及升级CUDA到12.x版本,并特别针对离线环境提供了安装建议,帮助开发者顺利完成vLLM的安装部署。

weixin_29098367的博客 515

【嵌入式Linux】EC20模块多运营商自适应PPP拨号实战:从IMSI识别到网络配置

本文详细介绍了在嵌入式Linux系统中,如何基于EC20 4G模块实现多运营商自适应PPP拨号。通过解析SIM卡的IMSI识别运营商,并动态配置对应的APN和拨号参数,结合AT指令交互与健壮的pppd脚本,解决了设备跨地域部署时的网络自动连接问题,提升了物联网设备的部署效率和稳定性。

fox11的博客 903

别再只测电压了!用STM32G474的ADC玩点花的:过采样提升精度与多通道扫描实战

本文深入探讨了STM32G474系列单片机的ADC高级应用,包括硬件过采样技术实现16位精度和多通道扫描结合DMA的自动数据采集方案。通过详细的配置步骤和实战案例,帮助开发者突破传统电压测量局限,提升信号采集精度和系统效率,适用于工业监控、医疗设备等高精度应用场景。

weixin_42647395的博客 239

SAP SD跨公司销售IDOC自动记账配置实战指南

本文详细介绍了SAP SD模块中跨公司销售IDOC自动记账的配置实战指南。通过IDOC技术实现集团企业间交易的自动化处理,显著提升财务效率和准确性。文章涵盖前置配置、RFC连接、合作伙伴参数设置及财务科目分配等关键步骤,并提供了常见错误排查和性能优化建议,帮助用户快速掌握这一高效业务流程。

weixin_29284885的博客 769

PyTorch转ONNX遇到算子不支持?3种实战解决方案+TensorRT适配技巧

本文针对PyTorch模型导出ONNX时常见的算子不支持问题,提供了从诊断到解决的完整实战指南。首先讲解如何精准定位错误根源,随后详细介绍了三种核心解决方案:注册缺失的符号映射、实现自定义算子,以及为TensorRT开发插件的终极落地方案。文章还分享了构建稳健部署流水线的工程化实践,帮助开发者系统性地解决模型部署中的算子兼容性挑战。

fern8的博客 843

攻克Windows平台3DGS复现:从环境配置到可视化实战全记录

本文详细记录了在Windows平台成功复现3D Gaussian Splatting(3DGS)的完整流程,涵盖从环境配置、依赖安装、数据准备到模型训练与可视化的全步骤。重点解决了Windows下CUDA版本匹配、Visual Studio编译及SIBR_viewers可视化工具部署等核心难题,为开发者提供了一份详实的避坑指南与实战手册。

weixin_28839699的博客 252

Python爬虫实战:利用最新技术爬取抖音话题挑战视频

本文将详细介绍如何使用Python最新技术栈构建一个高效的抖音话题挑战视频爬虫。我们将从环境配置开始,逐步讲解请求模拟、数据解析、反反爬策略、数据存储等关键环节,并提供完整的代码实现。本文适合有一定Python基础的开发者学习高级网络爬虫技术。关键词:Python爬虫、抖音API、话题挑战、视频爬取、反反爬本文详细介绍了如何使用Python最新技术栈构建抖音话题挑战视频爬虫。我们从基础请求开始,逐步实现了数据解析、反反爬策略、数据存储等核心功能,并探讨了分布式和增量爬取等高级主题。更智能的反反爬策略。

2201_76125261的博客 1744

华为Ascend_toolkit在x86ubuntu安装失败报错。[WARNING] driver package is not installed. If you install in docker

这个报错发生在交叉编译配置Ascend_toolkit环境时,安装Ascend_toolkit安装包的时候发生。[Y/N]Y。

anananajiushiwo的博客 1019

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: 并行程序设计基础——并行I/O(2)
下一篇: 并行程序设计基础——并行I/O(4)
猿核试Bug愁
博客等级 码龄7年 2593粉丝 190原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猿核试Bug愁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值