并行程序设计基础——组通信(2)

news2024/9/27 19:26:16

目录

一、组收集

二、全互换

三、同步

四、规约

五、预定义的归约操作


        上一节内容我们介绍了MPI组通信的基本概念和广播、收集、散发接口调用。本节我们继续介绍其余的组通信接口。

一、组收集

        MPI_GATHER是将数据收集到ROOT进程,MPI_ALLGATHER相当于每一个进程都作为ROOT执行一次MPI_GATHER调用,即每一个进程都收集了其它所有进程的数据。从参数上看,MPI_ALLGATHER和MPI_GATHER完全相同,只不过在执行效果上,对于MPI_GATHER执行结束后,只有ROOT进程的接收缓冲区有意义,MPI_ALLGATHER调用结束后所有进程的接收缓冲区都有意义,它们接收缓冲区的内容是相同的。

MPI_ALLGATHER(sendbuf, sendcount, sendtype, recvbuf, recvcount, recvtype, comm)
IN    sendbuf        发送消息缓冲区的起始地址(可选数据类型)
IN    sendcount      发送消息缓冲区的数据个数(整型)
IN    sendtype       发送消息缓冲区的数据类型(句柄)
OUT   recvbuf        接收消息缓冲区的起始地址(可选数据类型)
IN    recvcount      从其它进程接收的数据个数(整型)
IN    recvtype       接收消息缓冲区的数据类型(句柄)
IN    comm           通信域(句柄)

//c语言的说明
int MPI_Allgather(void *sendbuf, int sendcount, MPI_Datatype daatatype, void *recvbuf, int recvcount, MPI_Datatype recvtype, MPI_Comm comm)
//Fortran语言的说明
MPI_ALLGATHER(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNT, RECVTYPE, COMM, IERROR)

<type> SENDBUF(*), RECVBUF(*)
INTEGER  SENDCOUNT, SENDTYPE, RECVCOUNT, RECVTYPE, COMM, IERROR

        由MPI_ALLGATHER和MPI_GATHER的关系,可知MPI_ALLGATHER和MPI_GATHERV的关系。MPI_ALLGATHERV也是所有的进程都接收结果,而不是只有根进程接收结果。从每个进程发送的第j块数据将被每个进程接收,然后存放在各个进程接收消息缓冲区recvbuf的第j块。进程j的sendcount和sendtype的类型必须和其他所有进程的recvcounts[j]和recvtype相同。

MPI_ALLGATHERV(sendbuf, sendcount, sendtype, recvbuf, recvcounts, displs, recvtype, comm)
IN    sendbuf        发送消息缓冲区的起始地址(可选数据类型)
IN    sendcount      发送消息缓冲区的数据个数(整型)
IN    sendtype       发送消息缓冲区的数据类型(句柄)
OUT   recvbuf        接收消息缓冲区的起始地址(可选数据类型)
IN    recvcounts     从其它进程接收的数据个数,整型数组(整型)
IN    displs         接收数据的偏移,整型数组(整型)
IN    recvtype       接收消息缓冲区的数据类型(句柄)
IN    comm           通信域(句柄)

//c语言的说明
int MPI_Allgatherv(void *sendbuf, int sendcount, MPI_Datatype daatatype, void *recvbuf, int *recvcounts, int *displs, MPI_Datatype recvtype, MPI_Comm comm)
//Fortran语言的说明
MPI_ALLGATHERV(SENDBUF, SENDCOUNT, SENDTYPE, RECVBUF, RECVCOUNTS, DISPLS, RECVTYPE, COMM, IERROR)

<type> SENDBUF(*), RECVBUF(*)
INTEGER  SENDCOUNT, SENDTYPE, RECVCOUNTS(*), DISPLS(*), RECVTYPE, COMM, IERROR

        下面的程序片段实现组内每个进程都从其它进程收集100个进程,存入各自的接收缓冲区。

MPI_Comm comm;
int gsize, sendarray[100];
int *rbuf;
……

MPI_Comm_size(comm, &gsize);
rbuf = (int*)malloc(gsize*100*sizeof(int));
MPI_Allgather(sendarray, 100, MPI_INT, rbuf, 100, MPI_INT, comm);

        如果采用MPI_ALLGATHERV来实现:

