学习GPU编程近半个月了,一直专注与编程的手段、方法、技巧等细节,却还没有从宏观看一下GPU是个什么样子。
GPU就是显卡,graphic processor unit的缩写,在早期主要用于视频加载、3D图形处理等显示方面的应用,特点是一个GPU里有很多运算单元可以同时工作,相比于CPU的双核或者4核是一大亮点。
尽管GPU在高速缓存、寄存器数量、时钟频率等方面远不及CPU,但多核(上百个)优势如果被充分利用的话,相较于CPU依然可以取得明显的加速效果。
因此,越来越多的人不再仅仅把GPU当成图形处理核心,而是通用计算核心,这就是GPGPU的来历。全球最大的GPU产商Nvidia公司在这方面特别积极,为GPU开发了一套自己的类似C语言的语言界面Cuda来使得对GPU编程更加容易入门。相信GPU在成为通用的并行计算加速器上有很光明的前途,这也是我愿意跟着黄老师做GPU加速项目的重要原因之一。
在百度百科上浏览了半天,终于能明白一些常见的GPU参数有什么样的意义,在这篇文章里,会介绍使用不同的参数的显卡会给程序性能带来什么样的影响。最后还以我个人华硕N56 VZ的显卡GT650M为例,与市面上比较好的显卡作对比,看看差别在哪里。
显存位宽是显存在一个时钟周期内所能传送数据的位数。
显存带宽 = 显存频率*pump rate*显存位宽/8 (单位是byte)。(对于DDR技术的内存,pump rate一般是2)
显卡内存:graphics double data rate的缩写是GDDR,一种显卡用内存。
目前比较流行的是GDDR3,GDDR5是即将被广泛应用的高性能,性能是GDDR3的4倍。
对于大多数用GPU来处理的问题而言,对内存的读取是阻碍性能进一步提升的一大瓶颈,在这种情况下,显卡的显存位宽和显存频率就更为重要。
读取内存的时间,除了取决于显存频率外,对编程人员来说,更主要的还是在于单次读取内存时导致的延迟。
PCI:是电脑的总线接口,规定了外部设备与计算机主板相连的总线标准。
目前流行的电脑总线接口是PCI-E2.0,其数据传输速度可达5Gbps,也就是说外部设备(如显卡、声卡等)向电脑主板上传输信息时,每秒钟最多为5G bit
已经面世的下一代标准PCI-E3.0,数据传输速度可达8Gbps。
流处理器器数:sp。sp越多,显卡的并行计算能力越强大。
核心频率:显示核心的工作频率,也就是sp处理器的工作频率。
不同显存的对比:GT650m和GTXTITAN-6GD5,GT650M是我的笔记本目前正在使用的显卡。
对于型号为:GTXTITAN-6GD5的显卡,有2688个流处理器单元。
显存频率为6GHz,显存位宽为384bit,则显存带宽就是288GB/s,这种显卡的售价在8000元左右。
而对于普通的如GT650m的显卡,有384个流处理单元。
显存频率为1800MHz,显存位宽为128bit,则显存带宽就是28GB/s,这种显卡的售价并不贵。
GTX480显卡,有480个流处理器
显存频率为3696MHz,也是384bit的显存位宽,显存带宽在173.3GB/s,价钱在3000元左右。