[转载] 一窥NVIDIA“真正人工智能”Volta的执行

楼主: KotoriCute (Lovelive!)   2018-02-14 22:29:20
一窥NVIDIA“真正人工智能”Volta的执行单元细节
https://goo.gl/8nwZuj
毕竟是享有IEEE这响亮品牌“加持”的研讨会,加上坐在台下的听众多半又不是呆头呆脑
的“诸多媒体先进”,诸多在Hot Chips趁机宣扬国威并现场隔空较劲的芯片厂商,多半
都会讲些和技术行销简报“很不一样”的深度内容。
NVIDIA这次公布了“人工智能最佳化”GPU微架构Volta (GV100) 的执行单元细节,颇有
看头,平日很难得看到绘图芯片厂商愿意打开“黑盒子”给大家品头论足,尤其是扮演着
GPU关键灵魂,也就是NVIDIA从Fermi一路改名SM SMX SMM再改回SM的“多执行绪SIMD (或
SIMT) 处理器”,过去大家都在乱猜一通,现在总算有机会一窥其庐山真面目。
“分而治之”的NVIDIA产品发展策略
如果今天要笔者马上评论“为何NVIDIA可以在高阶绘图市场压倒AMD”,唯一可勉强挤出
的大概也只有一句话:NVIDIA集中足够的资源,采取分散风险的多样化产品研发计画,而
不像同时经营CPU GPU两条战线、蜡烛两头烧的AMD,被迫鸡蛋都放在同一个篮子内。
在2013年的NVIDIA时程表,原本Maxwell要直接演进到Volta。
https://media.cool3c.com/files/media/1/1/11_408.jpg
但2014年,在Volta前就多出一个Pascal了。
https://media.cool3c.com/files/media/1/2/12_355.jpg
所以2016年“汎用”的Pascal,2017年“专用”的Volta,打破了NVIDIA两年推出一个崭
新微架构的节奏,搞不好NVIDIA以后的“钟摆”就以一年为期,也说不定。
https://media.cool3c.com/files/media/1/3/13_324.jpg
以事后诸葛的角度回顾NVIDIA“小步快跑”的决定,一点都不让人感到意外,因为Volta
的确是NVIDIA史上第一个真正针对人工智能量身订做、兼顾“学习 / 训练”与“推论 /
预测”的微架构。
逐步深入、抽丝剥茧Volta微架构的SM细节
Volta的单一SM规划和“前前代”Maxwell雷同,切成四块“次核心 (Sub-Core)”。其实
图中少画了加载储存单元,但好像也无关紧要了。
https://media.cool3c.com/files/media/1/4/14_296.jpg
四块次核心共用L1指令快取、L1资料快取 (与材质和区域共享内存共用128kB容量,
NVIDIA宣称这样比较有弹性)、与芯片共用的内存子系统 (6MB第二阶快取和12GB HBM2
主内存)。
每个次核心单一时脉执行一个由32执行绪组成的“Warp”,想的简单一点,一个Warp就代
表画面上的一个小方格。
https://media.cool3c.com/files/media/1/5/15_274.jpg
次核心内的执行单元就是重头戏了,Volta包含五种截然不同的独立运算功能,这让它能
够在众多GPU中鹤立鸡群。
32位元浮点 (FP32):16组,“CUDA Core”的同义词,如执行16位元半精度,输出率将会
倍增。
特殊运算 (MUFU):4组,特殊功能单元,负责平方根、倒数、sine 和 cosine 等三角函
数。
64位元浮点 (FP64):8组,高效能运算必备品,消费市场就阉割或著根本看不到。
整数运算 (INT):16组,人工智能一定用得到,看看Google第一代TPU就知道了。
张量运算核心 (Tensor Core):2组,执行4x4 16位元浮点乘积和,适用于特征辨识的卷
积运算 (Convolutional Neural Network,CNN)。
值得注意的是,为了确保执行单元随时有指令可跑,次核心具备“L0”指令快取。
https://media.cool3c.com/files/media/1/6/16_234.jpg
一颗GV100有640个Tensor Core:每个次核心2个 x 4个次核心 x 80个SM = 640个。
可理可证,GV100有5120个CUDA core,Fermi完全体GF110的整整“十倍”,时间过得真快

https://media.cool3c.com/files/media/1/7/17_218.jpg
最后,也是最重要的,Volta可实现更精细的执行绪执行资源管理,每个Warp的32执行绪
,都有其个别独立的程式计数器 (Program Counter),更利于多工与虚拟化应用。
https://media.cool3c.com/files/media/1/8/18_201.jpg
无所不备则无所不寡
Volta (GV100) 这些补强,特别像独立的64位元浮点单元、独立的整数运算单元、与为了
强化推论 (Inference) 而生的16位元浮点乘积和张量 (Tensor) 运算单元“Tensor Core
”,都是对一般游戏娱乐或高效能运算而言,敬谢不敏的化外之民,即使Pascal后期型号
(GP102 / GP104 / GP106) 也追加了对8位元短整数的支援性,但仍看不到Volta的车尾
灯,而那时的AMD,大概只能仆在马路上,背后深深烙印着两条被NVIDIA活活辗过的轮胎
痕。
同样的“分工”精神,也早已成为NVIDIA自“让GPU更接近汎用CPU”的Fermi微架构为起
点,产品规划的重要特色:具备高效能64位元浮点运算的高阶应用,都会有专属的大型化
晶粒,像GF100、GF110、GK110、GK210、GP100、GV100等 (Maxwell世代没这样搞,算是
特例),以免消费市场压根儿不需要的“外挂”,伤害产品竞争力,如不必要的多余制造
成本与耗电量等。
很不幸的,就刚好就是AMD的弱点,想要单一设计面面俱到,下场就是两边都顾不到,
Vega就是很好的血淋淋例证。疑?怎么又让笔者想起Fusion了?

Links booklink

Contact Us: admin [ a t ] ucptt.com