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&#…...
Anything V5进阶使用:结合REST API实现批量自动生成二次元图像
Anything V5进阶使用:结合REST API实现批量自动生成二次元图像 1. 项目概述 Anything V5是基于Stable Diffusion技术的高质量二次元图像生成模型,相比基础版本,它在动漫风格图像生成方面表现出色。本教程将重点介绍如何通过REST API实现批量…...
Z-Image-Turbo_Sugar脸部Lora入门必看:从Xinference启动到Gradio出图完整流程
Z-Image-Turbo_Sugar脸部Lora入门必看:从Xinference启动到Gradio出图完整流程 想快速生成甜美风格的人物脸部图片?Z-Image-Turbo_Sugar脸部Lora模型专门为此而生,让你轻松创作出纯欲甜妹风格的头像作品。 1. 环境准备与快速启动 1.1 了解你的…...
从H.264到AV1:主流视频编码标准的演进、选型与实战场景剖析
1. 视频编码标准的发展脉络 我第一次接触视频编码是在2005年,当时用手机拍摄的3GP视频文件总是模糊不清。后来才知道,这背后是MPEG-4 Part 2编码在起作用。如今视频编码技术已经迭代了好几代,从最早的MPEG-2到现在的AV1,每一次升级…...
基于Fluent的SLM过程模拟:涵盖案例研究、热源UDF及粉末导入技术详解
基于fluent的slm过程模拟,包含案例,热源udf,粉末的导入都有涉及。在增材制造领域,选择性激光熔化(SLM)技术因其高精度和复杂形状的制造能力而备受关注。今天,我们就来聊聊如何基于Fluent进行SLM…...
新鲜出炉!2026简历模板服务商推荐排行 专业评测榜 AI适配/全行业覆盖
一、摘要据中国人力资源开发研究会2026年行业报告显示,国内简历模板服务市场中,仅有30%的服务商能实现ATS系统通过率90%以上,求职者因简历模板不适配、内容不规范导致面试邀约率偏低,平均错失40%的求职机会;企业则因模…...
别让ChatGPT变成你的安全漏洞:OWASP LLM Top 10(2024)实战避坑指南
别让ChatGPT变成你的安全漏洞:OWASP LLM Top 10(2024)实战避坑指南 当大型语言模型(LLM)从实验室走向企业级应用时,安全风险正以指数级速度增长。2023年某金融科技公司因提示词注入导致百万用户数据泄露的案…...
如何用klein.php构建RESTful API:10个实用技巧与最佳实践
如何用klein.php构建RESTful API:10个实用技巧与最佳实践 【免费下载链接】klein.php A fast & flexible router 项目地址: https://gitcode.com/gh_mirrors/kl/klein.php klein.php是一款轻量级且高性能的PHP路由库,专为构建快速灵活的Web应…...
Python flask django大学生一体化服务系统 校园生活服务平台 选课 失物招领 自习室预约,实习系统y98ioc9x
目录同行可拿货,招校园代理 ,本人源头供货商功能模块分析技术架构特性扩展接口项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作同行可拿货,招校园代理 ,本人源头供货商 功能模块分析 校园生活服务平台 整合校内高频生活需求&a…...
保姆级教程:用Proteus 8.13和STM32F103C8T6复现一个智能家居报警系统(附源码和仿真文件)
从零构建基于STM32的智能家居报警系统:Proteus仿真全流程指南 在嵌入式开发领域,仿真技术为初学者提供了低成本、高效率的学习途径。Proteus作为业界领先的电路仿真软件,与STM32系列微控制器的结合,能够帮助开发者快速验证设计思路…...
测试数据管理:告别“脏数据”的困扰
在软件测试的日常实践中,测试数据是驱动一切验证活动的血液。然而,这至关重要的“血液”却常常受到“脏数据”的污染,导致测试用例失效、结果失真,最终侵蚀产品质量的基石。所谓“脏数据”,并非字面意义上的污秽&#…...
