1,GPU的工作技术含量相比CPU低多了。CPU就像是博士生,从加减乘除到积分微分样样拿手,难题都难不住他,但是工作量很少,只解决关键问题。相反GPU则是一大群小学生,进行整数运算和逻辑运算,面对同样的一千道加减乘除,一千个小学生干活的速度肯定比一个博士生快得多,其实就完全是数量造成的质变,简单粗暴~
2,从单核单线程性能来看,GPU 的浮点性能并不强于
CPU。那么为什么 GPU 跑评测能够有更好的浮点性能?因为 GPU 几乎必定是等效于多核多线程的。例如根据资料记载 GTX295 有 480 个 CUDA
核,也就是说进行浮点运算的时候相当于
480 核心的 CPU。用一个 480 核心 的 CPU 跟
8 核心 4 核心的 CPU 去比较,自然结果很显然了。。。这涉及到 GPU 跟 CPU 任务的典型区别, GPU
任务通常是可以高度的并行化的,而 CPU 任务往往难以拆分成多个线程。
3,导致GPU在某些运算上比CPU快的因素有很多,一种简单的理解方式:CPU上大量的晶体管被用来做Cache,而GPU上绝大部分晶体管被用来做ALU。用来做运算的晶体管多了,自然速度会快。但不是所有的并行运算在GPU上都快。需要满足一些限制条件才能充分发挥GPU的处理能力,比如内存访问的Pattern
/ Branch的类型和数量。
4,目前 GPU
处理的数据有两个特点:一是大量数据相关性不大,可以并行处理;二是数据结构不复杂,适合高数据带宽的优化。如果数据符合这两条,其实 CPU
加上 SSE 也会很快。不过 CPU 目前处理的数据都是相关性很复杂的。