《并行计算的编程模型》一1.6 聚合通信

简介: 本节书摘来华章计算机《并行计算的编程模型》一书中的第1章 ,第1节, [(美)帕万·巴拉吉(Pavan Balaji)编著;张云泉等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.6 聚合通信

除了进程间点对点的消息通信,MPI还提供大量针对一组进程间通信的函数,基于一组进程的通信称之为聚合通信。聚合通信的进程都需要调用相同的聚合通信函数。通过大量的聚合通信算法研究,聚合通信采用具有高性能的聚合通信实现算法[73,270,284],因此该通信方式在并行编程中广泛应用。

screenshot

聚合通信有以下三种类型:
(1)同步。MPI_Barrier函数用于同步通信域内的所有进程,执行到MPI_Barrier函数的进程必须等待,直到所有进程均执行到MPI_Barrier函数,所有进程才会进入下一步程序操作。
(2)数据迁移。MPI提供大量通用的数据迁移函数。例如,MPI_Bcast函数将根进程中的数据发送到通信域中的其他进程上。MPI_Scatter函数将数据缓冲区中的数据分发到通信域中其他进程上。MPI_Gather函数功能与MPI_Scatter函数相反,该函数将其他进程上的数据收集到根进程上。MPI_Allgather函数功能与MPI_Gather函数类似,区别在于MPI_Allgather函数除了根进程外,通信域中其他进程也收集相同的数据。MPI_Alltoall函数实现组内进程数据全交换,每一个进程可向其他进程发送不同的数据,也可接收其他进程发送的数据。上述聚合通信函数如图1-6所示。除了基本的聚合通信函数外,MPI还提供其他聚合通信函数,从而允许用户向每个进程发送不等数量的数据。
(3)聚合运算。MPI提供归约和扫描操作,实现数据算术运算,例如求解最小值和最大值、求和、逻辑与运算以及其他用户自定义的计算算法。MPI_Reduce函数提供归约操作,结果保存在根进程中。MPI_Allreduce函数功能类似于MPI_Reduce函数,但结果保存在所有进程中。MPI_Scan函数对于每一个进程i,对进程0,…,i上的数据进行归约操作,结果存放到进程i上。MPI_Exscan函数功能类似于MPI_Scan函数,区别在于MPI_Exscan函数不对自身进程上的数据进行归约操作。MPI_Reduce_scatter函数同时包含归约和分发两项功能。
screenshot

图1-7 一种比图1-2中代码更加高效的数据发送通信方式。MPI_Reduce函数用于对所有进程上的数据进行求和操作,并将结果保存在0号进程上
所有聚合通信函数均提供阻塞和非阻塞两种通信方式。上述聚合通信函数均为阻塞式通信,只有通信完成后,聚合通信函数才返回。非阻塞式通信函数在名称中会加入字母“I”,例如MPI_Ibcast或者MPI_Ireduce。非阻塞聚合通信函数初始化通信后立即返回,无需等待通信操作完成。用户通过调用测试或者等待函数,获取通信操作完成情况或者等待通信操作完成。MPI提供大量计算和通信重叠的聚合通信函数,例如MPI_Ibarrier等函数。
在图1-7中,通过MPI_Bcast函数,实现将0号进程上相同的数据广播到其他进程上。同时,通过MPI_Reduce函数,实现将所有进程上的数据进行求和运算(MPI_SUM为MPI提供预定义的求和操作),并将结果保存在0号进程上。

相关文章
|
6月前
|
人工智能 自然语言处理 安全
OpenClaw 与飞书绑定实操教程:企业IM接入AI服务一步到位
本文详解OpenClaw与飞书集成实操:从飞书开放平台获取App ID/Secret,到OpenClaw后台配置绑定,全程图文指引;涵盖常见报错排查与安全提示,助力企业5分钟完成AI服务接入,实现IM内即用智能问答、内容生成等能力。
|
4月前
|
数据采集 人工智能 物联网
从入门到精通:提示工程、RAG、微调——大语言模型LLM应用开发的三层技术栈详解
2026年,大语言模型(LLM)已成为AI应用开发的核心基础设施,但很多开发者仍陷入“只会调用API”的困境:要么用提示词解决所有问题导致效果不稳定,要么盲目微调浪费算力,要么误用RAG增加系统复杂度。本质上,LLM应用开发并非单一技术的选择,而是**提示工程、RAG、微调**三层能力的分层构建与组合应用——提示工程解决“怎么问”,RAG解决“问什么”,微调解决“模型本身的认知边界”。三者分别对应交互层、知识层、能力层,从低成本快速迭代到深度定制优化,形成完整的LLM应用开发技术栈。本文从核心原理、适用场景、实战代码、选型决策四大维度,全面解析这三种技术的差异与协同,帮助开发者精准选型、高效落
492 0
|
人工智能 搜索推荐 算法
AI提示词的四种学习姿势:让你的AI像朋友一样懂你
想象一下,你有个超级聪明的AI朋友,但它不知道你想要什么。本文用最轻松的方式告诉你,如何通过四种不同的'教学姿势',让AI秒懂你的需求,从完全不懂到心有灵犀,一步步成为你的最佳拍档!
657 6
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
1033 6
|
人工智能 机器人 测试技术
从支撑英伟达GR00T到登陆魔搭社区,智元AgiBot World打通具身智能全球数据生态
备受关注的 AgiBot World 百万真机数据集正式登陆国内顶级 AI开源社区——魔搭社区。该数据集由智元机器人开发,此前已在GitHub 和 Hugging Face 等国际平台开源并获得了业界的积极反响。此举是智元机器人布局国内AI生态的重要一步,国内开发者和研究者将能够更加顺畅地接入AgiBot World全套资源,降低数据获取和工具使用门槛,推动具身智能及机器人技术在国内的普及与发展。
567 0
|
存储 Kubernetes API
Kubernetes学习-核心概念篇(三) 核心概念和专业术语
Kubernetes学习-核心概念篇(三) 核心概念和专业术语
Kubernetes学习-核心概念篇(三) 核心概念和专业术语
|
SQL 安全 数据库
南大通用GBase 8s 查看用户权限查询指南
本文详细介绍了南大通用GBase 8s数据库中用户权限的查看与管理方法,涵盖数据库级别和表级别权限的定义、查看及赋权操作,以及相关系统表的使用,旨在帮助数据库管理员有效维护数据访问安全。
|
Unix Linux Shell
linux入门!
本文档介绍了Linux系统入门的基础知识,包括操作系统概述、CentOS系统的安装与远程连接、文件操作、目录结构、用户和用户组管理、权限管理、Shell基础、输入输出、压缩打包、文件传输、软件安装、文件查找、进程管理、定时任务和服务管理等内容。重点讲解了常见的命令和操作技巧,帮助初学者快速掌握Linux系统的基本使用方法。
1092 3
|
人工智能 PyTorch 算法框架/工具
AI计算机视觉笔记十四:YOLOV5环境搭建及测试全过程
本文详细记录了在Windows 10环境下从零开始搭建yolov5环境并进行测试的全过程,涵盖环境配置、依赖安装及模型测试等关键步骤。文章首先介绍了所需环境(Python 3.8、yolov5-5.0),接着详细说明了如何使用Miniconda3创建与激活虚拟环境,并通过具体命令演示了如何下载安装yolov5及相关依赖库。最后,通过一系列命令展示了如何下载预训练模型并对示例图像进行目标检测,同时解决了一些常见错误。适合初学者跟随实践。如需转载,请注明原文出处。
1997 0
|
Ubuntu 关系型数据库 PostgreSQL
部署harbor
在Ubuntu 22.04 LTS环境下,部署Harbor私有仓库的步骤包括:确保已安装Docker(版本24.0.6),参考官方v2.5.3安装指南,注意避免在NFS4挂载磁盘上部署以防止PostgreSQL相关问题。首先,生成SSL证书,然后更新Docker配置并重启服务。解压并配置Harbor离线安装包,修改`harbor.yml`,执行`prepare`和`install.sh`脚本,最后将Harbor设置为系统服务。
993 0