前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >不用老黄上场,看我如何用GTX1080来撕谷歌的TPU

不用老黄上场,看我如何用GTX1080来撕谷歌的TPU

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

如果最近关心微博或者朋友圈的话, 你会发现, 谷歌的TPU的宣传铺天盖地。

谷歌关于TPU的论文里,性能数据是这样写得:

于是很多媒体便大张旗鼓地说:

(1)TPU比GPU性能高15到30倍; (2)TPU比GPU在同样的性能上, 取得了30倍到80倍的功耗优势.

顿时不少原本要买GPU服务器或者GPU工作站的小主们开始心里打小鼓了: 难道要不买GPU了, 改买TPU吗?

呵呵, Lady和你说, 谷歌不卖, 小主们买不到.

这些宣传来自各种媒体. 让人感觉GPU计算已经穷途末路, TPU即将占领深度学习行业. 看谷歌的公开资料, TPU在计算8位整数乘法和累加上, 能达到惊人的92Tops的峰值性能. 而很多手头的卡, 单精度之类的也不过几个T,顶多10多个T,对比的确很明显. 但事情真的如此么?

呵呵, 无需惊慌. 更不用考虑改行. 姐领你看一下GTX1080 GPU, 采用帕斯卡6.1的真正力量.

最新强力运算提升之8-bit整数乘法+累加支持

最新英伟达6.1的GPU中, 加入了超级高速的8位整数支持, 看图:

A和B分别是32-bit的, 含有4个8位整数分量(x,y,z,w), 现在A,B的4个分量各自点乘(x0 *x1 + y0 * y1 + z0 * z1 + w0 * w1), 然后还能免费再累加上一个32位整数C. 也就是这8次乘法和加法操作, 可以在一起被打包完成. 而且这么一堆运算, 也是单周期就可以完成的(从每线程, 吞吐率的角度说).

也只和一个单精度的float乘加操作的代价一样快. 大家都知道, 一张卡上最快的操作就是float运算了, 折算到这个打包计算上, 等效比float还要提升400%的速度! 以前4张同样性能的上一代卡(例如Maxwell甚至Kepler), 现在只需要一张卡了.

如何使用此特性? 如下:

char4 A, B;

int C, D;

D = __dp4a(A,B,C);

这样简单的一句即可使用它,编译器将实际的生成单条指令.(注意需要CUDA8.0正式版, 部分8.0测试版和RC还不能支持它).

这等于亲之前手工的D =A.x * B.x + A.y * B.y + A.z * B.z + A.w * B.w + C;这么一堆的乘法和加法, 是等价的. 但至少会快400%, 甚至更多. 注意上述各操作数均可以支持有符号或者无符号版本的.

此特性给GTX1080带来了什么?

性能数据:GTX1080, float: 8.87 Tflops, int8: 35.5 Tops

性能数据: GTX1080 Ti, float: 11.3Tflops, int8: 45.2 Tops

看到了什么?

两张GTX1080ti即可顶上TPU的92Tops

所以你看, 所谓TPU的15到30倍的说法, 实际对于NVIDIA的GTX1080来说, 这只有2倍的. 这就是TPU的秘诀, 如今引入了1080(Ti) 了. 而且刚才你已经学会了如何使用它. 直接可以在你的现有CUDA知识上如虎添翼---只不过用了5分钟的学习时间.

而且你知道, TPU是专用芯片, 而GPU是用来做通用计算的. 它不仅仅可以计算int8, 还能计算float, 16或者32位整数, double, 逻辑运算等等. 而GTX1080, 这额外的4倍8-bit整数的计算性能, 是免费赠送的.很多人买他回来, 依然是用来做float或者其他方面的通用计算的. 在这些方面它依然优秀. 但即使如此. 免费赠送的额外性能, 两张卡就可以秒杀掉一张TPU了. 不需要特别的学习哦!(不过你得懂CUDA编程)

更多的用途

8位整数不仅仅可以用于深度学习, 卷积, 向量点乘,以及其他8位数据的处理, 往往在图像处理等多个场合具有用途. 这些运算, 往往还需要其他数据类型的计算来配合, 以及, 一定的逻辑控制能力, GPU却可以轻松各种计算配合, 同时发挥出各个类型的数据运算的性能. 这些, 均不是只擅长TPU所能对付的. 这也是为何我们也将GPU叫做GPGPU(General Purpose GPU, 通用GPU)的原因.

哪怕有一天你决定更换为其他用途, 卡依然还在. 没有浪费. 你的知识也没有浪费. 这些均是比专用ASIC芯片的优势.

