nccl 03 记 回顾:从下载,编译到调试 nccl-test
1, 下载与编译
1.1 源码下载
$ git clone https://github.com/NVIDIA/nccl.git
1.2 编译
1.2.1 一般编译:
$ make -j src.build
1.2.2 特定架构gpu 编译
$ make -j src.build NVCC_GENCODE="-gencode=arch=compute_80,code=sm_80"
A100系列的为 sm_80;
1.2.3 只 debug 编译Host C++代码
<1> 修改 nccl/makefiles/common.mk
$ git diff
diff --git a/makefiles/common.mk b/makefiles/common.mk
index a037cf3..5540099 100644
--- a/makefiles/common.mk
+++ b/makefiles/common.mk
@@ -80,7 +80,8 @@ NVLDFLAGS += ${GCOV_FLAGS:%=-Xcompiler %}ifeq ($(DEBUG), 0)NVCUFLAGS += -O3
-CXXFLAGS += -O3 -g
+#LL:: CXXFLAGS += -O3 -g
+CXXFLAGS += -g -ggdb3elseNVCUFLAGS += -O0 -G -gCXXFLAGS += -O0 -g -ggdb3
为了debug 主机代码,修改 makefile相关代码的截图效果:

<2> 编译如上
$ make -j src.build NVCC_GENCODE="-gencode=arch=compute_80,code=sm_80"
1.2.4 全部编译为 debug 版本
$ make -j src.build NVCC_GENCODE="-gencode=arch=compute_80,code=sm_80" DEBUG=1 VERBOSE=1
或
$ make -j src.build NVCC_GENCODE="-gencode=arch=compute_80,code=sm_80" DEBUG=1
1.3 正式安装
(为了开发nccl本身的话,也可以不安装)
ubuntu:
$ # Install tools to create debian packages
$ sudo apt install build-essential devscripts debhelper fakeroot
$ # Build NCCL deb package
$ make pkg.debian.build
$ ls build/pkg/deb/
{
然后可以跟安装一般的deb包一样安装:
sudo dpkg -i /path/to/package.deb
如果出现依赖缺少问题,使用这个修复:
sudo apt-get install -f
或者直接用apt来安装 deb 包:
sudo apt install ./path/to/package.deb
}
2,验证示例代码
2.1 下载测试
将 nccl-test/ 下载到与 nccl/ 并列
$ git clone --recursive https://github.com/NVIDIA/nccl-tests.git
$ ls
![]()
2.2 直接链接 nccl 编译 nccl-test
2.1 一般编译
$ cd nccl-test/
$ make NCCL_HOME=../nccl/build
运行示例:
设置环境变量:
export LD_LIBRARY_PATH=../../nccl/build/lib
此处存储了生成的 链接库:
![]()
运行:

2.2 Debug 编译 nccl-test
只debug 主机代码
2.2.1 修改Makefile信息
git diff 结果如下:
nccl-tests/src$ git diff
diff --git a/src/Makefile b/src/Makefile
index 393de8e..d704ccd 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -42,7 +42,8 @@ NVLDFLAGS := -L${CUDA_LIB} -l${CUDARTLIB} -lrtifeq ($(DEBUG), 0)NVCUFLAGS += -O3 -g
-CXXFLAGS += -O3 -g
+CXXFLAGS += -O0 -g -ggdb3
+#LL:: CXXFLAGS += -O3 -gelseNVCUFLAGS += -O0 -G -gCXXFLAGS += -O0 -g -ggdb3
2.2.2 编译
$ make -j
同样elf文件在 nccl-test/build/ 中:
$ gdb ./all_gather_perf
进入gdb debug中:

