以GTX 1080TI为例,其位宽是352 bit, 显存频率是1100MHZ,显存带宽= 1100MHZ*352bit/8 = 484G。显存带宽存在瓶颈时,显卡芯片没有足够的数据进行计算,会引起高分辨率下画面不流畅,或帧数不稳定的现象。
内存包括SDRAM,DDR、DDR2、DDR3, DDR4等类型,SDRAM是Synchronous Dynamic Random Access Memory的缩写,意思是同步动态存取器。DDR、DDR2和DDR3是SDRAM的改进类型,在预读取字节数不同,属于SDRAM系列。
Synchronous说明SDRAM内存的频率和CPU同步的,这样内存控制器可以精确的知道内存中数据就绪时的时钟周期,这样CPU在访问内存时,就不需要额外的等待时间。
DDR采用时钟脉冲上升、下降沿各传一次数据,1个时钟信号读取2bit(上升沿和下降沿各度1bit),传输2倍于SDRAM的数据,所以又称为双倍速率SDRAM。它的倍增系数就是2 = 2 * 1。
DDR2仍然采用时钟脉冲上升、下降支各传一次数据的技术,但是一次时钟信号预读4bit数据(上升沿和下降沿各度2bit),是DDR一次预读2倍,因此,它的倍增系数是4 = 2*2。
DDR3作为DDR2的升级版,最重要的改变是一次预读8bit数据((上升沿和下降沿各度4bit),是DDR2的2倍,DDR的4倍,所以,它的倍增系数是8 = 2*4。
DDR4,较为复杂,没有采用简单翻倍预读数据提高数据吞吐量。DDR4采用了预读8bit的Bank Group分组,可以采用两个或四个Bank Group分组。每个分组都能独立进行读写操作,如果采用了两个独立Bank Group预读取变成16bit,他的倍增系数变成16 = 2 * 4 * 2;
下面是内存的具体指标:
下面计算DDR3 1066的内存在默认频率下的带宽,1066是指有效数据传输频率,除以8才是核心频率,位宽为64bit:
用两条DDR3 1066组成双通道,然后超频到1200,其内存带宽:
下面列出不同类型内存的物理指标数据:
前面讲了内存和显存的指标,对计算机硬件有了大致的了解,这里开始说明怎么选择深度学习用的显卡:
1、显存带宽
GPU较CPU主频低,内存访问延迟大,但是CPU的位宽是64bit,而GPU的位宽要大的多(GTX 1080Ti的位宽是352bit)。GPU是通过牺牲内存访问时间(延迟)而优化了内存带宽, 而 CPU 的设计恰恰相反。如果只由少量数据运算,例如几个数相乘(3*6*9),CPU 的速度很快,但是对于像矩阵相乘(A*B*C)这样占用大量内存的操作,GPU就比CPU快多了。
深度学习需要处理大量的图像、音频,这里就涉及到大型矩阵的乘法计算,所以评价显卡带宽是必须首要考虑的。
GPU计算速度比CPU快的原因之一就是内存带宽。
在同一个架构内内存带宽是可以进行比较的。例如Pascal显卡GTX 1080的内存带宽是320GB/s,GTX 1070的内存带宽是256GB/S,快了25%。但是不同的架构使用了不同的给定内存带宽是没法直接比较的,例如Pacal架构和Maxwel架构。但是只看中的带宽可对GPU的大致速度有一个很好的全局了解,可以在下面维基百科页面中查看每个显卡的内存带宽数据
https://en.wikipedia.org/wiki/List_of_Nvidia_graphics_processing_units
2、GPU处理器的计算能力
GPU的计算能力可以使用FLOPS表示。FLOPS是floating-point operations per second的缩写,表示“每秒所执行的浮点运算次数”。被用来估算处理的计算能力。
1 MFLOPS = 每秒可以执行一百万(10^6)次浮点运算
1 GFLOPS = 每秒可以执行十亿(10^9)次浮点运算
1 TFLOPS = 每秒可以执行一万亿(10^12)次浮点运算
FLOPS计算公式是:
FLOPS= 处理器个数 × 处理器主频 × 单个处理器一个时钟周期进行浮点运算次数
Nvidia GPU的流处理器单元两个ALU单元,每个时钟周期进行两次浮点预算。
显卡FLOPS = 流处理器数量 x 流处理器工作频率 x 2
以Kepler k40和Fermi M2090为例计算FLOP:
Kepler k40 GPU: 2880*0.745*2=4290Gflops 流处理单元(SP)的工作频率和核心频率相同
Fermi M2090 GPU: 512*0.650*2*2=1330Gflops 流处理单元(SP)的工作频率需是核心频率的2倍,额外需要x2
三、是否兼容cuDNN
深度学习使用cuDNN做卷积计算,所以兼容cuDNN的显卡计算速度回更快。Kepler系列GPU通常不支持cuDNN,通常会很慢。这意味着应该选择GTX 900或GTX 1000系列。
网上有个一个简单的GPU等价表
我汇总一下主流的GPU显卡的参数做:
|
游戏显卡 |
专业显卡 |
|||||
显卡型号 |
GTX 1050TI |
GTX 1060 |
GTX 1070Ti |
GTX 1080Ti |
Titan X |
Titan XP |
Tesla P100 |
显存容量(G) |
4 |
6 |
8 |
11 |
12 |
12 |
16 |
显存位宽(bit) |
128 |
192 |
256 |
352 |
384 |
384 |
4096 |
显存频率(GHZ) |
7 |
8 |
8 |
11 |
10 |
11 |
1.4 |
显存带宽(G) |
112 |
192 |
256 |
484 |
480 |
547 |
732 |
流处理单元数量 单精度/双精度 |
768 |
1280 |
2432 |
3584 |
3584 |
3840 |
3584/1792 |
流处理单元主频 |
1290/1379 |
1506/1594 |
1607 |
1480 |
1417 |
1405 |
|
处理能力(GFLOPS) 单精度/双精度 |
1981/61.9 |
3855/120 |
7816/244 |
10608/331 |
10157/ 317.4 |
10790/337 |
9519/4760 |
价格 |
1.2k |
2.2k |
3.7k |
5.8k |
|
1w |
5w |
总的来说GTX 1080Ti或者GTX1070,都是优秀的游戏显卡,可以考虑入手GTX 1080TI。GTX 1070但是8G的内存也是足够使用了。Tesla P100是专业显卡,价格昂贵,配备3584个单精度SP外,还有1792个双精度SP,这使得双精度算力达到4760,是GTX 1080Ti14倍之多,如果你是专业的研究人员,配备Tesla P100是一个不错的选择。
参考文档: