当前位置: 首页 > news >正文

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中:

先回顾到这里吧,明天继续...

http://www.lryc.cn/news/377314.html

相关文章:

  • 关于车规级功率器件热可靠性测试的分享
  • 内核学习——1、list_head
  • JavaEE初阶--网络基本概念
  • gitlab-cicd-k8s
  • 盘点下常见 HDFS JournalNode 异常的问题原因和修复方法
  • 深入了解python生成器(generator)
  • 【Linux】Xshell和Xftp简介_安装_VMware虚拟机使用
  • 【轮询负载均衡规则算法设计题】
  • 张一鸣的产品哲学:与巨头共舞,低调中寻求突破
  • 【面试干货】throw 和 throws 的区别
  • 安卓手机删除的照片怎么恢复?3个方法,小技巧大作用
  • Unity制作背包的格子
  • 道可云元宇宙每日资讯|厦门:运用元宇宙技术助力直播电商发展
  • 电脑怎么卸载软件?多个方法合集(2024年新版)
  • 【深度学习基础】详解Pytorch搭建CNN卷积神经网络LeNet-5实现手写数字识别
  • 面试技巧:正确回答JavaScript中Map和Object的选择问题
  • sd StableDiffusion库学习笔记
  • 【单片机毕业设计选题24017】-基于STM32的禽舍环境监测控制系统(蓝牙版)
  • 每天一个数据分析题(三百七十八)- 系统聚类
  • 守护系统稳定性的关键技术之看门狗
  • 【Linux】进程间通信上 (1.5万字详解)
  • 测试用例设计:提升测试覆盖率的策略与方法
  • 【微服务】什么是Hystrix?一文带你入门Hystrix
  • AI学习指南机器学习篇-支持向量机超参数调优
  • 掉电安全文件系统分析
  • React-Redux学习笔记(自用)
  • 【机器学习】:线性回归模型学习路线
  • C++设计模式——Flyweight享元模式
  • Github 2024-06-19 开源项目日报 Top10
  • 【ARM】如何通过Keil MDK查看芯片的硬件信息