当前位置: 首页 > news >正文

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

目录

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

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对文件的所有操作都是对其视口的操作。

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

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

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

        ③external32:该数据表示是为了彻底解决任何不同类型机器之间的数

相关文章:

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

目录 一、多视口的并行文件并行读写 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_…...

性能测试-jmeter脚本录制(十五)

一、jmeter脚本录制&#xff08;不推荐&#xff09;简介&#xff1a; 二、jmeter脚本录制步骤 1、添加代理服务器和线程组 2、配置http代理服务器的端口和目标线程组 3修改本机浏览器代理 4、点击启动 5、每次操作页面前&#xff0c;修改提示文字...

关系型数据库 - MySQL I

MySQL 数据库 MySQL 是一种关系型数据库。开源免费&#xff0c;并且方便扩展。在 Java 开发中常用于保存和管理数据。默认端口号 3306。 MySQL 数据库主要分为 Server 和存储引擎两部分&#xff0c;现在最常用的存储引擎是 InnoDB。 指令执行过程 MySQL 数据库接收到用户指令…...

解锁AI写作新境界:5款工具让你的论文创作事半功倍

在这个数字化飞速发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;已经不再是科幻小说中的幻想&#xff0c;而是实实在在地融入了我们的日常生活。特别是在学术领域&#xff0c;AI技术的介入正在改变传统的论文写作方式。你是否还在为撰写论文而熬夜苦战&#xff1f;…...

一文读懂多组学联合分析产品在医学领域的应用

疾病的发生和发展通常涉及多个层面的生物学过程&#xff0c;包括基因表达、蛋白质功能、代谢物变化等。传统的单一组学研究只能提供某一层面的信息&#xff0c;而多组学关联分析能够综合多个层面的数据&#xff0c;提供更全面、更深入的疾病理解。例如&#xff0c;通过分析患者…...

js react 笔记 2

起因&#xff0c; 目的: 记录一些 js, react, css 1. 生成一个随机的 uuid // 需要先安装 crypto 模块 const { randomUUID } require(crypto);const uuid randomUUID(); console.log(uuid); // 输出类似 9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d 2. 使用 props, 传递参数…...

快速使用react 全局状态管理工具--redux

redux Redux 是 JavaScript 应用中管理应用状态的工具&#xff0c;特别适用于复杂的、需要共享状态的中大型应用。Redux 的核心思想是将应用的所有状态存储在一个单一的、不可变的状态树&#xff08;state tree&#xff09;中&#xff0c;状态只能通过触发特定的 action 来更新…...

活动系统开发之采用设计模式与非设计模式的区别-非设计模式

1、父类Base.php <?php /*** 初始化控制器* User: Administrator* Date: 2022/9/26* Time: 18:00*/ declare (strict_types 1); namespace app\controller; use app\model\common\Token; use app\BaseController; use app\BaseError; use OpenSSL\Encrypt; use app\model…...

JVM面试(六)垃圾收集器

目录 概述STW收集器的并发和并行 Serial收集器ParNew收集器Parallel Scavenge收集器Serial Old收集器Parallel Old收集器CMS收集器Garbage First&#xff08;G1&#xff09;收集器 概述 上一章我们分析了垃圾收集算法&#xff0c;那这一章我们来认识一下这些垃圾收集器是如何运…...

固态硬盘装系统有必要分区吗?

前言 现在的新电脑有哪一台是不使用固态硬盘的呢&#xff1f;这个好像很少很少了…… 有个朋友买了一台新的笔记本电脑&#xff0c;开机之后&#xff0c;电脑只有一个分区&#xff08;系统C盘500GB&#xff09;。这时候她想要给笔记本分区…… 这个真的有必要分区吗&#xf…...

网络安全架构师

网络安全架构师负责构建全面的安全框架&#xff0c;以保护组织的数字资产免受侵害&#xff0c;确保组织在数字化转型的同时维持强大的安全防护。 摩根大通的网络安全运营副总裁兼安全架构总监Lester Nichols强调&#xff0c;成为网络安全架构师对现代企业至关重要&#xff0c;…...

