nccl
文章平均质量分 91
KIDGINBROOK
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
NVIDIA NCCL 源码学习(十六)- nccl的ibgda(GIN)
2.28的nccl发布之后,也支持了最近很火的ibgda,nccl中称ibgda为GIN,即GPU-Initiated Networking,这节我们看下nccl是怎么做的。原创 2025-10-30 21:24:07 · 1357 阅读 · 0 评论 -
NVIDIA NCCL 源码学习(十五)- Symmetric Memory
最近nccl引入了Symmetric Memory的特性,本质和nvshmem的对称内存一样,用户可以像用nvshmem一样使用nccl暴露出来的device接口写通信算子了。原创 2025-10-23 16:33:22 · 1275 阅读 · 1 评论 -
NVIDIA NCCL 源码学习(十四)- NVLink SHARP
上节我们介绍了IB SHARP的工作原理,进一步的,英伟达在Hopper架构机器中引入了第三代NVSwitch,就像机间IB SHARP一样,机内可以通过NVSwitch执行NVLink SHARP,简称nvls,这节我们会介绍下NVLink SHARP如何工作的。原创 2024-04-18 17:43:31 · 10895 阅读 · 50 评论 -
NVIDIA NCCL 源码学习(十三)- IB SHARP
因此基于这一点,mellanox提出了SHARP,将计算offload到了IB switch,每个节点只需要发送一次数据,这块数据会被交换机完成规约,然后每个节点再接收一次就得到了完整结果。原创 2024-03-20 18:25:23 · 7038 阅读 · 13 评论 -
NVIDIA NCCL 源码学习(十二)- double binary tree
上节我们以ring allreduce为例看到了集合通信的过程,但是随着训练任务中使用的gpu个数的扩展,ring allreduce的延迟会线性增长,为了解决这个问题,NCCL引入了tree算法,即double binary tree。原创 2023-12-22 16:56:34 · 9500 阅读 · 37 评论 -
NVIDIA NCCL 源码学习(十一)- ring allreduce
之前的章节里我们看到了nccl send/recv通信的过程,本节我们以ring allreduce为例看下集合通信的过程。整体执行流程和send/recv很像,所以对于相似的流程只做简单介绍,主要介绍ring allreduce自己特有内容。原创 2023-10-20 19:21:55 · 14012 阅读 · 63 评论 -
NVIDIA NCCL 源码学习(十)- 多机间ncclSend和ncclRecv的过程
通信由kernel和proxy线程协调完成,send端kernel负责将数据从input搬运到buf,proxy线程负责将buf中数据通过网络发送给recv端,kernel和proxy间通过队列实现生产者消费者模式,send端通过rdma send发送数据,和recv端通过队列实现生产者消费者模式,队列位于send端,recv端每次下发一个wr到rq之后会执行rdma write通知send端原创 2023-06-01 19:33:30 · 14032 阅读 · 104 评论 -
NVIDIA NCCL 源码学习(九)- 单机内ncclSend和ncclRecv的过程
上节介绍了通信链路的建立过程,本节介绍下单机内部ncclSend和ncclRecv的运行过程。单机内的通信都是通过kernel来完成的,所以整个通信的过程可以分为两步,第一步是准备kernel相关的参数,第二步是实际执行kernel的过程。原创 2022-12-27 15:21:56 · 19415 阅读 · 75 评论 -
NVIDIA NCCL 源码学习(八)- 数据通信链路transport的建立
上节以ringGraph为例介绍了机器间channel的连接过程,现在环里每个rank都知道了从哪个rank接收数据以及将数据发送给哪个rank,本节具体介绍下P2P和rdma NET场景下数据通信链路的建立过程。原创 2022-12-12 11:00:32 · 13374 阅读 · 38 评论 -
NVIDIA NCCL 源码学习(七)- 机器间channel连接
上节中完成了单机内部的channel搜索,仍然以ringGraph为例的话,相当于在单台机器内部搜索出来了一系列的环,接下来需要将机器之间的环连接起来。原创 2022-12-07 18:37:17 · 9075 阅读 · 5 评论 -
NVIDIA NCCL 源码学习(六)- channel搜索
nccl中channel的概念表示一个通信路径,为了更好的利用带宽和网卡,以及同一块数据可以通过多个channel并发通信,另外后续可以看到一个channel对应了一个GPU SM,所以基于这些原因,nccl会使用多channel,搜索的过程就是搜索出来一组channel。原创 2022-12-01 17:47:02 · 10725 阅读 · 30 评论 -
NVIDIA NCCL 源码学习(五)- 路径计算
为了方便之后的搜索channel,接下来NCCL会计算GPU和NIC节点到其他任意节点之间的最优路径原创 2022-11-15 20:36:57 · 8616 阅读 · 23 评论 -
NVIDIA NCCL 源码学习(四)- 建图过程
上次分析到nccl对机器PCI系统进行拓扑分析的过程,产出的结果为xml格式,接下来,nccl会根据这个xml进图的建立过程以便之后进行路径搜索。原创 2022-10-26 17:10:28 · 8911 阅读 · 8 评论 -
NVIDIA NCCL 源码学习(三)- 机器内拓扑分析
上节介绍到所有节点执行了bootstrap网络连接的建立,接下来介绍下拓扑分析。由于gpu机器架构是多种多样的,一台机器上可能有多个网卡,多个gpu卡,卡间连接也各不相同,因此需要对机器内设备连接拓扑进行分析以达到各种拓扑结构下性能都尽可能的好。原创 2022-09-28 16:03:42 · 11157 阅读 · 17 评论 -
NVIDIA NCCL 源码学习(二)- bootstrap网络连接的建立
nccl里bootstrap环形网络连接的创建过程原创 2022-09-20 14:03:12 · 9992 阅读 · 17 评论 -
NVIDIA NCCL 源码学习(一)- 初始化及ncclUniqueId的产生
NCCL是英伟达开源的GPU通信库,支持集合通信和点对点通信原创 2022-09-05 21:23:46 · 17261 阅读 · 20 评论
分享