前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >cuDNN和NCCL

cuDNN和NCCL

作者头像
GPUS Lady
发布2018-04-02 15:29:00
4.3K0
发布2018-04-02 15:29:00
举报
文章被收录于专栏:GPUS开发者GPUS开发者

在Training方面比较重要的库是cuDNN。cuDNN是深度学习基础模块加速库,可以支持所有主流的深度学习框架,比如Caffe、Tensorflow、CNTK、Theano、PyTorch等,这些基础模块指的是深度学习框架中常用的一些layer(神经网络层)操作,比如卷积、LSTM、全连接、Pooling(池化层)等。那么cuDNN的优势有什么呢?首先它将layer专门针对GPU进行了性能调优;第二是cuDNN以调用库函数的方式进行神经网络设计,能够大大节省开发者的时间,让大家可以将时间和精力集中在神经网络的设计和实现,而不是去进行GPU代码的开发和性能调优。

在这个benchmark中大家都可以看到,分别使用了八颗不同架构的GPU服务器对GoogLeNet网络进行训练的性能对比,大家可以只看最后两个绿色的柱状图,分别代表的是八颗P100的DGX-1服务器以及八颗Tesla V100的DGX-1V服务器。大家可以看到二者的性能差异大概是在2.5倍左右,也就是我们在Tesla V100上进行Deep Learning 训练时的性能提升水平。

接下来介绍的SDK是NCCL。

深度学习中常常需要多GPU并行训练,而Nvidia的NCCL库NVIDIA/nccl(https://github.com/NVIDIA/nccl)在各大深度学习框架(Caffe/Tensorflow/Torch/Theano)的多卡并行中经常被使用。

NCCL是Nvidia Collective multi-GPU Communication Library的简称,它是一个实现多GPU的collective communication通信(all-gather, reduce, broadcast)库,Nvidia做了很多优化,以在PCIe、Nvlink、InfiniBand上实现较高的通信速度。比方说all-reduce、all-gather以及broadcast等等,它能够自动检测GPU之间的拓扑连接关系,再结合通信采用最佳的路径实现数据IO。

在最新的NCCL 2.0版本里面,增加了对多服务器节点的支持,在NCCL 1.0版本里面我们只是支持单节点内的多GPU,但目前NCCL 2.0可以支持多节点的,并且可以同时支持PCle和NVLink连接方式。大家从上面的benchmark可以看到,从单节点一颗GPU到单节点八颗GPU,再到两个节点16颗GPU,以及四个节点32颗GPU,使用NCCL实现的Deep Learning 训练的吞吐性能几乎是线性增长的,其实这是非常难达到的一个性能。而目前NCCL 2.0最多可以支持八个服务器节点的并行。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-01-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GPUS开发者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
GPU 云服务器
GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档