深度学习模型里涉及大量的矩阵(张量)运算
这里简单分析一下CPU、GPU如何进行矩阵乘法运算
对于 维的矩阵 ,
以及 维的矩阵
在计算两者乘积的结果 时, 中任意一个元素的计算公式为:
据此可以看出 中每个元素 的计算没有关联性,也就是说可以同步并行计算。
如下图所示,CPU好比有几个或十几个“高性能的小计算器”(CPU的核心),而GPU好比有成千上万个“普通的小计算器”(GPU的核心),每个小计算器都被派去分别去执行 运算。由于运算仅涉及简单的乘法与加法,所以两种小计算器都能胜任,只是计算效率有高低之分。
由此不难看出,CPU完成单次运算的速度很快,但是由于一批次仅能算出数个元素,计算 中所有的元素需要多轮次的运算
而GPU虽然单次运算的速度很慢,但是一批次运算就可以算出大量元素
当 维度较小时,CPU与GPU计算的效率可能相差不大,当矩阵维度较高时,GPU拥有大量核心的优势就会更加明显(这里有一个实验对比【矩阵计算GPU加速】numpy 矩阵计算利用GPU加速,cupy包)
而深度学习模型中涉及大量高维的矩阵运算,因此GPU就可以很好地发挥加速作用