论文部分内容阅读
随着数据挖掘、模式识别等领域的发展,机器学习越来越受到人们的重视,作为机器学习领域的一种重要算法,支持向量机由于其优良的性能指标得到了广泛的应用。而对于面向服务器和高性能计算的龙芯3系列平台,并没有专门优化的支持向量机工具包,直接移植的程序往往性能较差,不能充分利用龙芯平台的硬件特性。因此,结合机器学习算法特点研究龙芯平台下的支持向量机优化方法,对于龙芯在数据挖掘和模式识别等领域的应用有着重要意义。 本文以龙芯3B为平台,选择了流行的支持向量机工具包LIBSVM进行优化。针对LIBSVM中密集的点乘操作,本文使用向量指令对其加速,实现了点乘操作的单指令流多数据流计算,提高了基础操作的性能。针对龙芯3B的多核架构,本文提出了基于动态阈值的SMO算法工作集选择并行化方法,充分利用多个处理器核心,又能针对不同的问题规模在串/并行方法间寻求折中。除此之外,本文还利用OpenMP对LIBSVM执行过程中的关键函数进行了并行化,并对不同调度策略和任务粒度进行了对比,选择最优方案。通过并行化,原本在单一处理器核上执行的计算被分配到多个处理器核同时进行,提高了程序的性能。 本文对每种方法的优化效果分别进行了测试。结果表明使用向量指令优化后的基础函数能够获得10%左右的性能提升,而通过并行化手段,能够使程序性能获得成倍的提高。通过以上优化,龙芯平台下支持向量机的训练效率得到大幅提高,有助于基于支持向量机的应用在龙芯平台上的部署。