如何本地部署Ganache并使用内网穿透配置公网地址远程连接测试网络

目录 前言 1. 安装Ganache 2. 安装cpolar 3. 创建公网地址 4. 公网访问连接 5. 固定公网地址 作者简介&#xff1a; 懒大王敲代码&#xff0c;计算机专业应届生 今天给大家聊聊如何本地部署Ganache并使用内网穿透配置公网地址远程连接测试网络&#xff0c;欢迎大家点赞 &a…...

算法岗/开发岗 实况

深信服算法岗一面 第一题 树的直径有哪些解法 两次dfs和树形dp&#xff0c;讲了一下树形dp的思路 因为我的简历写的比较少&#xff0c;所以面试官问我一些个人信息和擅长哪方面。 我说&#xff1a;ACM大一下打到大三&#xff0c;然后去考研。dp写的多一点&#xff0c;还有思维…...

Nginx跨域运行案例:云台控制http请求,通过 http server 代理转发功能,实现跨域运行。(基于大华摄像头WEB无插件开发包)

文章目录 引言I 跨域运行案例开发资源测试/生产环境,Nginx代理转发,实现跨域运行本机开发运行II nginx的location指令Nginx配置中, 获取自定义请求header头Nginx 配置中,获取URL参数引言 背景:全景监控 需求:感知站点由于云台相关操作为 http 请求,http 请求受浏览器…...

【数据分析预备】Pandas

Pandas 构建在NumPy之上&#xff0c;继承了NumPy高性能的数组计算功能&#xff0c;同时提供更多复杂精细的数据处理功能 安装 pip install pandas导入 import pandas as pdSeries 键值对列表 # 创建Series s1 pd.Series([5, 17, 3, 26, 31]) s10 5 1 17 2 3 3 26 4 31 dt…...

MATLAB-基于高斯过程回归GPR的数据回归预测

目录 目录 1 介绍 1. 1 高斯过程的基本概念 1.2 核函数&#xff08;协方差函数&#xff09; 1.3 GPR 的优点 1.4. GPR 的局限 2 运行结果 3 核心代码 1 介绍 高斯过程回归&#xff08;Gaussian Process Regression, GPR&#xff09;是一种强大的非参数贝叶斯方法&…...

欧洲国际眼科盛会,中国眼科专家周进斩获六项屈光大奖

2024年第42届欧洲白内障和屈光外科医生协会(ESCRS)大会由世界青光眼协会(WGA)、欧洲白内障和屈光外科医生协会(ESCRS)主办&#xff0c;于2024年9月6日至10日在西班牙巴塞罗那举行。 这场眼科盛会&#xff0c;汇聚了来自全球130多个国家的上万名眼科医学领域的顶尖专家、学者和临…...

MySQL——数据库的高级操作(二)用户管理(2)创建普通用户

在创建新用户之前&#xff0c;可以通过 SELECT 语句查看 mysql.user 表中有哪些用户&#xff0c;查询结果如下&#xff1a; mysql> USE mysql; Database changed mysql> SELECT Host, User, authentication_string FROM mysql.user; ----------------------------------…...

VIT论文阅读

把图片看成一个个16x16的patch堆起来的 摘要 卷积神经网络不是必备的&#xff0c;一个纯transformer表现也是非常好的 transformer&#xff1f;2500天tpu v3 介绍 大规模上预训练&#xff0c;小规模任务数据集上微调。扩大模型时候还没观察到瓶颈&#xff08;还没出现过拟合…...

Python编程入门必备:def关键字与函数参数

在Python编程中&#xff0c;函数是组织代码、实现代码复用和模块化的基础单元。通过函数&#xff0c;可以将复杂的操作封装成独立的代码块&#xff0c;提高代码的可读性和维护性。本文将详细介绍Python中函数的定义和使用&#xff0c;包括def关键字、函数参数的各种类型以及函数…...

GLM-4V-9B真实案例展示:从上传JPG到输出结构化文本的端到端演示