MPI_Comm comm;
int gsize, sendarray[100];
int root, *rbuf, stride;
int *displs, i, *rcounts;
……

MPI_Comm_size(comm, &gsize);
rbuf = (int*)malloc(gsize*stride*sizeof(int));
displs = (int*)malloc(gsize*sizeof(int));
rcounts = (int*)malloc(gsize*sizeof(int));

for(i = 0; i < 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2067181.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity 资源 之 Photon Inventory 2 (Game Creator 2)

免费获取资源&#xff1a; 有2种方式可免费获取资源&#xff1a; 在后台回复**“UnityAssetStore**“ 或 ”Unity资源”。在Unity官方地址&#xff1a;https://assetstore.unity.com/publisher-sale &#xff0c;兑换码&#xff1a;NINJUTSUGAMES 【本周限定】 关注我每周&a…

微软 Azure 推出文本到语音虚拟人;英伟达发布 8B 小语言模型,可在 RTX 工作站部署丨 RTE 开发者日报

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE&#xff08;Real-Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

ArrayList底层扩容机制详解保姆级

我们对下面代码进行debug&#xff0c;当我们使用无参构造器时&#xff0c;也就是没用指定ArrayList的容量的时候他他是空的&#xff0c;当我们第一次添加的时候才会扩容为10&#xff0c;当容量满之后每次会以1.5倍进行扩容。 当我们new之后elementData是空的 &#xff0c;只有执…

存储数据(变量)

变量&#xff1a;专门用来存储数据的容器 let title&#xff1a;string //console.log(消息说明,打印的内容) //console.log(我说,hello world) //变量的存储和修改&#xff08;string number boolean&#xff09; //1.变量存储 //1.1 字符串 string 类型 //注意点1&#xff1a…

C语言 之 memcpy函数的内存重叠问题 及解决该问题的思路

文章目录 函数原型&#xff1a;例子&#xff1a; 解决方式整体思路如下&#xff1a; 内存重叠问题主要是使用函数memcpy的时候会发生的 函数原型&#xff1a; void * memcpy ( void * destination, const void * source, size_t num);这个函数能够在source指向的空间中拷贝nu…

基于YOLOv8的高效滑动验证码滑块缺口检测模型研究与应用

在当今互联网高速发展的时代&#xff0c;滑动验证码作为一种有效的安全验证手段&#xff0c;广泛应用于各类网站和应用中&#xff0c;以防范自动化攻击和恶意登录。然而&#xff0c;随着技术的不断进步&#xff0c;滑动验证码的破解难度也在逐渐提升。为了应对这一挑战&#xf…

Ubuntu 22.04 某次重启后nvidia-smi 失效

Ubuntu 22.04 某次重启后nvidia-smi 失效 某次重启后失效&#xff0c;遂在网上寻找答案&#xff1a; 方案一&#xff1a;使用dkms进行安装相应模块 具体的可以参考链接 dkms 但是我试了一下并不好用&#xff0c;并且报错如下&#xff1a; Building module:cleaning build a…

Stable Diffusion整合包与手动本地部署结合内网穿透远程AI绘画

文章目录 前言1. 本地部署Stable Diffusion Web UI1.1 整合包安装1.2 手动安装Stable Diffusion Web UI 2. 安装Cpolar内网穿透3. 实现公网访问Stable Diffusion Web UI4. 固定Stable Diffusion Web UI 公网地址 &#x1f4a1; 推荐 前些天发现了一个巨牛的人工智能学习网站&a…

基于STM32的温湿度采集设计

介绍 项目详情&#xff1a;通过STM32采集DHT11的数据将温湿度信息显示带LCD及虚拟串口上。 软件平台&#xff1a;keil5 基于STM32的温湿度采集设计是一个结合了硬件连接、软件编程以及数据处理的综合项目。以下是对该设计的详细介绍&#xff1a; 一、设计背景与意义 温湿度…

淘宝(天猫)商品详情数据接口在自有电商平台的应用!

在电商市场的日益成熟下&#xff0c;越来越多的电商参与者上线了自主研发的电商平台。这主要是因为&#xff0c;在电商销售中&#xff0c;品牌在自有电商平台售卖商品的优势颇多&#xff1a; 自有的电商平台能够赋予品牌更大的灵活性和自由度等&#xff0c;品牌商品销售时无需…

【网络编程】第十一章 数据链路层 - 以太网(MAC+MTU+ARP+MSS+RARP)

文章目录 重点链路层以太网MAC帧格式碰撞域MAC地址MAC地址和IP地址 MTU-最大传输单元MTU 对 IP 的影响MTU 对 UDP 的影响MTU 对 TCP 的影响-MSS ARP协议ARP协议的工作流程ARP请求的过程ARP应答的过程 ARP 缓存中间人攻击 RARP协议 重点 数据链路层的作用&#xff1a;两个设备 …

博物馆地图导览:利用GIS与蓝牙定位技术,融合语音解说功能

引言 亲爱的技术员、开发者朋友们&#xff0c;随着科技的不断进步&#xff0c;博物馆等文化场所的导览方式也在不断创新。今天&#xff0c;我将为大家介绍我们的新产品——博物馆地图导览系统&#xff0c;该系统集成了GIS&#xff08;地理信息系统&#xff09;、蓝牙定位技术以…

PHP反序列化一

1.序列化/反序列化 序列化:对象转化为字节流 反序列化:字节流转化为对象 二者相互结合&#xff0c;可以轻松的存储和传输数据&#xff0c;使程序更具维护性 2.反序列化漏洞 原因是程序没有对用户输入的反序列化字符串进行检测&#xff0c;导致反序列化过程可以被恶意控制&…

Heygen注册不了?试试这两种方法!

随着数字媒体发展&#xff0c;视频内容已成为传播信息的重要手段。然而&#xff0c;高质量的视频制作往往需要专业的技术知识和昂贵的制作成本。HeyGen平台&#xff0c;正是打破这一局限的创新工具。它不仅为视频创作者提供了一个全新的创作空间&#xff0c;更能极大程度地降低…

minio使用与注解事务管理

目录 一、minio启动 1、创建文件夹 2、cmd启动 3、查看端口地址以及密码 二、minio使用步骤 1、创建bucket&#xff0c;并且把Access Policy设置成public 2、代码 三、注解事务管理 一、minio启动 1、创建文件夹 2、cmd启动 3、查看端口地址以及密码 二、minio使用步…

uni-app开发日志:实现无限层级树形分类页面,通过schema2code生成代码并在此基础上完善修改list、add和edit页面

本文中省略很多开发说明&#xff0c;可能需有一定uniapp的实战基础的朋友才能看明白。 schema2code 生成的无限级分类页面只提供超简易版的功能&#xff0c;没有层级选择&#xff0c;只能自己填入父类ID&#xff0c;列表的时候也是全部显示&#xff0c;没有层级关系&#xff0c…

闲置物品交易平台网站商城-计算机毕设Java|springboot实战项目

&#x1f393; 作者&#xff1a;计算机毕设小月哥 | 软件开发专家 &#x1f5a5;️ 简介&#xff1a;8年计算机软件程序开发经验。精通Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等技术栈。 &#x1f6e0;️ 专业服务 &#x1f6e0;️ 需求定制化开发源码提…

WIFI 频段及信道简介

一、WiFi 三频AP规划信道时&#xff0c;建议分别采用2.4G、5.2G、5.8G频段可用信道。 2.4G频段&#xff1b;5.2G频段&#xff1b;5.8G频段。 1、中国5G WiFi频段 5.8GHz频段&#xff0c;中国开放只有149、153、157、161、165这5个信道&#xff1b; 其中可支持一组80MHz信道…

Linux 软件编程 数据库与网页

sqlite3数据库操作效率&#xff1a; 1.增加事务机制 2.关闭数据库磁盘同步写入 3.使用预处理SQL语句机制实现提升数据库效率 事务机制&#xff1a; 1.可以提高sqlite处理数据的效率 2.确保数据的一致性 关闭数据库中写同步机制&#xff1a; 在…

文献阅读:单细胞分辨率下小鼠大脑衰老的分子和空间特征

文献介绍 文献题目&#xff1a; Molecular and spatial signatures of mouse brain aging at single-cell resolution 研究团队&#xff1a; 庄小威&#xff08;美国哈佛大学&#xff09;、Catherine Dulac&#xff08;美国哈佛大学&#xff09; 发表时间&#xff1a; 2022-12…