Pytorch distributed training

关于cuda的一些东西

cuda 是NVIDIA开发的一个基于并行计算的工具台

CUDNN是NVIDIA开发的一个基于工作台的更高级的操作工具

关于 torch.backends.cudnn.deterministic 和  torch.backends.cudnn.benchmark

在这篇知乎文章有提及, 我在此补充一些他没说清楚的地方。

 

deterministicbenchmark

卷积算法选择

TrueFalse返回一个默认的算法。deterministic 表示是否返回固定的算法。
FalseFalse返回默认的卷积算法。(这个算法是一个Get...函数,有一些启发性信息)。但是可能有一定随机性,因为deterministic = False, 所以每次返回的结果可能不固定
-TrueFind...算法,穷举所有可能算法。实际过程是把所有的算法都试一遍,然后找到最快的那个。所以在程序运行的开始时刻显存会飙升,后来才会稳定下来。

 

表格可能不太明确,再说一下benchmark和deterministic的区别

首先注意有一个概念,就是对于一个算法来说,他本身是可能有不确定性的。

也就是算法既可能是确定性的,也有可能是具有随机性的,不同的算法是不同的。

如果benchmark=True,那么每次都会根据参数以及一些硬件特征选择一个新的算法,这样如果你resume一个算法,那么可能就会发生一些奇怪的事情,因为这时候你开始的参数不同了,硬件环境也不同了。

在benchmark = False 的情况下,这时候每次都会返回一个固定的卷积算法,但是这个算法本身是可能有随机性的(比如说里面会用到一些随机数),(也就是确定的算法可能具有不确定性),这时候我们就需要用deterministic 来决定采用的这个固定的算法是否要有随机性。

deterministic=True,那么就会返回一个具有确定性的算法。

NCCL

NVIDIA Collective Communication Library

多GPU多node通信

 

关于pytorch并行计算的细节和操作原理这位博主说的特别好

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值