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

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

目录

一、概述

1、按照读写定位分类

2、按照同步机制分类

3、按照参加读写操作的进程的限制分类

二、并行文件管理的基本操作

1、MPI_FILE_OPNE

2、MPI_FILE_CLOSE

3、MPI_FILE_DELETE

4、MPI_FILE_SET_SIZE

5、MPI_FILE_PREALLOCATE

6、MPI_FILE_GET_SIZE

7、MPI_FILE_GET_GROUP

8、MPI_FILE_GET_AMODE

9、MPI_FILE_SET_INFO

10、MPI_FILE_GET_INFO


        MPI-2与MPI-1另一个重要的区别是MPI-2支持并行I/O,因为许多应用中I/O是不可缺少的部分,所以MPI-2在大量实践基础上,提出一套并行I/O的标准接口。接下来我们将通过几节内容对MPI中并行I/O进行介绍,以实现对文件的各种并行操作和管理。

一、概述

1、按照读写定位分类

        MPI-2提供了丰富的并行文件I/O调用,根据读写定位方法的不同,可以分为三种:

        ①指定显式的偏移。这种调用没有文件指针的概念,每次读写操作都必须明确指定读写文件的位置;

        ②独立的文件指针。这种方式的文件操作不需要指定读写的位置,每一个进程都有一个相互独立的文件指针,读写的起始位置就是当前指针的位置,读写完成后文件指针自动移到下一个有效数据的位置。这种方式的文件操作,需要每一个进程都定义各自在文件中的“视口”,视口数据是文件连续或不连续的一部分,各个进程对视口的操作,就如同是对一个打开的独立的连续文件的操作一样;

        ③共享文件指针。这种情况下,每一个进程对文件的操作,都是从当前共享文件指针的位置开始,操作结束后共享文件指针自动转移到下一位置,共享指针位置的变化对所有进程都是可见的,各进程使用的是同一个文件指针,任何一个进程对文件的读写操作都会引起其它所有进程文件指针的改变。

2、按照同步机制分类

        根据同步机制的不同,对文件的操作又可以分为阻塞非阻塞两大类。

        ①阻塞调用。对文件的读写调用返回后,可以使用读入数据缓冲区中的数据或者文件已经被更新,但是对于非阻塞文件读写,如果非阻塞通信类似,读写调用的返回并不意味着读写调用的完成,需要调用相应的完成语句来保证读写操作的完成;

       ②非阻塞调用。进一步细分为单步法两步法,单步法的含义是指MPI只提供非阻塞文件读写的开始操作,不提供完成操作。对于两步法,MPI明确提供非阻塞文件读写的开始和完成语句,将对文件读写操作的调用分为明显的两步。对于单步法,其实也需要完成调用,只不过它使用的是和非阻塞通信一样的MPI_WAIT之类的完成方式,而不是特别的对文件操作的完成方式。只有对组读写,才可以使用两步法。

3、按照参加读写操作的进程的限制分类

        根据对参加读写操作的进程的限制,可以分为独立读写组读写。所谓独立读写,就是单个进程可以实现的读写操作,不需要其它进程的参与;对于组读写,则要求所有的进程都必须执行相同的读写调用,但是提供给该调用的读写参数可以不同。

        以上任意一种读写定位方式,任意一种同步机制,都有独立读写和组读写的调用。但是,在MPI-2中,对于非阻塞的组读写,只有两步法,不存在单步法调用。这是因为对于非阻塞的组调用,使用MPI提供的将读写明显分开的两步法,可以提供给MPI更多的优化机会,有利于对非阻塞组读写的高效实现。

        注意:在文件的各种组调用中,并没有给出进程组或通信域,该调用所适用的进程组是由调用使用的文件句柄决定的。因为文件打开时,需要给出通信域参数&#

相关文章:

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

目录 一、概述 1、按照读写定位分类 2、按照同步机制分类 3、按照参加读写操作的进程的限制分类 二、并行文件管理的基本操作 1、MPI_FILE_OPNE 2、MPI_FILE_CLOSE 3、MPI_FILE_DELETE 4、MPI_FILE_SET_SIZE 5、MPI_FILE_PREALLOCATE 6、MPI_FILE_GET_SIZE 7、MPI_…...

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance this;this.data []…...

JVM系列(十) -垃圾收集器介绍

