GPU和CPU设备的架构是不同的,主要有以下几点:
1、CPU的设计是用来运行少量比较复杂的任务,主要针对执行大量离散而不相关任务的系统;而GPU的设计主要用来执行大量比较简单的任务,主要针对解决那些可以分解成成千上万个小块并可独立运行的问题,因此,CPU适合运行操作系统和应用程序软件,即便有大量的各种各样的任务,也可妥善处理。
2、两者支持的线程方式不同。CPU的每个核只有少量的寄存器,为了能执行不同的任务,需要进行快速的上下文切换,每一次切换需要保存到RAM中,付出代价较大。而GPU同样需要上下文切换,但是GPU拥有多个寄存器组而不是单个寄存器组,因此,一次上下文切换只需要设置一个寄存器调度者,用于将当前寄存器组里的内容换进、换出,速度比将数据保存在RAM快好几个量级。
3、处理失速状态:这种现象通常是由I/O操作和内存获取引起的。CPU的调度策略是基于时间分片,将时间平均分配给每个线程。一旦线程的数量增加,上下文切换的时间百分比就会增加,效率就会下降。GPU采用的数据并行的模式,利用有效的工作池保持一致有事可做,不会出现闲置状态。因此,当GPU遇到内存获取操作或在等待计算结果时,流处理器就会切换到另一个指令流,而在之后再执行之前被阻塞的指令。
4、处理器数量上的差异。CPU是典型的双核或四核或者核更多的设备,而目前的gtx1080(帕斯卡)有4组GPC(显卡处理集群),每组GPC中有5个SM(128个CUDA cores),一共20个SM,每个SM可看作是CPU的一个核,CPU通常是单线程的程序,即每个核的每次迭代仅计算一个数,但是GPU默认的是并行的模式,它的SM每次可同时计算32个数(执行一个warp指令)而不是像CPU那样只计算一个数。
5、GPU为每个SM提供了唯一并且高速的存储器,即共享内存,为线程之间(一般为每个block之间)的通讯提供了重要机制。
欢迎批评指正!