CNN在应用中,为什么GPU可以有加速效果

CNN在应用中,一般采用GPU加速,请解释为什么GPU可以有加速效果,主要加速算法的哪一个部分?

这里默认gpu加速是指NVIDIAcuda加速CPU是中央处理单元,gpu是图形处理单元,gpu由上千个流处理器(core)作为运算器。执行采用单指令多线程(SIMT)模式。相比于单核CPU(向量机)流水线式的串行操作,虽然gpu单个core计算能力很弱,但是通过大量线程进行同时计算,在数据量很大是会活动较为可观的加速效果。

 

具体到cnn,利用gpu加速主要是在conv(卷积)过程上。conv过程同理可以像以上的向量加法一样通过cuda实现并行化。具体的方法很多,不过最好的还是利用fft(快速傅里叶变换)进行快速卷积。NVIDIA提供了cufft库实现fft,复数乘法则可以使用cublas库里的对应的level3cublasCgemm函数。

 

GPU加速的基本准则就是人多力量大CNN说到底主要问题就是计算量大,但是却可以比较有效的拆分成并行问题随便拿一个层的filter来举例子假设某一层有nfilter每一个需要对上一层输入过来的map进行卷积操作那么,这个卷积操作并不需要按照线性的流程去做每个滤波器互相之间并不影响,可以大家同时做,然后大家生成了n张新的谱之后再继续接下来的操作。既然可以并行,那么同一时间处理单元越多,理论上速度优势就会越大所以,处理问题就变得很简单粗暴,就像NV那样,暴力增加显卡单元数(当然,显卡的架构、内部数据的传输速率、算法的优化等等也都很重要)

 

GPU主要是针对图形显示及渲染等技术的出众,而其中的根本是因为处理矩阵算法能力的强大,刚好CNN中涉及大量的卷积,也就是矩阵乘法等,所以在这方面具有优势

 

机器学习的算法一定得经过gpu加速吗?

不一定。只有需要大量浮点数计算,例如矩阵乘法,才需要GPU加速。
CNN对图像进行分类就是一个需要大量浮点数计算的典型案例,通常需要GPU加速

你可能感兴趣的:(深度学习)