基于RDMA GPUDirect技术的NCCL XCCL库体系结构效率问题疑补

基于RDMA GPUDirect技术的NCCL XCCL库体系结构效率问题疑补

文章目录

  • 基于RDMA GPUDirect技术的NCCL XCCL库体系结构效率问题疑补

2023年发布了两篇博文<<异数OS-织梦师-大禹(九)奔跑在GPU上的异数OS>> <<为何一座国产超算中心打不过8张nvidia A100计算卡?>>后收到不少业内同行的质疑,大部分质疑认为GPUDirect RDMA和NCCL在效率上已经足够,没有必要再做一个GPU上的操作系统来挑战行业惯例,所以这篇文章整理出GPUDirect RDMA NCCL的效率问题加以详细补充解释。

  1. GPUDirect RDMA 虽然不需要CPU完成DMA操作,但却需要CPU上的应用软件通过NCCL库发起和调度DMA,GPU不能独立发起DMA,因为他没有一个GPU上的操作系统,这会遇到上文中提到的CS结构的效率问题。
  2. NCCL 是MPI集合通讯库的复制,但实际上并不是复制,NCCL并不是独立运行在GPU上,因为GPU上没有操作系统,效率上不一定比CPU上的MPI库更有效率,MPI是建立在操作系统IPC基础上,它只需要CPU与CPU的IPC通讯,计算任务可以与通讯任务混合编写,通过多进程任务类型分组可以弥补覆盖通讯阻塞带来的计算效率损失,计算与IO混写一个是能降低算法复杂度,另外也能降低IO与计算任务间的延迟,这有利于L2 L3加速,而NCCL就比较复杂了,他需要CPU端应用在NCCL基础上实现一个IO延迟性能不高的类操作系统,将通讯操作独立任务化,与计算kernel分离,使用并行的stream来应对覆盖延迟效率问题,并行stream需要考虑阻塞通讯操作带来的上下文回环锁依赖问题,同时计算kernel与通讯任务分离到不同的stream还会带来不确定较大的计算延迟,这会带来类似循环雪崩的冲动迫使GPU需求更多的潜伏期缓冲内存,也因此使得任务无法有效利用GPU的 L2 加速,如果不使用并行的stream队列,则会面临CS结构的效率惩罚。
  3. NVLink的优势是缓存一致性的共享内存,这使得他能最大限度降低编程算法复杂度,使得算法表达不需要考虑通讯任务,可以利用L2加速,并且效率优化可以通过编程手段解决应对,共享内存相比NCCL还有减少内存副本减少中间缓存的作用,这可以大大降低显存开销成本,虽然GPUDirect RDMA可以建立在NVLink基础上,但GPUDirect RDMA 依赖NCCL 的情况下在效率和编程复杂度上都将面临重大挑战,这可能是Nvidia的一个扮猪吃老虎的烟雾弹战略,利用同行抄袭NCCL 的低效方案来降级掠杀同行。
  4. Roce RDMA自身存在若干问题,RDMA的pcie硬件通常不强大,并发性能也不高,在实现双边 Send Recv时,IOPS性能也不如传统千兆网卡,而双边Send Recv是实现MPI IPC的基础,很多人说RDMA 的单边read write都是做到30M,但单边操作并不能帮助实现MPI的IPC机制,因此主要用于共享内存场景,但read write的iops与NVLink宣称的40GT还有3个数量级的差距,在带宽上也存在1到2个数量级的差距,在共享内存编程模型上显然不如NVlink有竞争力。

结论:NCCL由于存在CS双惩罚情节,GPUDirect RDMA虽然有点强大,但被NCCL拖后腿,在编程复杂度以及效率上都不能替代MPI,要解决效率问题就需要在GPU上实现异数OS操作系统,利用GPUDirect RDMA实现高效率的异数OS IPC,才有望真正实现GPU上的高效MPI,当然MPI未必就很高效,毕竟MPI是通讯阻塞的,面对这个问题,使用GPU上的异数OS 流水线方案来应对通讯阻塞方案将会是更简单更有效率更可控的选择。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js手撕 | 使用css画一个三角形 使用js修改元素样式 驼峰格式与“-”格式相互转化