Lady想到了我们的一个客户, 在使用计算能力5.3的NVIDIA Jetson TX1设备, 进行鱼眼摄像头视野, 到长方形视野的变换, 里面有大量的原本是8-bit的数据计算的. 但是很遗憾他说, 他只能转换为32位整数, 因为__dp4a还不能在maxwell设备上使用. profiler报告他的kernel已经100%使用计算单元了, 试想. 如果TX1能支持8-bit整数的400%加速能力, 该客户可以立刻节省4倍的计算时间, 或者同样的一次变换, 节省掉75%的能源使用. 这对嵌入式的场合也许很重要---也许节省的这75%能源, 可以再让你的无人机飞行个1千米, 或者可以识别出更多的猫脸.

关于性能功耗对比

Lady其实总认为, GPU也是ASIC的一种, 只不过含有丰富的指令控制功能. TPU无非是控制逻辑简单的处理器而已. 现在的帕斯卡是16nm的制程, 不妨看下TPU这种28nm的老制程, 真能达到30到80倍的功耗优势么?

废话少说, lady和攻城狮们构造了一个几乎全部由dp4a指令构成的小kernel (即硬件指令的idp.4a).

跑起来大致是这个样子的(上图), 至于很少的访存操作(几个百分点)请无视它. 可以看出, 将计算单元已经压到了100%了. 并对SM里的4组SP, 取得了如下图的4.018的IPC(每秒指令数/SM, 按warp计),

的确是压的满满的了, 但是nvidia-smi或者profiler报告的功耗其实很惊人的小:

(1)默频全功率的1080, 执行858993459200000次计算, 用时为22.636秒(如图),

折合性能为37.9TOPS. 而消耗的功率只有:114W, 用不完1080的高达180W的功率预算.

(图: nvidia-smi报告的功率消耗)

(图: profiler报告的瞬时功率消耗)

实际上在测试期间,GTX1080已经远远的自动Boost超过了基本频率, 得到了平均约1853Mhz的高频率, 和1.050v的核心电压. (注意GTX1080为1607Mhz默认基本频率, 1734Mhz默认Boost).

我们知道, GPU在执行高耗能操作的时候, 例如double的FMA运算, 往往会消耗非常多的功率.同时此时一些GPU在这种高负载计算下, 连默认频率都维持不了, 会导致自动降频以满足功率预算/散热等的需要. GTX1080在进行8-bit整数点乘累加的时候, 却boost了超过常规频率约200多Mhz, 也从另外一个方面证明了在计算8位整数的时候, 是很清凉节能的.

还是让数据直接说话吧.37.9 TOPS / 114W = 332 GOPS / W ! 我们只用1W的功率, 就能支撑起来高达300 GOPS +的8位整数计算. 不由让人惊叹.

考虑到TPU不过92 TOPS / 75W = 1226 GOPS / W. 此时GTX1080也不过只功耗上差了4倍而已. 绝对没有30到80倍的标称差距的.

这就是全部吗? 考虑到稍微降低点电压和频率(动态功耗同频率成正比, 同电压的平方成正比), 我们动点手脚:

(2)甚至可以性能功率比表现更好:

我们用nvidia-smi将功耗限定在90W(如上图) (CUDA用户或者不方便调用外部nvidia-smi程序的同学们可以使用nvml库). 这样最高可能频率会降低一点点, 而电压也会降低一点点. 此时整体功耗上可能会表现更好.

Lady请各位小主儿们具体看下: 依然是GTX1080, 执行858993459200000次计算, 用时从22.636秒延长到24.134s(如下图):

在整个计算期间, nvidia-smi和profiler分别报告功率消耗为:

WOW! 看上去功率降低了不少. 而时间只增加了一点. 我们计算下:

858993459200000次计算 / 24.134s = 35.6 TOPS!

35.6 TOPS / 90W = 395 GOPS /W !

差一点点就1W功率能每秒计算上400G次8-bit整数运算了! 此时和TPU的1226 GOPS /W, 只相差了3倍多一点点.

(实际上在这个过程中, 即使只给GTX1080仅90W的功率预算, 它依然可以Boost到1770Mhz的频率, 并电压只有0.943V, 这里就不详说了)

所以你看, 无论峰值计算性能, 还是单位功率性能, 均只有2倍~4倍的差距而已. 但是别忘记了GPU还可以是干别的(各行各业).. 甚至哪怕这张GTX1080你下班后用来打游戏.

