论文部分内容阅读
随着显卡的发展,GPU越来越强大。NVIDIA公司在2007年推出CUDA(Compute Unified Device Architecture),让显卡可以用于图像计算以外的目的。CUDA是一个新的基础架构,这个架构可以使用GPU来解决商业、工业以及科学方面的复杂计算问题。使用CUDA有以下几大特点和优势:便宜的价格,高效的并行性,高密集的运算,超长的图形流水线。支持向量机(Support Vector Machine,SVM)是一种建立在统计学习理论基础上的机器学习方法,具有相对优良的性能指标。SVM可以自动的对样本进行训练,从而获得分类器,但它的训练时间通常较长,而且某些训练算法需要占用的较大的内存空间。由于个人电脑(Personal Computer, PC)本身的计算能力和存储器的大小的限制,SVM算法在PC上对于大规模的数据无能为力。本文对当今主流的SVM训练算法做了深入的分析。对于每种类型的SVM,都把它抽象成数学模型,并把所有SVM按照其数学模型分成了三类。这三类问题分别是:超大规模凸二次规划,超大规模线性规划和超大规模线性方程组。为了解决这些问题,本文找出了每种算法中最耗时的部分,并将算法中比较耗时的矩阵求逆,矩阵向量乘法及规约操作通过CUDA的架构,移植到GPU上进行。在移植的过程,提出了基于CUDA平台的针对SVM算法的节省内存空间的雅克比迭代、共轭梯度以及线性规划算法。本文成功的解决了各种SVM训练过程速度慢和占用内存多的问题,使得SVM得以在PC上处理大规模的数据。实验的结果显示,利用CUDA优化程序后,速度得到了5-80倍的提升。同时,本文中使用的把程序从CPU平台移植到CUDA平台移植技巧,对于其它数值计算程序的移植,也有着借鉴意义。