成祖大王GPU(图形处理器),从名字中可以看出,最早是用来显示图像的。但是后来有人开始利用GPU做计算,于是有了所谓的GPGPU(General-purpose GPU),也就是可以做计算的GPU。在NVIDIA的GPU上,CUDA就是让你编写GPU程序的平台。
我们平时跑的大部分程序都是在CPU上的,CPU的每个核很强大,有很大的缓存,分支处理也比较快。总之就是功能很多,很全面,各种程序都可以跑。这些优点带来的缺点就是一个CPU里面放不了太多核(最多几十个),整体的计算能力不是特别的高。
GPU和CPU不同。GPU的核(CUDA core)很多,现在是大概几千个,所以整体计算能力很强。但是相比来说每个核的主频低,缓存少,单核比CPU的一个核差很多。而且GPU的架构是SIMT(Single instruction multiple thread),所以并不是每个核完全独立运行的。由于GPU的这些特点,它很适合做那种并行程度高的运算,比如矩阵乘法,但是并不适合跑比如Web服务器这种东西。
当CPU的计算能力和数据传输带宽成为瓶颈的时候,GPU可能能给你提供更高的计算能力和传输带宽。
GPU的峰值运算能力和内存带宽(显存和GPU之间)都比CPU高一个数量级。但是因为结构的特殊性,不是所有任务都能有效发挥GPU的性能。
先说一个概念上的误区(我看你提问时问的时显卡和GPU, 所以解释一下)? GPU,就是通常说的显卡.但GPU其实是显卡的计算芯片, 而显卡包含了外围的通用电路.还包括散热统. 但是就叫GPU吧.
就好比CPU处理的是一整张完整的数学考试卷. 里面包含了加减乘除,概率,微积分,矩阵,巴拉巴拉各种数学题.
但是GPU计算的有点像小学时候做的速算比赛的试卷,整张试卷只有加减,甚至没有乘除,但是要求的是时间效率.
因为这个原因, 笼统的说, 他们之间的架构区别就在于, GPU有特别多个核心,可以同时调度.动则1000多, 2000多个核心. 但是每个核心的速度并不高, 也不需要多高.
于是就有人想到了, 如果能把一些复杂度低,但是计算密集度大的问题交给GPU去做,效率岂不是更高?
比如现在流行的人工智能, 他把一个复杂的问题拆解成很多个简单的基础计算, 最后得出答案.这时候GPU的优势就体现出来了.
CUDA框架是属于一个API, 她提供了很多封装好的接口指令,让你可以通过高级语言去直接操作GPU底层的指令集, 如果没有这个, 不说其他问题, 单单学习成本和工作量就能让人放弃学习吧.
据说, 魔兽世界, 你进入奥格瑞玛城, 四下环顾的时候, 你看到的每帧画面中大约有70万个三角形.
GPU就是显卡的发动机,由于基本不单卖,也可以认为GPU等于显卡。GPU用来做并行计算可以理解为你GPU控制多个工人sm同时用织布机warp织布,织布机上的每根线就是一个并行线程thread。
|