一、摘要 在之前的几篇文章中,我们介绍了 JVM 内部布局、对象的创建过程、运行期的相关优化手段以及垃圾对象的回收算法等相关知识。 今天通过这篇文章,结合之前的知识,我们一起来了解一下 JVM 中的垃圾收集器。 二、垃圾收集器 如果说收集算法是内存回收的方法论,那么…...

项目实战 ---- 商用落地视频搜索系统(9)---UI与上层service的交互优化

目录 背景 第一次优化(UI优化) 优化前UI 优化方向与问题 代码 修改效果 第二次优化(整合优化) 优化方向与问题 代码 优化效果 第三次优化(js层优化) 优化方向与问题 代码 优化效果 第四次优化(UI逻辑再优化) 优化方向与问题 代码 优化效果 第五次优化(纯U…...

媒体服务器软件BUG说明及改进方案

媒体服务器软件BUG说明及改进方案 一、BUG描述二、问题分析三、改进方案四、实施计划五、预期效果六、总结一、BUG描述 在当前版本的媒体服务器中,存在一个关于静音媒体流处理的问题。具体表现为:当主叫连续发送静音帧到媒体服务器时,媒体服务器并未将这些静音帧转发给被叫…...

Gitlab修改已push的历史commit信息

文章目录 一、需求 二、思路 三、修改过程 四、注意 五、参考链接 一、需求 项目组结合使用JIRA和Gitlab进行项目开发。其中,JIRA用于管理开发任务(每个任务都存在一个JIRA_ID),Gitlab用于进行代码版本管理。每次代码提交时,commit mes…...

[Linux入门]---进程替换

文章目录 1.进程替换原理2.进程替换函数2.1execl函数2.2execlp函数2.3execv函数2.4execvp函数2.5execle函数2.6execve函数2.7跨语言调用程序 3.总结 1.进程替换原理 一个程序替换的函数&#xff1a; #include <unistd.h> int execl(const char *path, const char *arg,…...

Java语言程序设计基础篇_编程练习题*18.9 (以逆序输出一个字符串中的字符)

目录 题目&#xff1a;*18.9 (以逆序输出一个字符串中的字符) 代码示例 输出结果 题目&#xff1a;*18.9 (以逆序输出一个字符串中的字符) 编写一个递归方法&#xff0c;使用下面的方法头在控制台上以逆序显示一个字符串: public static void reverseDisplay(String value…...

IT英语每日积累

IT词汇积累 前言今日学习1. be synonymous with2.handle something3.modify4.optionally5. generate6,sandby7.interrupt8.emphasize9.croodinate10.splitting and merging11.shard12.per13.consecutively14.synchronization15。unbounded 前言 这里给出的是本人在生活和学习中…...

QML学习二:Qt启用qml文件实时预览编辑,以及打印日志到控制台

开发环境:Qt 6.5.3 LTS 1、Qt 6.5.3 LTS 2、Pyside6 3、Python 3.11.4 效果如下,右侧更改的代码可以实时反映到左侧的设计器中。 Qt启用qml文件实时预览编辑,以及打印日志到控制台 一、打开Qt Designer插件二、qml和Python文件打印输出到控制台总结Qt Creator版本如下:…...

JVM面试真题总结(四)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 列举常用的垃圾收集器&#xff0c;并简要说明其特点 Serial收集器…...

P1352 没有上司的舞会

~~~~~ P1352 没有上司的舞会 ~~~~~ 总题单链接 思路 ~~~~~ 设 d p [ u ] [ [ 0 / 1 ] dp[u][[0/1] dp[u][[0/1] 表示第 u u u 个点 [ 不选 / 选 ] [不选/选] [不选/选] 的最大值。 ~~~~~ d p [ u ] [ 1 ] dp[u][1] dp[u][1] 只能用 d p [ v ] [ 0 ] dp[v][0] dp[v][0] 来更…...

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来&#xff0c;一站式有声阅读平台听书系统 &#x1f31f; 开篇&#xff1a;遇见未来&#xff0c;从“智听”开始 在这个快节奏的时代&#xff0c;你是否渴望在忙碌的间隙&#xff0c;找到一片属于自己的宁静角落&#xff1f;是否梦想着能随时随地&#xff0c;沉浸在知…...

2024 第七届“巅峰极客”网络安全技能挑战赛初赛 Web方向 题解WirteUp

EncirclingGame 题目描述&#xff1a;A simple game, enjoy it and get the flag when you complete it. 开题&#xff0c;前端小游戏&#xff0c;红点出不去就行 直接玩通关了 看看如何不玩也能拿到flag&#xff0c;flag存储在后端php文件内&#xff0c;前端找不到。 看一下…...

论文阅读笔记《面向集群协同的两点相对定位技术》

邓廷祥,任鹏,程甲,等.面向集群协同的两点相对定位技术[J].兵工学报,2023,44(S2):22-34. 摘要 无人机精确定位的三个难题&#xff1a; GNSS难以提供稳定准确的位置信息、难以部署辅助锚点、传统的相对定位方法大多存在节点数量限制。 本文针对上述问题&#xff0c;提出了一种GN…...

RK3566/RK3568 Android 11 无操作自动隐藏导航栏、底部上拉显示导航栏

概述 总目录:RK3566/RK3568 Android 11 定制大全 在系统服务中增加无操作自动隐藏导航栏方法,在上层app动态调用无操作自动隐藏导航栏方法,系统会在5秒无操作后自动隐藏导航栏,隐藏导航栏后从底部上拉可显示导航栏,设备关机和重启后也能继续生效。 创建全局变量 1.定义…...

四、Django模型

Model Model (模型) 简而言之即数据模型&#xff0c;是一个Django应用的核心。模型不是数据本身&#xff08;比如数据表里的数据), 而是抽象的描述数据的构成和逻辑关系。 每个Django的模型(model)实际上是个类&#xff0c;继承了models.Model。每个Model应该包括属性(字段)&…...

Telephony SS

1、补充业务概述 SS是补充服务的缩写,它包含呼叫转移、呼叫限制、呼叫等待、线路识别(CLIR)等。在IMS(IP多媒体子系统)网络中,它使用XCAP(XML配置访问协议)协议通过UT接口操纵SS数据。该协议允许授权用户在连接到IMS或连接到非IMS网络(例如公共互联网)时操纵与服务相…...

【软考】希尔排序算法分析

目录 1. c代码2. 运行截图3. 运行解析 1. c代码 #include <stdio.h> #include <stdlib.h> void shellSort(int data[], int n){// 划分的数组&#xff0c;例如8个数则为[4, 2, 1]int *delta;int k;// i控制delta的轮次int i;// 临时变量&#xff0c;换值int temp;…...

C++(一)----C++基础

1.C的发展史 C语言诞生后&#xff0c;很快普及使用&#xff0c;但是随着编程规模增大且越来越复杂&#xff0c;并且需要高度的抽象和建模时&#xff0c;C语言的诸多短板便表现了出来&#xff0c;为了解决软件危机&#xff0c;上世纪八十年代&#xff0c;计算机界提出了oop&…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

毫米波雷达基础理论(3D+4D)

3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文&#xff1a; 一文入门汽车毫米波雷达基本原理 &#xff1a;https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...

日常一水C

多态 言简意赅&#xff1a;就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过&#xff0c;当子类和父类的函数名相同时&#xff0c;会隐藏父类的同名函数转而调用子类的同名函数&#xff0c;如果要调用父类的同名函数&#xff0c;那么就需要对父类进行引用&#…...

tomcat指定使用的jdk版本

说明 有时候需要对tomcat配置指定的jdk版本号&#xff0c;此时&#xff0c;我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...

Canal环境搭建并实现和ES数据同步

作者&#xff1a;田超凡 日期&#xff1a;2025年6月7日 Canal安装&#xff0c;启动端口11111、8082&#xff1a; 安装canal-deployer服务端&#xff1a; https://github.com/alibaba/canal/releases/1.1.7/canal.deployer-1.1.7.tar.gz cd /opt/homebrew/etc mkdir canal…...

高端性能封装正在突破性能壁垒,其芯片集成技术助力人工智能革命。

2024 年&#xff0c;高端封装市场规模为 80 亿美元&#xff0c;预计到 2030 年将超过 280 亿美元&#xff0c;2024-2030 年复合年增长率为 23%。 细分到各个终端市场&#xff0c;最大的高端性能封装市场是“电信和基础设施”&#xff0c;2024 年该市场创造了超过 67% 的收入。…...