【深度分析】如何配置深度学习用的电脑(显卡和内存的选择标准)
一、显卡指标位宽 : 一个时钟周期内,显示芯片从显存中读取数据量,单位bit;显存频率:表示1s内显存和显示芯片之间数据传输次数, 单位MHZ;显存带宽:表示1s内显存与显卡芯片之间的的数据传输量,计算公式:显存带宽=显存频率*显存位宽/8, 单位G/S;显存容量:显存可缓冲存储数据的容量,单位G以GTX 1080TI为例,其位宽是352 bit, 显存频率是1100MHZ,显存...
一、显卡指标
- 位宽 : 一个时钟周期内,显示芯片从显存中读取数据量,单位bit;
- 显存频率:表示1s内显存和显示芯片之间数据传输次数, 单位MHZ;
- 显存带宽:表示1s内显存与显卡芯片之间的的数据传输量,计算公式:显存带宽=显存频率*显存位宽/8, 单位G/S;
- 显存容量:显存可缓冲存储数据的容量,单位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;
下面是内存的具体指标:
- 内存位宽:SDRAM、DDR、DDR2、DDR3的总线位宽为64位,RDRAM的位宽为16位。
- 当采用双通道技术,可以获得64X2=128bit的位宽。如果采用四通道技术,可以达到256bit位宽。
- 内存核心物理频率:指内存颗粒运行的物理频率,从早期的100MHz到现在的260MHz。 ;
- 倍增系数:内存
- 标称频率:内存名称上的数字,如DDR 400、DDR2 800、DDR3 1600和DDR4 3200的物理运行频率都是200MHz,物理频率必须乘上倍增系数才能获得相应的标称频率。标称频率是以老旧的SDRAM内存为基准,换算得出利于商业运作和产品标识的频率。
- 内存带宽: 带宽=内存核心物理频率 × 内存位宽 × 倍增系数 = 内存标称频率 * 内存带宽
- 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表示。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是一个不错的选择。
参考文档:
更多推荐
所有评论(0)