编译 nccl-tests 项目

1,编译

下载源代码

git clone --recursive https://github.com/NVIDIA/nccl-tests.git


 

编译源代码

cd nccl-tests/
make -j

2,运行
 

cd ./build/
./all_reduce_perf --help
./all_reduce_perf -b 8 -e 256M -f 2 -g 4

效果图:

3,注意

在这些testcase中,需要注意这两个函数:

这两函数配合出现,起到了一个类似大括号的作用{ ... }

两者之间调用的 nccl API 函数组成要给 group,表示这是一组关系紧密的函数操作。

ncclGroupStart() 调用后,接下来的nccl API 调用都会是非阻塞于GPU 操作的方式立即返回;

ncclGroupEnd() 返回时,仅仅表示已经将nccl API所引发的 cuda gpu 等相关的操作已经提交排队进入了对应的 cuda stream里了,但并不能保证gpu内部已经执行完毕,用cuda 编程的角度看,也就是相关的 cuda kernel 已经全部 被 launch 起来了,但不一定开始执行了,更不一定执行完毕了;

所以,通常再ncclGroupEnd()后面还会调用一个

cudaStreamSynchronize(...);

这是一个阻塞于gpu操作的cuda API,只有等到这个cuda stream中的之前提交的 gpu 操作都做完后才会返回。

参考:

Group Calls — NCCL 2.19.3 documentation

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值