。
先回顾到这里吧,明天继续...
相关文章:
nccl 03 记 回顾:从下载,编译到调试 nccl-test
1, 下载与编译 1.1 源码下载 $ git clone https://github.com/NVIDIA/nccl.git 1.2 编译 1.2.1 一般编译: $ make -j src.build 1.2.2 特定架构gpu 编译 $ make -j src.build NVCC_GENCODE"-gencodearchcompute_80,codesm_80" A10…...
关于车规级功率器件热可靠性测试的分享
随着中国电动汽车市场的稳步快速发展和各大车企布局新能源的扩散,推动了车规级功率器件的快速增长。新能源汽车行业和消费电子都会用到半导体芯片,但车规级芯片对外部环境要求很高,涉及到的一致性和可靠性均要大于工业级产品要求,…...
内核学习——1、list_head
双向循环链表:list_head 头节点head是不使用的: struct list_head { struct list_head *next, *prev; }; 结构体中没有数据域,所以一般把list_head嵌入到其他结构中使用 struct file_node { char c; struct list_head node; }; 此时ÿ…...
JavaEE初阶--网络基本概念
目录 一、引言 二、网络基本概念 2.1 局域网LAN 2.2 广域网WAN 三、网络通信的基础 3.1 IP地址 3.2 端口号 3.3 协议 3.4 五元组 3.5 协议分层 3.6 OSI七层模型 3.7 TCP/IP五层模型 四、总结 一、引言 本篇博客将进入网络编程以及网络原理的学习,但网…...
gitlab-cicd-k8s
k8s已经准备好 kubectl get node 创建cicdYaml文件 kubectl create namespace gitlab-cicd --dry-runclient --outputyaml >> gitlab-cicd.yaml kubectl apply -f gitlab-cicd.yaml 服务器和仓库在一起可用专有地址 使用 GitLab Runner 可以自动执行 GitLab CI/CD 管道…...
盘点下常见 HDFS JournalNode 异常的问题原因和修复方法
盘点下常见 HDFS JournalNode 异常的问题原因和修复方法 最近在多个客户现场以及公司内部环境,都遇到了因为 JournalNode 异常导致 HDFS 服务不可用的问题,在此总结下相关知识。 1 HDFS HA 高可用和 JournalNode 概述 HDFS namenode 有 SPOF 单点故障…...
深入了解python生成器(generator)
生成器 生成器是 Python 中一种特殊类型的迭代器。生成器允许你定义一个函数来动态产生值,而不是一次性生成所有值并将它们存储在内存中。生成器使用 yield 关键字来逐个返回值。每次调用生成器函数时,函数会在 yield 语句暂停,并记住当前的…...
【Linux】Xshell和Xftp简介_安装_VMware虚拟机使用
1、简介 Xshell简介 Xshell是一款强大的安全终端模拟软件支持SSH1、SSH2以及Microsoft Windows平台的TELNET协议。该软件通过互联网实现到远程主机的安全连接,并通过其创新性的设计和特色帮助用户在复杂的网络环境中高效工作。Xshell可以在Windows界面下访问远端不…...
【轮询负载均衡规则算法设计题】
一、题目描述 给定n台主机(编号1~n)和某批数据包,数据包格式为(抵达主机时刻,负载量)。这里数据每个时刻最多只有1条数据到达。负载量表示该主机处理此数据包总耗时。请计算轮询负载均衡规则下,…...
张一鸣的产品哲学:与巨头共舞,低调中寻求突破
一、引言 在当今互联网竞争激烈的格局下,与巨头企业打交道是每个新兴科技企业都需面对的挑战。字节跳动创始人张一鸣在多次访谈中分享了他与巨头企业打交道的经验:保持低调、补齐技术、产品和市场各方面的能力。本文将探讨这一策略背后的产品哲学&#…...
【面试干货】throw 和 throws 的区别
【面试干货】throw 和 throws 的区别 1、throw1.1 示例 2、throws2.1 示例 3、总结 💖The Begin💖点点关注,收藏不迷路💖 在Java中,throw和throws都与异常处理紧密相关,但它们在使用和含义上有明显的区别。…...
安卓手机删除的照片怎么恢复?3个方法,小技巧大作用
你是否曾经不小心删除了手机里的珍贵照片,却不知道怎么恢复?别担心,今天我们就来分享几个简单的小技巧,帮助你轻松找回那些丢失的照片。这些技巧虽然简单,但却能发挥大作用,让你不再为丢失照片而烦恼。手机…...
Unity制作背包的格子
1.新建一个面板 2.点击面板并添加这个组件 3.点击UI创建一个原始图像,这样我们就会发现图像出现在了面板的左上角。 4.多复制几个并改变 Grid Layout Group的参数就可以实现下面的效果了...
道可云元宇宙每日资讯|厦门:运用元宇宙技术助力直播电商发展
道可云元宇宙每日简报(2024年6月20日)讯,今日元宇宙新鲜事有: 厦门:运用元宇宙技术助力直播电商发展 近日,厦门市商务局印发《厦门市促进直播电商高质量发展若干措施(2024年-2026年࿰…...
电脑怎么卸载软件?多个方法合集(2024年新版)
在电脑的日常使用中,我们经常需要安装各种软件来满足不同的需求,但随着时间的推移,可能会出现一些软件不再需要或需要更换的情况。此时,及时从电脑上卸载这些不必要的软件是非常重要的。它不仅可以释放硬盘空间,还可以…...
【深度学习基础】详解Pytorch搭建CNN卷积神经网络LeNet-5实现手写数字识别
目录 写在开头 一、CNN的原理 1. 概述 2. 卷积层 内参数(卷积核本身) 外参数(填充和步幅) 输入与输出的尺寸关系 3. 多通道问题 多通道输入 多通道输出 4. 池化层 平均汇聚 最大值汇聚 二、手写数字识别 1. 任务…...
面试技巧:正确回答JavaScript中Map和Object的选择问题
在JavaScript的面试中,对于何时使用Map和Object的选择问题,是一个常见的考察点。这两个数据结构都能存储键值对,但它们各有优势和适用场景。本文将深入探讨两者的区别,并通过实际代码示例来指导您如何选择。 基本概念 Map&#…...
sd StableDiffusion库学习笔记
目录 DeepSpeed realesrgan BasicSR超分辨率,去噪,去模糊,去 JPEG 压缩噪声 segment_anything mmengine controlnet_aux accelerate transfersformer pytorch_fid einops compel transfersformer 文本嵌入调整库 报错:…...
【单片机毕业设计选题24017】-基于STM32的禽舍环境监测控制系统(蓝牙版)
系统功能: 系统分为主机端和从机端,主机端主动向从机端发送信息和命令,从机端 收到主机端的信息后回复温湿度氨气浓度和光照强度等信息。 主要功能模块原理图: 电源时钟烧录接口: 单片机和按键输入电路: 主机部分电路: 从机部分电路: 资料获取地址 主…...
每天一个数据分析题(三百七十八)- 系统聚类
在系统聚类方法中,哪种系统聚类是直接利用了组内的离差平方和? A. 最长距离法 B. 重心法 C. Ward法 D. 类平均法 数据分析认证考试介绍:点击进入 题目来源于CDA模拟题库 点击此处获取答案 数据分析专项练习题库 内容涵盖Python&#…...
16Gb容量+1866Mbps速率:NT6CL512T32AM-H1的LPDDR3移动存储参数解析
NT6CL512T32AM-H1:16Gb LPDDR3移动DRAM的技术解析在移动计算、工业嵌入式以及车载信息娱乐等对功耗和性能双重敏感的应用领域,内存子系统的选择直接影响产品的续航能力和数据处理效率。NT6CL512T32AM-H1是南亚科技推出的一款16Gb LPDDR3 SDRAM࿰…...
轻量级负载均衡器Codex-lb:云原生场景下的部署与调优实践
1. 项目概述:一个轻量级的负载均衡解决方案 最近在折腾一些个人项目和小型服务部署时,我遇到了一个挺实际的问题:如何在不引入复杂架构和运维负担的前提下,为多个后端服务实例提供一个统一的、可靠的入口。你可能也遇到过类似场景…...
腾讯会议AI助手使用教程(附避坑指南):新手也能快速上手,高效搞定会议纪要
【前言】最近腾讯会议AI助手彻底火了,身边不少程序员、职场人都在使用,都说“再也不用熬夜整理会议纪要了”。但很多新手第一次使用,会遇到“不知道怎么开启”“转写准确率低”“不会导出总结”等问题。今天就给大家带来一份详细的腾讯会议AI…...
Deep Agents:开箱即用的AI智能体框架,快速构建自主规划与执行应用
1. 项目概述:一个开箱即用的AI智能体框架如果你正在尝试构建一个能自主规划、读写文件、执行命令的AI智能体,大概率会经历一个相当繁琐的过程:先选一个LLM模型,然后设计一套复杂的提示词(Prompt)来教它如何…...
基于DDD与事件驱动的声明处理系统架构设计与实战
1. 项目概述:一个为开发者准备的“索赔”模板仓库最近在GitHub上看到一个挺有意思的项目,叫openclaw-claim-template。光看名字,你可能会有点摸不着头脑:“索赔模板”?这跟开源开发有什么关系?难道是用来写…...
RISC-V开源指令集架构:从设计哲学到商业落地的芯片设计新范式
1. 开源指令集架构的浪潮:从RISC-V研讨会看芯片设计新范式2015年6月底,加州大学伯克利分校的一场研讨会,意外地成为了半导体行业一个微小但意义深远的注脚。这场以RISC-V——一个源自伯克利的开源指令集架构——为主题的会议,不仅…...
设计程序统计行业淡季旺季,职场工作量数据,合理调配人力,解决忙闲不均,人力资源浪费职场现状。
一、实际应用场景描述在许多行业(如零售、旅游、物流、电商、教育培训等)中,普遍存在明显的季节性波动:- 旺季:订单/任务激增,员工超负荷加班- 淡季:业务量骤减,人员闲置、工时不足-…...
Windows安卓应用安装器:终极免费方案,3分钟搞定电脑运行安卓应用!
Windows安卓应用安装器:终极免费方案,3分钟搞定电脑运行安卓应用! 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经遇到过…...
14602开源|黄大年茶思屋第146期第二题:支持采集内容运动的静态3DGS重建
AI无偏差版脱敏题目标准化解题详解(第二题:支持采集内容运动的静态3DGS重建) 模块一:脱敏题目原文复刻 【脱敏题目原文】 支持采集内容运动的静态3DGS重建 基于3DGS及其扩展形式,支持动态建模和静态渲染,输…...
Boomi宣布2026财年亚太及日本地区合作伙伴奖得主
数据激活公司Boomi™今日公布其2026财年亚太及日本地区合作伙伴奖获奖名单。该奖项旨在表彰在该地区推动创新和为客户创造可衡量业务成果的Boomi合作伙伴。 本次获奖企业充分运用Boomi企业平台的全面能力实现数据激活、简化复杂流程和加速智能体转型,帮助客户更快创…...