1.使用css画一个三角形 借助 border 实现&#xff0c;在 width 和 height 都为 0 时&#xff0c;设置 border&#xff0c;便会呈现三角形。想要哪个方向的三角形&#xff0c;设置其他三边为 透明即可。同时&#xff0c;可以通过调整不同边的宽度&#xff0c;来调整三角形的高度…

IoTDB 2025 春节值班与祝福

2025 春节快乐 瑞蛇迎吉庆&#xff0c;祥光映华年&#xff0c;2025 春节已近在眼前。社区祝福 IoTDB 的所有关注者、支持者、使用者 2025 新年快乐&#xff0c;“蛇”来运转&#xff01; IoTDB 团队的春节放假时间为 2025 年 1 月 27 日至 2 月 4 日&#xff0c;1 月 25 日、26…

React和Vue有什么区别,如何选择?

React和Vue有什么区别&#xff0c;如何选择&#xff1f; React 和 Vue 是当前最受欢迎的前端框架之一&#xff0c;两者在开发者中都有极高的声誉。它们都旨在帮助开发人员构建用户界面&#xff0c;但在实现方式和适用场景上有所不同。如果你正考虑在项目中选择 React 或 Vue&a…

poi在word中打开本地文件

poi版本 5.2.0 方法1&#xff1a;使用XWPFFieldRun&#xff08;推荐&#xff09; 比如打开当前相对路径的aaaaa.docx XWPFFieldRun run paragraph.createFieldRun();CTRPr ctrPr run.getCTR().addNewRPr();CTFonts font ctrPr.addNewRFonts();// 设置字体font.setAscii(&quo…

15_业务系统基类

创建脚本 SystemRoot.cs 因为 业务系统基类的子类 会涉及资源加载服务层ResSvc.cs 和 音乐播放服务层AudioSvc.cs 所以在业务系统基类 提取引用资源加载服务层ResSvc.cs 和 音乐播放服务层AudioSvc.cs 并调用单例初始化 using UnityEngine; // 功能 : 业务系统基类 public c…

Linux 权限管理

hello&#xff01;这里是敲代码的小董&#xff0c;很荣幸您阅读此文&#xff0c;本文只是自己在学习Linux过程中的笔记&#xff0c;如有不足&#xff0c;期待您的评论指点和关注&#xff0c;欢迎欢迎~~ ✨✨个人主页&#xff1a;敲代码的小董 &#x1f497;&#x1f497;系列专…

可以称之为“yyds”的物联网开源框架有哪几个?

有了物联网的发展&#xff0c;我们的生活似乎也变得更加“鲜活”、有趣、便捷&#xff0c;包具有科技感的。在物联网&#xff08;IoT&#xff09;领域中&#xff0c;也有许多优秀的开源框架支持设备连接、数据处理、云服务等&#xff0c;成为被用户们广泛认可的存在。以下给大家…

【25美赛A题-F题全题目解析】2025年美国大学生数学建模竞赛(MCM/ICM)解题思路|完整代码论文集合

我是Tina表姐&#xff0c;毕业于中国人民大学&#xff0c;对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在&#xff0c;我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合…

MySQL数据库基础

1、什么是数据库 存储数据用文件就可以了&#xff0c;为什么还要弄个数据库? 文件保存数据有以下几个缺点&#xff1a; 文件的安全性问题文件不利于数据查询和管理文件不利于存储海量数据文件在程序中控制不方便 数据库存储介质&#xff1a; 磁盘内存 为了解决上述问题&a…

SAP新增公司间交易的配置点---SD部分内容

1.主要参考这里的内容进行配置&#xff0c;但是还是不够的&#xff0c;还有缺失 https://blog.csdn.net/weixin_44788719/article/details/143479599 2.缺失的内容如下&#xff1a; 要配置好销售组织与对应的工厂的关系&#xff1a;例如&#xff1a;2300销售组织要维护2300工…

数据结构(四) B树/跳表

