参考文献:
基于GPU的矩阵计算并行加速方法研究_李丰 哈尔滨工业大学博士论文
在工业级别中,为了提高机器学习模型运算的速度,甚至是可以牺牲一定的准确度。程序员想尽了一切办法,一般从两个方面去提高模型的运算速度,一方面是提高硬件的性能,另一方面是利用硬件的特点,尽量加快运算的速度,不断优化算法。
接下来结合GPU的特点来说明矩阵加速的原理
GPU是专门为了图像渲染设计的,所以一定很适合做矢量运算。
比如卷积运算,一般都用矩阵运算完成,所以深度学习一般都是用GPU去运算。
GPU是一个高度线程化的流式处理器组成的序列,一个GPU包含的流式处理器越多,就可以在同一时刻处理更多的任务。GPU架构如下:
GPU的并行是单指令多数据的并行,而很多计算问题又不可避免地出现数据依赖,因此GPU上的矩阵计算要处理数据依赖问题; 在解决数据依赖问题同时,也要提高计算资源的利用效率。
矩阵分为稀疏矩阵和稠密矩阵
接下来介绍CUBA(pytorch中常常用到cuba加快矩阵运算速度)
cuba可以利用NVIDIA系列显卡对一些复杂的计算进行并行加速。
利用cuba可以让代码既可以使用CPU执行,也可以用GPU执行。即使是有GPU的机器,它也不会自动使用GPU,而是需要在程序中显示指定。调用model.cuda(),可以将模型加载到GPU上去。pytorch cuba官方使用文档如下