《并行计算的编程模型》一1.10 MPI开发心得

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

1.10 MPI开发心得

与其他的编程方法一样,MPI编程需要了解MPI特性,只有掌握MPI编程方法的优点和缺点,才能编写高效的MPI程序。对MPI最重要的认识是MPI属于一种函数库。MPI操作需要至少调用一个或多个MPI函数,针对特别少量的数据传输,MPI编程方法的效率可能不是最高的。因此,若使用MPI编程,在每次数据通信中需传输尽可能多的数据,从而提高通信效率。
MPI支持用户构建自己的软件库。相对于在程序中调用MPI函数,利用MPI在程序中实现自定义接口的方法更好。很多应用程序采用自定义接口的方法,从而程序代码显得更加整洁。很多重要的计算库和框架均采用自定义接口的方法,如PETSc [26,229]和Trilinos [137]。在上述函数库中,很少直接调用MPI函数,即使出现MPI函数调用,一般只出现在用户代码中。
内存访问局部性对计算性能有较大影响。MPI程序基于进程运行,可帮助用户维护内存数据的局部性。该特性既是MPI的优势,有时也会成为劣势。优势在于要求用户实现数据局部性,从而提高程序运行效率。劣势在于用户必须实现内存数据局部性要求。在内存访问上实现数据局部性,尤其在缓存和主要内部存储器间,对开发高效率的并行程序非常重要。
并行程序运行性能和结果往往与期待的不同,因此采用相关工具对性能和结果进行测试是非常必要的。MPI调试接口可为程序调试和性能测试提供帮助,协助开发人员分析MPI程序[23,72,145,300]。用户也可利用MPI调试接口,分析程序性能,设计高效率的并行程序。
在使用MPI过程中,存在一些使用心得,如下所示:
(1)认真检查和使用内存缓冲区。(参考安全程序设计讨论。)
(2)避免不必要的同步操作。避免在数据通信过程中使用不必要的同步操作,例如在非阻塞式通信方式中采用等待多个非阻塞式通信操作完成的函数(例如,MPI_Waitall)。
(3)在数据通信量从少量增加到中等规模时(数据通信量大小取决于网络、CPU和MPI实现方式),建议使用连续的MPI通信,从而减少MPI通信过程中的开销。
(4)在MPI程序中,尽量采用通过MPI构造的数据类型,减少非连续数据的内存移动操作,提高MPI程序运行效率。
(5)在I/O访问中,尽量采用聚合I/O。但在采用聚合I/O过程中,需要注意文件系统限制(例如,一些文件系统不支持数据块边界对齐)。
(6)MPI_Barrier函数对程序性能有较大影响,不建议采用。在文献[252]中,提供一种自动检测不必要同步操作的方法。除非一些特殊情况,MPI_Barrier函数通常在MPI程序中很少使用,若经常使用MPI_Barrier函数则将极大影响程序性能,是一种不正确的MPI编程方法。

相关文章
|
Linux 数据安全/隐私保护
centOS 7无法连接网络详细解决办法
centOS 7无法连接网络详细解决办法
2741 0
centOS 7无法连接网络详细解决办法
|
人工智能 算法 安全
AIGEO助力企业内容传播
AIGEO是一款低成本、高效率的内容优化工具,助力企业提升曝光与转化。适配多行业,支持AI收录推荐,精准匹配用户搜索意图,合规安全,推动小微企业数字化转型。(238字)
963 99
|
9月前
|
编解码 缓存 关系型数据库
阿里云服务器2核2G、2核4G、2核8G、4核8G租用活动价格参考:适合个人和中小企业用户
阿里云个人和普通企业用户通常会选择2核2G、2核4G、2核8G、4核8G等配置,本文为大家介绍了经济型e、通用算力型u1/u2a及企业级c9i/g9i等实例类型的特点与适用场景,并分享了最新活动价格,如38元轻量应用服务器、99元经济型e云服务器等。同时还提出了高性价比配置选择建议,以供对比和选择参考。
|
存储 机器人 计算机视觉
接入了支付宝账户体系的旅客入住无人酒店解决方案
本书第一章介绍了一套复杂的无人酒店云平台系统,涵盖核心云平台、容灾备份、数据存储、旅客服务、嵌入式设备管理、远程人工坐席、综合业务处理、问题解决、智慧监控安防等多个子系统。各平台协同工作,确保从旅客入住、服务请求、智能设备控制到退房的全流程高效运作,并与外部机构实时对接,保障数据安全与应急响应。系统通过人脸识别、语音交互等技术,提供个性化服务,同时具备严格的实名验证机制,确保合规性与安全性。
1196 16
|
前端开发 安全 Go
开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:如何上传文件
GoWind Admin(风行)是企业级中后台框架,支持文件上传功能。通过集成MinIO,实现安全高效的文件管理,提供预签名URL直传与服务端中转两种模式,推荐使用减轻后端压力的直连MinIO方案,提升系统性能与安全性。
515 0
|
安全 机器人 5G
PTP同步时钟使用注意事项及场景应用
精确时间协议(PTP,IEEE1588标准)是数字化时代分布式系统中实现亚微秒级高精度时钟同步的关键技术,广泛应用于智能电网、5G通信、工业自动化和金融交易等领域。使用PTP同步时钟时需注意网络环境适配(低延迟、支持硬件时间戳)、主从时钟选择与配置(高稳定性主时钟、硬件时间戳引擎)、时间源校准与抖动抑制以及安全冗余设计。典型应用场景包括电力系统的继电保护、5G基站的纳秒级同步、工业自动化的多轴协同运动及金融交易的高频订单撮合。选型时应根据精度需求(硬件或软件PTP)、网络架构复杂性(透明时钟或边界时钟)和可靠性要求(冗余时钟源与路径)合理配置,以提升系统协同性和数据一致性。
|
机器学习/深度学习 PyTorch 调度
内部干货 | 基于华为昇腾910B算力卡的大模型部署和调优-课程讲义
近日上海,TsingtaoAI为某央企智算中心交付华为昇腾910B算力卡的大模型部署和调优课程。课程深入讲解如何在昇腾NPU上高效地训练、调优和部署PyTorch与Transformer模型,并结合实际应用场景,探索如何优化和迁移模型至昇腾NPU平台。课程涵盖从模型预训练、微调、推理与评估,到性能对比、算子适配、模型调优等一系列关键技术,帮助学员深入理解昇腾NPU的优势及其与主流深度学习框架(如PyTorch、Deepspeed、MindSpore)的结合应用。
6805 13
|
JavaScript 前端开发 Java
一文让你了解微服务契约测试
谈到微服务,大家都想到契约测试,到底什么是契约测试呢,为什么要使用契约测试呢,关于这样的文章很多,本文将结合Spring Boot让你了解微服务契约测试。
453 1
一文让你了解微服务契约测试
|
机器学习/深度学习 人工智能 监控
面向中文大模型价值观的评估与对齐研究:“给AI的100瓶毒药”并解毒,守护AI纯净之心
面向中文大模型价值观的评估与对齐研究:“给AI的100瓶毒药”并解毒,守护AI纯净之心
面向中文大模型价值观的评估与对齐研究:“给AI的100瓶毒药”并解毒,守护AI纯净之心