目录 1. LRU 2. B树 3. 跳表 1. LRU: 1.1 概念: 最近最少使用算法, 就是cache缓存的算法. 因为cache(位于内存和cpu之间的存储设备)是一种容量有限的缓存, 有新的数据进入就需要将原本的数据进行排出. 1.2 LRU cache实现: #include <iostream> #include <list>…

【全栈】SprintBoot+vue3迷你商城(9)

【全栈】SprintBootvue3迷你商城&#xff08;9&#xff09; 往期的文章都在这里啦&#xff0c;大家有兴趣可以看一下 后端部分&#xff1a; 【全栈】SprintBootvue3迷你商城&#xff08;1&#xff09; 【全栈】SprintBootvue3迷你商城&#xff08;2&#xff09; 【全栈】Spr…

第 25 场 蓝桥月赛

4.喜糖摆放【算法赛】 - 蓝桥云课 问题描述 在过年时&#xff0c;蓝桥村的孩子们充满活力&#xff0c;他们化身为捣蛋鬼&#xff0c;挨家挨户寻讨喜糖。他们一共收到了N颗糖&#xff0c;每颗糖的甜度各不相同&#xff0c;第i颗糖的甜度为Ai。 然而&#xff0c;如何分配这些喜…

MySQL数据库笔记——版本号机制和CAS(Compare And Swap)

大家好&#xff0c;这里是Good Note&#xff0c;关注 公主号&#xff1a;Goodnote&#xff0c;本文详细介绍乐观锁的两种实现方式&#xff1a;版本号机制和CAS&#xff08;Compare And Swap&#xff09;。 文章目录 MySQL 内置的并发控制机制MVCC&#xff08;多版本并发控制&am…

深度解析:基于Vue 3与Element Plus的学校管理系统技术实现

一、项目架构分析 1.1 技术栈全景 核心框架&#xff1a;Vue 3 TypeScript UI组件库&#xff1a;Element Plus&#xff08;含图标动态注册&#xff09; 状态管理&#xff1a;Pinia&#xff08;用户状态持久化&#xff09; 路由方案&#xff1a;Vue Router&#xff08;动态路…

想品客老师的第七天:闭包和作用域

闭包之前的内容写在这里 环境、作用域、回收 首先还是数据的回收问题&#xff0c;全局变量一般都是通过关闭页面回收的&#xff1b;而局部变量的值不用了&#xff0c;会被自动回收掉 像这种写在全局里的就不会被主动回收捏&#xff1a; let title 荷叶饭function fn() {ale…

写一个存储“网站”的网站前的分析

要创建一个能够存储自己网站内容的“网站”,通常意味着你希望有一个可以存储网站数据、文件、内容等信息的系统。为了实现这一目标,可以考虑构建一个内容管理系统(CMS),这个系统能够帮助你存储和管理网站上的内容。 图片仅供参考 以下是如何实现一个可以存储自己网站内容…

aws(学习笔记第二十六课) 使用AWS Elastic Beanstalk

aws(学习笔记第二十六课) 使用aws Elastic Beanstalk 学习内容&#xff1a; AWS Elastic Beanstalk整体架构AWS Elastic Beanstalk的hands onAWS Elastic Beanstalk部署node.js程序包练习使用AWS Elastic Beanstalk的ebcli 1. AWS Elastic Beanstalk整体架构 官方的guide AWS…

从0到1:C++ 开启游戏开发奇幻之旅(一)

目录 为什么选择 C 进行游戏开发 性能卓越 内存管理精细 跨平台兼容性强 搭建 C 游戏开发环境 集成开发环境&#xff08;IDE&#xff09; Visual Studio CLion 图形库 SDL&#xff08;Simple DirectMedia Layer&#xff09; SFML&#xff08;Simple and Fast Multim…

vim的多文件操作

[rootxxx ~]# vim aa.txt bb.txt cc.txt #多文件操作 next #下一个文件 prev #上一个文件 first #第一个文件 last #最后一个文件 快捷键: ctrlshift^ #当前和上个之间切换 说明&#xff1a;快捷键ctrlshift^&#xff0c…