如何评价 GTX 1080/1070 系列显卡?

关注者
3,180
被浏览
764,685

132 个回答

作为在NVIDIA总部完整参与Pascal核心架构研发过程的人,我就补充几个新架构和图形渲染有关的亮点:


1. Pascal可以同时进行VR渲染的左右眼投影,这个和以往的多视口投影有本质不同,因为左右眼的投影矩阵不同。结果就是场景几何体只需要在顶点着色器里处理一遍,而不是以往的两遍。在几何量是瓶颈的时候,性能可以大幅提升。在像素着色是瓶颈时,可以看第二条。据我所知目前没有别家的GPU有这个能力,如果有请及时纠正我。再强调一下,ARM的multiview应用于VR虽然也只需要提交一次drawcall,但顶点着色器在硬件内部还是要执行两次,每次获得的层参数不同,而Pascal只需要执行一次顶点着色器,性能上有本质区别。

2. Pascal可以利用快速几何着色器(也是NV独有的技术)和多视口投影实现VR渲染的均匀采样,也就是每个单位角度的像素密度非常接近,而不是离透镜中心越远采样密度越高,导致不必要的性能浪费,这个特性可以让VR渲染在不影响结果正确性的前提下节约接近一半的像素计算量。推荐这篇文章:GTX1080 is Here! - Behind the Pixels - 知乎专栏

3. 支持指令级别的多任务抢占。假设GPU正在渲染三角形,或者执行计算任务,以往只能在当前着色程序完全执行完成之后才能进行任务切换(虽然可能只有微秒或毫秒级别的延时),而现在可以在着色程序执行一半时暂停,让给具有更高优先级的任务占有GPU计算资源。这对无人驾驶汽车非常有用,使得紧急任务可以立即被执行,当然多任务操作系统也能很好利用这点,包括调试GPU程序设置断点之类的。

其它小的点就忽略了。

从通用计算,更确切点深度学习,的角度来说,无论从功耗,价格(下面两图比较了N厂各卡),还是内存大小和带宽来看,GTX 1080/1070都比前面好。虽然1070和1080在价格,功耗,计算上基本是正比关系。但在付相同额外开销(CPU,内存,机器空间,后期维护)下,1080能得到的计算密度更高。


但nvidia有几个东西没有解释清楚。如果大家听过黄老大在今年GTC上的报告的话,估计会对P100的21 TFLOPs的半精度(FP16)计算能力有深刻印象。它的原理是把两个FP16并成一个FP32来计算。事实上这也是我们对pascal的最大期望之一。不管是去年NIPS,在GTC前N厂的一个小型deep learning meetup,还是盛会GTC,N厂员工一直说FP16是未来,号召我们大力支持。所以MXNet的小伙伴也花了很多精力折腾FP16,毕竟是两倍性能提升啊。


新卡出来后MXNet小伙伴Eric第一时间从N厂化缘了一块GTX 1080,兴高采烈准备测一下MXNet的FP16性能来搞个大新闻。实验跑下来结果眼镜碎一地。

在titanx上fp16比fp32快10%。 基本正常。 在1080上fp16比fp32慢一倍。 fullyconnected慢100倍。。。 还可变的。。。

此时网上也是议论纷纷,甚至大家猜测是N厂故意限速了。咨询了N厂后,得到的答复是,GTX 1070/1080确实FP16不快,但是8-bit int (int8)很快哦,在30 TFLOPs以上,你们可以试试啊。汗一地。。。


更快的FP16还是int8

这几天研究下来,我尝试在这里不保证太多准确性的回答下为什么。我们知道P100用的核心是GP100,而GTX 1080、1070用的则是GP104. 下图是GP100的一个SM的架构图。


这里有包含单精度浮点和整数运算单元的core(下图所示),双精度运算的DP Unit,各种特殊函数例如sin/cos的SFU。可以看到core和DP Unit的比例是2:1所以导致P100的单精度和双精度运算能力是2:1的关系。而GP104的DP unit更少,所以双精度浮点运算能力比较低。


如果对比Pascal和它的前代例如Kepler和Maxwell,会发现SM图大同小异。所以我们以为N厂有特殊技术使得Pascal能够用FP32来算两个FP16. 而实际上是,只是Pascal没有画FP16 unit而已。所以GP100的FP16快,是因为它可以帮助计算FP16的单元多。而GP104没有那么多FP16单元(同样FP64也少),所以慢了。

但是,GP104有特别的技巧,uint8计算单元多。。。所以。。int8快了。。。

问题来了,到底N厂未来是走FP16还是int8路线呢?N厂回答是,我们先搞出来让你们玩着先。到时候看谁好用。根据目前情况看,FP16在有特殊技巧的帮助下,还是能够用来训练模型。而int8主要应用应该主要是在模型预测上。


总结

Pascal目前有两个型号,GP100(对应Tesla P100)和GP104(对应GTX 1080/1070)。前者半精度浮点运算快(FP16),或者8-bit int(int8)运算强。如果是需要买新卡,建议上GTX 1080(不过目前供货不足)。如果考虑主要是做模型预测的话,也可以升级旧卡到GTX 1080。不然的话等年底可能的新卡GTX 1080 TI或者新的Titan X也不错。