GLM-4V-9B真实案例展示&#xff1a;从上传JPG到输出结构化文本的端到端演示 1. 项目背景与核心价值 GLM-4V-9B作为多模态大模型的优秀代表&#xff0c;能够同时理解图像和文本信息&#xff0c;实现真正的视觉-语言交互。但在实际部署中&#xff0c;很多开发者会遇到环境兼容性…...

从DAP-Link看USB虚拟串口设计:手把手教你给STM32F407添加双通道调试功能

从DAP-Link看USB虚拟串口设计&#xff1a;手把手教你给STM32F407添加双通道调试功能 在嵌入式开发中&#xff0c;调试工具的性能直接影响开发效率。传统调试器往往需要额外串口芯片&#xff0c;而现代方案如DAP-Link通过USB CDC类实现虚拟串口&#xff0c;既节省硬件成本又能提…...

AV1编解码器实战:如何在Chrome 85+和Firefox 86中启用AVIF图片支持

AV1编解码器实战&#xff1a;如何在Chrome 85和Firefox 86中启用AVIF图片支持 AVIF&#xff08;AV1 Image File Format&#xff09;作为新一代图像格式&#xff0c;凭借AV1编解码器的强大压缩能力&#xff0c;正在逐步改变Web图像分发的格局。对于追求极致性能的前端开发者而言…...

03-LlamaIndex节点解析:文本分块策略与NodeParser深度应用

03-LlamaIndex节点解析&#xff1a;文本分块策略与NodeParser深度应用 系列导航 01 核心概念与RAG处理管线02 多源数据加载与Data Connectors03 文本分块策略与NodeParser ← 当前04 向量存储与混合索引策略05 Retriever、Query Engine与Chat Engine06 Agent与Workflow编排07 多…...

ORA-22816: RETURNING子句不支持功能对比,Oracle故障修复与远程处理方案选择

ORA-22816: RETURNING子句不支持功能对比,Oracle故障修复与远程处理方案选择 最近&#xff0c;一些Oracle数据库管理员在技术论坛上提到&#xff0c;在执行涉及LOB字段的更新操作时&#xff0c;偶尔会遇到ORA-22816错误。例如&#xff0c;一位开发者在2024年5月尝试在一个大型…...

超级千问语音设计世界效果展示:听听这些用文字描述生成的惊艳语音

超级千问语音设计世界效果展示&#xff1a;听听这些用文字描述生成的惊艳语音 1. 当文字遇见声音&#xff1a;一场无需录音棚的创作革命 想象一下&#xff0c;你只需要在电脑前输入一段文字&#xff0c;再描述一种情绪——“一个在深夜电台里&#xff0c;带着沙哑嗓音和淡淡忧…...

BilibiliDown高效使用指南:解决20个核心功能难题

BilibiliDown高效使用指南&#xff1a;解决20个核心功能难题 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors/bi/Bil…...

Harmonyos应用实例228:数学文化与数学史

10. 数学文化与数学史 功能简介:展示数学发展史上的重要事件、数学家及其贡献,通过时间轴和互动展示,介绍数学文化的发展历程。支持按时期、地区筛选,帮助学生了解数学的历史背景和文化价值。 ArkTS代码: // 定义类型接口 interface Mathematician {name: stringperiod…...

Realistic Vision V5.1 虚拟摄影棚:QT开发跨平台AI图像生成桌面应用

Realistic Vision V5.1 虚拟摄影棚&#xff1a;QT开发跨平台AI图像生成桌面应用 想象一下&#xff0c;你是一位独立摄影师或内容创作者&#xff0c;脑海里有一个绝妙的画面构思——可能是晨曦中穿着复古长裙的少女&#xff0c;也可能是赛博朋克都市里的未来侦探。过去&#xf…...

腾讯地图API实战:5分钟搞定经纬度录入与地图选点功能(Vue版)

腾讯地图API实战&#xff1a;5分钟搞定经纬度录入与地图选点功能&#xff08;Vue版&#xff09; 在当今的Web开发中&#xff0c;地图功能已成为许多应用的标配需求。无论是电商平台的店铺定位&#xff0c;还是社交应用的位置分享&#xff0c;甚至是企业内部系统的区域管理&…...