论文部分内容阅读
支持向量机(SVM)具有理论基础完备、所需训练样本数目少、泛化能力强等优点,已经在文本分类、人脸图像识别、手写数字识别、语音识别、生物信息学等模式识别领域中获得广泛应用。SVM训练可表示为一个二次规划(QP)问题,由于内点法(IPM)是求解线性和非线性QP问题的有效方法,因此可用于SVM训练算法的求解。但对于大规模数据集,SVM训练仍然存在内存需求大、运行时间长等缺点,这对SVM的应用范围及其有效性形成很大制约,已成为其发展瓶颈。
集群是目前最流行的一种高性能计算系统,近几年在TOP500中所占比例一直稳定在80%以上。值得注意的是,2012年11月发布的TOP500中带有加速器的超级计算机系统已达12.4%。图形处理单元(GPU)比CPU具有更高的浮点运算能力和内存带宽,尤其适用于数据并行计算,在TOP500中绝大多数带有加速器的超级计算机都采用了GPU。可以预见,GPU集群将是未来一段时间的主流高性能计算平台。
针对使用大规模数据集进行SVM训练时存在的内存需求大、运行时间长等问题,本文在GPU集群环境下,提出采用MPI+CUDA混合编程模式求解基于IPM算法的SVM训练问题。通过将数据分布在多个节点上降低对单节点的内存需求,并使用GPU加速对计算密集部分的求解,包括不完全乔列斯基分解(ICF)、I-H(τ)D-1H、乔列斯基分解(CF)和Δx等,提高SVM训练的速度。在千兆网连接的5节点GPU集群系统环境下,使用ticdata、ijcnn1、covtypes、rcv1和url等不同规模的数据集进行实验。结果表明,在满足精度要求的同时,covtypes、rcv1和url等大规模数据集获得3倍于CPU集群的加速,rcv1数据集更是比LibSVM获得接近470倍的加速。