*(注意, 这不是一个严谨的测试. 实际功耗和参与计算的数值本身有关, 8-bit整数中0和1的位的安排位置数量不同, 会导致功耗的些许变化. 本文数据仅供参考)

关于英伟达帕斯卡6.1的面纱

实际上lady我在日常的使用和测试中, 发现所谓的Pascal 6.1, 可以看成是16nm升级版的Maxwell而已. 但是增加了额外赠送的int8能力. 以及, 类似double原子操作, 等等一些小改动. 甚至你看CUDA C编程指南手册, 会发现里面很多对于pascal的地方只是说, 本处同maxwell, 然后无内容. 但是这些小改动, 等于在maxwell的基础上, 免费赠送给了大家 (想想谷歌免费送你一块TPU). 同时功耗上大幅度降低了.

想想一台8卡的机器, 满载功耗可能1-2KW. 如果是公司使用, 可能商用电很多地区在1元左右, 满载一天就是24元~48元. 一年下来就是小一万到两万电费, 很可能同样的任务, 在Pascal上能节省甚至有50%的功耗, 此时一年过去, 可能就节省了大约一万人民币.因此虽然是升级版的Maxwell,虽然你可以完全不要它赠送你的400%的堪比TPU的额外性能, 你依然需要考虑它能节省的后期使用成本.

说到这里, Lady我不禁想起, 当前风靡一时的挖矿大军. 在2012年左右, 挖矿风行一时, 有种叫比特币的东西, 虽然lady不挖矿, 但依然知道这是依靠计算一种叫SHA256的算法来生成利润的. 但是当年很遗憾, 铺天盖地都是A卡. N卡性能直接成渣. 因为当年A卡的整数真心太优秀了.

那么这些年来, 历代N卡, 对整数依然是完全无视么?

类FPGA的3输入查找表指令, N卡默默提升的400%整数逻辑运算

这些年来, NV直面AMD的整数挑战, 进行了历代N卡的强力整数升级, 但是很遗憾, 依然很多人停留在老印象, 像是我们一些进行密码破解的用户, 还是张口闭口要A卡, 其实不知, N卡已经极度进化了整数运算了,现在这些行业将重新变成N卡的领域.

实际上如刚才所说, 6.1的pascal其实只是升级版的maxwell. 而正是从Maxwell起, NV引入了专用的超强按位逻辑处理能力, Pascal依然拥有它, 而且是更高性能, 更低功耗的它. 这就是长期被人无视的LOP3.LUT指令. 这神奇的东西就如同FPGA一样, 可以对任意3个32-bit整数输入, 得到任意32-bit输出(所有排列组合情况均可实现). 废话不说, 看此段代码:

int A,B,C, D;

D = (A & B) ^ (A & C) ^ (B & C);

在Kepler卡上(例如: K80), 编译器会生成4步操作(两个&和2个^, 一个&被节省掉了). 但在Maxwell/Pascal上, 只有一条指令(大致意思, 本次不是专业的讨论): D = 查表(A,B,C,表内容);该指令和float指令一样, 是单周期的(按吞吐率算). 这样, 原本某需要4次才能完成的整数计算, 现在一次性就能完成了. 此特定32-bit整数运算, 瞬间性能翻4倍!

而对于普通的D = A |B | C; 这种, 也可以连续进行或运算, 当然, 提速是200%. 也依然可观的.

而这里的查找表, 和某些FPGA的LUT非常类似, 甚至这里的表内容(一个8-bit整数), 也和某些处理器内容一样(例如AVX-512的新的三元逻辑运算指令).

这样, 如同当年比特币的sha256经历了从A卡到FPGA到专用ASIC的演变, 已经不再需要GPU了. 但是N卡现在提供的类FPGA操作, 可以快速的大量压缩很多计算. 依然在各个科学计算领域, 和密码查找之类的场合重新发挥作用(请需要计算各种哈希, 各种彩虹表压缩之类的用户火速联系Lady我购卡).

也就是从这一代起, NV真正的补全了作为通用的GPGPU的能力.

关于N卡从数学专用的浮点计算, 到补全整数运算, 追赶AMD, 并开始超越它的恩恩怨怨和风情。

下次lady将给出适合专业用户看的文章:

<直击AMD! N卡历代记 之整数之王的诞生>.

此文章lady我将塑造用户对N卡整数计算的信心, 并直接讲解现代N卡的优势, 和对用户的有益之处, 扭转用户对N卡整数不行的偏见, 将整数用户们, 带回到N卡上来.

敬请期待(To becontinued).

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

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

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

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

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