MATLAB计算机视觉经典应用
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.3.3 CPU和GPU

接下来讨论一下CPU与GPU。如果说要进行计算机视觉跟图像处理,那么肯定逃不过GPU运算,这可能也是接下来需要学习或自学的一个知识点。

这是因为当前大部分关于计算机视觉的论文都是用GPU去实现的。但是在应用领域,因为GPU的价格比较昂贵,所以CPU的应用场景相对来说占大部分。

CPU与GPU的差别主要在哪里呢?它们的差别主要可以在两方面去对比,一是性能,二是吞吐量。

将性能换成另外一个单词,叫作Latency(低延时性)。当性能越好时,处理分析的效率越高,相当于延时性就越低,这个是性能。吞吐量就是同时能够处理的数据量。

CPU具有高性能,即超低延时性,能够快速处理复杂运算,并且能达到一个很好的性能要求。而GPU是以一个叫作运算单元为格式的,它的优点不在于低延时性,因为它确实不善于做复杂运算,它的每个处理器都非常小,相对来说会很弱,但是它可以让所有的弱处理器同时去做运算,相当于能够同时处理大量的数据,这就意味着它的吞吐量非常大。CPU重视的是性能,GPU重视的是吞吐量。

因此,GPU大多时候会跟另外一个词语联系在一起,叫作并行计算,意思就是它可以同时做大量的线程运算。那么为什么图像会特别适合用GPU运算呢?这是因为GPU最开始的设计就是图形处理单元,意思就是可以把每个像素分割为一个线程去运算,每个像素只做一些简单的运算,这就是最开始图形处理器出现的原理。

当GPU用于图形渲染时,要计算的是每个像素的变换。因此,每个像素变换的计算量是非常小的,可能就是一个公式的计算,可以放在一个简单的计算单元里面去进行,这就是CPU与GPU的差别。

基于这样的差别,我们才会去设计什么时候用CPU,什么时候用GPU。如果当前设计的算法的并行能力不是很强,从头到尾、从上到下都是一个复杂的计算,没有太多可并行的地方,那么即使使用了GPU,也不能帮助我们很好地提升计算性能。

因此,我们要了解的是为什么要用GPU,以及在什么样的情况下用GPU能够使它的效果最好。