一、显卡指标

  1. 位宽 : 一个时钟周期内,显示芯片从显存中读取数据量,单位bit;
  2. 显存频率:表示1s内显存和显示芯片之间数据传输次数, 单位MHZ;
  3. 显存带宽:表示1s内显存与显卡芯片之间的的数据传输量,计算公式:显存带宽=显存频率*显存位宽/8, 单位G/S;
  4. 显存容量:显存可缓冲存储数据的容量,单位G

以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;

下面是内存的具体指标:

  1. 内存位宽:SDRAM、DDR、DDR2、DDR3的总线位宽为64位,RDRAM的位宽为16位。
  2. 当采用双通道技术,可以获得64X2=128bit的位宽。如果采用四通道技术,可以达到256bit位宽。
  3. 内存核心物理频率:指内存颗粒运行的物理频率,从早期的100MHz到现在的260MHz。 ;
  4. 倍增系数:内存
  5. 标称频率:内存名称上的数字,如DDR 400、DDR2 800、DDR3 1600和DDR4 3200的物理运行频率都是200MHz,物理频率必须乘上倍增系数才能获得相应的标称频率。标称频率是以老旧的SDRAM内存为基准,换算得出利于商业运作和产品标识的频率。
  6. 内存带宽: 带宽=内存核心物理频率 × 内存位宽 × 倍增系数  = 内存标称频率 * 内存带宽
  7. I/O 总线频率: 内存核心的物理频率 x  上升沿或下降沿单次预读位数  x  BankGroup数量(DD1-3理解为1)

下面计算DDR3 1066的内存在默认频率下的带宽,1066是指有效数据传输频率,除以8才是核心频率,位宽为64bit:

  •     内存带宽= 物理内存频率 x 位宽 x 倍增系数  = (1066/8)×64×8=68224Mbit = 8.328125GB
  •     内存带宽= 标称频率 x 位宽  = 1066×64=68224Mbit = 8.328125GB

    用两条DDR3 1066组成双通道,然后超频到1200,其内存带宽:

  • 超频到后物理频率为:    1200/8=150MHz
  • 双通道的位宽:28bit:
  • 带宽=1200×128=153600Mbit=18.75GB

下面列出不同类型内存的物理指标数据:

二、选择显卡的标准

前面讲了内存和显存的指标,对计算机硬件有了大致的了解,这里开始说明怎么选择深度学习用的显卡:

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表示。FLOPSfloating-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是一个不错的选择。

参考文档:

Logo

学大模型,用大模型上飞桨星河社区!每天8点V100G算力免费领!免费领取ERNIE 4.0 100w Token >>>

更多推荐