DAY82:阅读Compute Capability 6.x

我们正带领大家开始阅读英文的《CUDA C Programming Guide》,今天是第82天,我们正在讲解计算能力,希望在接下来的19天里,您可以学习到原汁原味的CUDA,同时能养成英文阅读的习惯。

关注微信公众号,可以看到之前的阅读

本文共计290字,阅读时间30分钟

前情回顾:

DAY 75:阅读Configuration Options

DAY76:阅读标准数学函数

DAY77:阅读Intrinsic Functions

DAY78:阅读Texture Fetching

DAY79:阅读 Compute Capabilities

DAY80:阅读Compute Capability 3.x

DAY81:阅读Compute Capability 5.x

H.5. Compute Capability 6.x

H.5.1. Architecture

A multiprocessor consists of:

  • 64 (compute capablity 6.0) or 128 (6.1 and 6.2) CUDA cores for arithmetic operations,
  • 16 (6.0) or 32 (6.1 and 6.2) special function units for single-precision floating-point transcendental functions,
  • 2 (6.0) or 4 (6.1 and 6.2) warp schedulers.

When a multiprocessor is given warps to execute, it first distributes them among its schedulers. Then, at every instruction issue time, each scheduler issues one instruction for one of its assigned warps that is ready to execute, if any.

A multiprocessor has:

  • a read-only constant cache that is shared by all functional units and speeds up reads from the constant memory space, which resides in device memory,
  • a unified L1/texture cache for reads from global memory of size 24 KB (6.0 and 6.2) or 48 KB (6.1),
  • a shared memory of size 64 KB (6.0 and 6.2) or 96 KB (6.1).

The unified L1/texture cache is also used by the texture unit that implements the various addressing modes and data filtering mentioned in Texture and Surface Memory.

There is also an L2 cache shared by all multiprocessors that is used to cache accesses to local or global memory, including temporary register spills. Applications may query the L2 cache size by checking the l2CacheSize device property (see Device Enumeration).

The cache behavior (e.g., whether reads are cached in both the unified L1/texture cache and L2 or in L2 only) can be partially configured on a per-access basis using modifiers to the load instruction.

H.5.2. Global Memory

Global memory behaves the same way as devices of compute capability 5.x (See Global Memory).

H.5.3. Shared Memory

Shared memory behaves the same way as devices of compute capability 5.x (See Shared Memory).

本文备注/经验分享:

Pascal这一代的章节非常简单。本章小结主要说明了,本代有两种不同的计算能力(还有一种是6.2, TX2,这里略过了)。分别为计算能力6.0和计算能力6.1,具体的正好对应专业卡和家用卡的各个型号。

