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

Tensor Core

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

Tensor Core,也是Volta架构里面最重磅的特性。

Tensor Core实际上是一种矩阵乘累加的计算单元。矩阵乘累加计算在Deep Learning网络层算法中,比如卷积层、全连接层等是最重要、最耗时的一部分。Tensor Core是专门针对Deep Learning的应用而设计的专用ASIC单元,可以在一个时钟周期内实现两个4×4矩阵的乘法以及与另一个4×4矩阵的加法。整个计算的个数就是我们在一个时钟周期内可以实现64次乘和64次加。

Tensor Core的矩阵乘累加运算是一种混合精度运算。我们前面提到的一个V100可以实现125 TLOPS的混合精度运算,指的就是Tensor Core的混合精度。比如我们现在要计算D=A*B+C这样的矩阵乘累加运算,实际上这里面要求A、B两个矩阵必须是半精度,即FP16的类型。而加法矩阵C还有结合矩阵D既可以是FP16类型,也可以是FP32类型。在Tensor Core中,这是需要大家注意的一个特性。

在具体实验过程中,Tensor Core以WARP为单元执行。一个WARP中执行的是一个16×16×16的矩阵乘累加运算。这里就用到了刚才我们提到syncwarp线程之间进行数据交换和同步的机制。

关于如何利用Tensor Core实现矩阵乘法的加速,我们提供两种方式。第一种方式如右侧图中展示的代码,在CUDA编程里实现Tensor Core的调用。我们在新的CUDA 9.0里增加了一个秘密空间——WMMA,可以调用其中的API去实现输入矩阵的Load(加载),两个矩阵做乘加,还有结构矩阵的Store(存储)。而第二种方式相对比较简单,可以利用现成的库函数,最新版本的cuDNN7.0、CUDA9.0中的cuBLAs,TensorRT3.0都支持Tensor Core的调用。

Tensor Core的功能正在被集成到越来越多的深度学习框架里去,目前Tensor Core可以支持的深度学习框架有Caffe、Caffe2、MXNet、PyTorch、Theano、TensorFlow等,但CNTK、Chainer、Torch目前还不支持Tensor Core的调用,这点需要大家特别注意一下。

第二幅图是一个benchmark的测试结果,左侧的灰色的柱状表示的是Tesla P100+CUDA8调用cuBLAS库,进行混合精度的矩阵乘法得到的性能,而右侧绿色的柱状表示Tesla V100+CUDA9调用cuBLAS库,实现混合精度矩阵乘法的性能。可以看到,Tesla V100相比于Tesla P100提升了9.3倍。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档