NCCL
文章平均质量分 92
NVIDIA Collective Communications Library 是由 NVIDIA 开发的一个专注于GPU间高速通信的库,特别设计用于优化多GPU和多节点系统中的集体通信操作。NCCL通常与深度学习和高性能计算应用相关联,其中在多个GPU之间高效地传输和同步数据至关重要
Pretend ^^
知来者之可追
展开
-
Docker内 Pytorch+NCCL源码编译
PyTorch 是一个开源的深度学习框架,而 NCCL是 NVIDIA 提供的用于高性能 GPU 群集通信的库。通过编译 PyTorch 和 NCCL 的源代码,可以自定义构建并优化 PyTorch 在 GPU 群集上的性能。首先,需要安装构建 PyTorch 和 NCCL 所需的依赖项,例如 CUDA、cuDNN、Python 和其他相关的开发库。这些依赖项可能因操作系统和硬件配置而有所不同。克隆 PyTorch 源代码,进入 PyTorch 源代码目录,指定编译时的特定选项,例如支持的硬件架构原创 2024-02-07 22:28:25 · 2490 阅读 · 0 评论 -
1. 多机多卡运行nccl-tests和channel获取
nccl中channel的概念表示一个通信路径,为了更好的利用带宽和网卡,以及同一块数据可以通过多个channel并发通信,nccl会使用多channel,搜索的过程就是搜索出来一组channel。这里-b表示minBytes,-e表示maxBytes,-g表示两张卡,-f表示数据量每次乘2,如开始是8B,往后依次是16,32,64字节…运行以下命令,这里对应双机4卡,注意np后面的进程数*单个节点gpu数(-g 指定)=总的gpu数量,即之前提到的等式。- Connolly的回答 - 知乎。原创 2024-02-12 18:45:54 · 4780 阅读 · 0 评论 -
2. 多机多卡运行nccl-tests对比分析
NCCL是深度学习训练中的一个关键组件,因为它能够有效地在多个GPU之间传输数据,这对于加速神经网络的训练非常重要。在现代的深度学习框架中,如TensorFlow、PyTorch和Keras,NCCL通常作为后端通信库,与框架的API紧密集成,为用户提供一个简单易用的编程接口。这里通过使用不同的网络配置,在双机进行了nccl-test测试,获得了不同的结果,并尝试进行简单分析。原创 2024-04-24 22:10:32 · 2295 阅读 · 0 评论 -
3. 使用tcpdump抓取rdma数据包
使用 tcpdump 需要对源码进行编译,才可以抓取 RDMA 网卡数据包。本文通过使用tcpdump抓取mlx5网口的RoCE数据包,再使用wireshark进行简单分析原创 2024-06-05 23:50:22 · 1441 阅读 · 1 评论 -
5. PyTorch+NCCL源码编译
从源码编译PyTorch和NCCL,可以实现对NCCL源码进行修改以适应特定需求,并应用于实际的分布式训练中,本文基于torch 2.2.1和nccl 2.19.3描述了一个大致过程,并验证了源码更改的有效性。原创 2024-06-27 17:07:22 · 1130 阅读 · 0 评论 -
misc/ibvwrap.cc:278 NCCL WARN Call to ibv_reg_mr_iova2 failed with error Cannot allocate memory
使用nccl后端及mellanox网卡使用RoCE进行分布式训练时,出现错误,添加环境变量。这里只有8192 ,单位KB,即8MB,显然是不够的,但是在当前用户无法运行。进入root是可以的,但是也要在root用户中输入命令才可以使用IB运行。重启后还是相同的错误,通过在github提问得知,可以先检查。命令,加sudo的话 提示找不到命令。参考nccl用户手册中的解决方法,原创 2024-04-18 21:44:57 · 405 阅读 · 1 评论