如同前一节所说, Pascal实际上并无和Maxwell的本质区别,而这代的卡的推出,正好迎来了AI和深度学习的浪潮, 于是这两个实际上可以看成, 分别对Maxwell进行了不同方面修补后的更新版本: (1)6.0计算能力添加了200%的FP16(半精度)的通用计算能力。具体的说,是增加了几条packed的半精度的计算指令。这些指令和普通的float(单精度的)计算覆盖基本是一样的,只是每条可以同时计算2个打包装一起的半精度数据(half2),这样做维持通用化的基础上,6.0简单的这样添加,就得到了200%的半精度性能提升,而没有对系统的其他部件(例如寄存器的读写)造成压力。 (2)6.1计算能力则添加的是400%的INT8(具体的说,还有INT16 * INT8的指令,不过这个先不用说)。这两种指令的添加,使得6.1在低精度的运算场合,取得了长足的进步(400%啊)!但是这一代的最大问题是,这两种Pascal对Maxwell的新增指令, 没有统一起来。具体到深度学习领域,则很多时候,在运算的时候需要使用FP16训练,而推导的时候需要使用INT8部署给终端。 这样很多时候用户需要购买两种卡(6.0和6.1),但好在6.1的卡的便宜很多(家用卡), 在用户实际的做出产品并出售的时候,这这些用户的客户们那里, 还是能找到很多INT8的应用场合的。实际上,这个都已经是两年多前的事情了, 具体的NV内部的立项估计更早,但是从今天的角度看(例如华为前天推出的新芯片),主打的2个领域就是FP16和INT8, 不能不说NV开创了一个时代,很高瞻远瞩。不仅仅如此,和这些专用的芯片不同,Pascal这一代除了新增的这两点外,还是一款通用的CUDA计算平台,对于非AI的用户,它们依然可以看成是更好的通用高性能计算的设备: 6.0将每个SM里面的计算单元数量砍半(参考本章节开头),这样在同样的SP数量的情况下, 实际上可用的资源翻倍(Shared Memory不太到翻倍,请参考本章节数据),有利于普通的高性能计算场合的性能提升。 此外,虽然Pascal是对Maxwell的修补,而Maxwell只是当初的试水之作(最初NV说Maxwell永远不出专业卡--虽然后来改变了说法),但是6.0的Pascal依然翻倍了资源,同时增加了double的性能到1/2,这样6.0还是一款很好的科学计算用途的卡。这点值得用户考虑。 这是从K80以来, GP100是当时唯一的更好选择了。且这代的专业卡(6.0)很多还配置了HBM2显存。这种显存的带宽非常高。 而且作为专业卡,HBM2的6.0 Pascal具体之前的专业卡所没有的特殊特性:开启了ECC后,不损失显存带宽。这是因为HBM2的显存使用了额外的引脚来传输校验数据,不占用通用的带宽(以前的卡开ECC都将损失带宽的,比例随着具体的代的不同而不同) 这代是对专业用户的一个很重要的用途。 此外,这代的卡还引入了NVLink,当然,直到后来的Turing才逐渐的推广开。这点另说了。这是6.0的Pascal,在非深度学习的应用场合的的用途。 这代卡别忘记了还有6.1的,主要是家用系列(部分专业卡也是6.1的。只要是一些低端),这也是为了昨天我们看到手册的章节几乎没有提到2代Maxwell的原因,也是为何今天的关于Pascal的章节,很多地方直接描述成:Same as Compute Capablity 5.X的原因。这里的5.X,更精确的应该说是5.2, 这两个太像了。 包括5.2开始引入的BUG/Feature, 部分情况下L1会被自动禁用,也在6.1的Pascal身上完美继承下来。单考虑到这代卡从28nm制程进化到了16nm(以及部分低端的14nm),功耗还是得到了极大的优化的, 这样这代的两种卡(6.0和6.1)都应该看成是更好的Maxwell。同时还有对专业数值计算,以及深度学习市场的开进。 除了手册章节上的这些,这代的Pascal还有一些非CUDA计算方面,但是却能影响到CUDA计算方面的改进: 一个就是NVENC编码性能的提升,根据用户的实际测试,Pascal 6.1的HEVC编码质量和后期的GM206之类的Maxwell并无区别,质量非常好,国内的视频压制组,如果没有自己的能力去钻研x265的编码参数,则很多已经转向了Pascal开始的NVENC了。速度快而省电。 具体到我们能看到的表现则是,计算能力5.2后期的卡,在编码的时候,或者转码的时候,解码单元(NVDEC), 编码单元(NVENC)和通用计算单元(SM)都有不少的占用率,功耗也较大。但是Pascal直接将大部分的工作转换到GPU内部的硬件IP Block上完成了,用nvidia-smi观察一个具体的转码过程,会发现SM的使用率基本是0%。等等!这对普通高性能通用计算的用户来说有什么用途? 巧合的是,论坛前几天有个帖子,某行业的用户有个较大的图片,在CPU上解开后,数据大约是3GB,跨越PCI-E传输到显存,需要较长的时间。 该用户最后使用了一个笨办法,先CPU解码,再CPU上FFMPEG编码,将编码后的bitstream(较小字节数)传输到显存后,再继续解码。用户自认为这样提速了。 但是实际上,如果正确的利用Pascal的硬件解码单元,应当直接传输原始没有展开的图片到显存,然后就地利用硬件解码,这样可以极大的减少CPU的使用率(基本0%了)和传输时间。这是Pascal的非CUDA通用计算方面的提升,辅助CUDA计算的一个很好的例子。 不仅仅如此,这代的的确很多用户是从事AI和深度学习行业的,这行业的输入数据往往具有一个特点,数据量大,例如一个具体的视频应用行业(例如pol.ice从一个城市的数以万计的摄像头中搜索嫌疑人),它的从摄像头来的264或者265码流是海量的数据量的。再例如常规的静态图片训练一个网络,现在的dataset动辄几百GB和上TB。这么大的数据量,本代的Pascal卡,配合高性能的解码之类的能力,可以有效的硬件解码,高速喂给GPU里面的计算部分。而不是等待CPU缓慢的将码流解开,转换成普通的RGB或者YUV数据。 实际上,从2年后的今年我们看来,总是会为一些NV的前瞻性而感叹:这些年来,视频的编解码,半精度,INT8,这3点几乎应该是这一代的卡(也包括6.2的TX2),所买回去的用户的主要3大主力用途。NV在整个行业没有起来的时候,准确的瞄准了这3点,并针对市场提前进行研发,这种前瞻性,很是值得敬佩。实际上,很多不从事AI和深度学习的用户,光第一个方面(编解码)也是它们的主力用途。因为这一代的卡的无限路编解码能力只对专业卡开放(家用卡限制并发2路NVENC编码) 还曾经出现过,为了这第一点用途,有用户购买了大量的TX2,自行拼凑在一个1U的机箱里面,从而获取巨大的编解码路数和性能。也是一个很好的这代Pascal的这3大应用里面的1点的具体表现。 本章节大致如此。此外,这代的Pascal依然是通用高性能计算平台。用户买回卡后,这点传统强项,还是很重要的。

有不明白的地方,请在本文后留言

或者在我们的技术论坛bbs.gpuworld.cn上发帖

原文发布于微信公众号 - 吉浦迅科技(gpusolution)

原文发表时间:2018-10-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏智能算法

图像处理库综述

当需要做一些图像处理方面的学习和研究的时候,首要任务就是选择一套合适的图像处理类库,本文主要简单介绍下各家图像库的一些优缺点。OpenCV,Intel ...

5909
来自专栏FreeBuf

定位系统那些事儿

LBS随着移动互联网的火热而在近年成为一个火热的概念,其本义是基于位置的服务(Location Based Service),而如何定位位置成为LBS中的基本。...

2445
来自专栏星流全栈

【两分钟论文#161】AI创建用户界面,前端将失业?神器pix2code!

1714
来自专栏大数据挖掘DT机器学习

Microsoft 时序算法——结果预算+下期彩票预测篇)

前言 本篇我们将总结的算法为Microsoft时序算法的结果预测值,是上一篇文章Microsoft时序算法的一个总结,上一篇我们已经基于微软案例数据库的销售历史...

6406
来自专栏PPV课数据科学社区

分布式机器学习的故事

从毕业加入Google开始做分布式机器学习,到后来转战腾讯广告业务,至今已经七年了。我想说说我见到的故事和我自己的实践经历。这段经历给我的感觉是:虽然在验证一个...

3896
来自专栏Albert陈凯

R语言的优劣

https://www.zhihu.com/question/19611094 作者:艾华丰 链接:https://www.zhihu.com/questio...

2513
来自专栏量子位

如何用Python从海量文本抽取主题?

作者:王树义 量子位 已获授权编辑发布 你在工作、学习中是否曾因信息过载叫苦不迭?有一种方法能够替你读海量文章,并将不同的主题和对应的关键词抽取出来,让你谈笑间...

5107
来自专栏数据的力量

五种高效自学方法 | 用学霸的思维建立系统的知识体系

2254
来自专栏机器人网

揭秘3D打印的工业革命:你须知3D打印知识

什么是3D打印? 3D打印,即快速成型技术的一种,它是一种以数字模型文件为基础,运用粉末状金属或塑料等可粘合材料,通过逐层打印的方式来构造物体的技术。 3D打印...

3706
来自专栏申龙斌的程序人生

如何在6-8小时之内读完300页的书?

Michigan大学的一位老师Paul N. Edwards写了一篇学术文章《How to Read a Book》,当前已经更新到v5.0版本,个人感觉好过另...

38110

扫码关注云+社区