论文部分内容阅读
搜索引擎可以帮助用户查找相关的信息,搜索引擎返回的搜索结果决定了搜索引擎的质量,因此,如何获得最优的搜索结果,以使得用户得到与自己所请求的数据最相关的结果就显得尤其重要,排序学习的出现为解决这一问题提供了新的思路,它可以通过对用户所要检索的信息进行必要的排序,按与用户的请求的相关度输出相关信息。虽然传统的排序学习算法可以很好地解决小规模文本的排序问题,然而由于互联网行业的快速发展,互联网信息总量不断地膨胀,传统的排序学习算法无法有效实时地处理大规模数据,因此,本文使用两种并行编程模式分别对排序学习算法进行加速。本文的主要研究内容如下:(1)选择OpenCL(Open Computing Language)并行计算模型来加速本文算法,同时介绍了排序支撑矢量机算法(Ranking Support Vector Machine,RSVM)以及序贯最小化算法(Sequential Minimal Optimization,SMO)的相关知识并详细分析SMO算法的具体步骤,根据GPU(Graphic Processing Unit)硬件架构的特点分析串行算法,设计了相应的并行算法流程,对算法中的可并行部分采用OpenCL进行编程加速,实验结果表明与串行排序支撑矢量机算法相比,并行排序支撑矢量机算法的加速性能最高提升了90多倍。同时为了验证OpenCL程序的可移植性,将OpenCL并行程序移植到多种异构设备中,并对基于OpenCL的并行排序学习算法在各个设备的性能差异进行了详细分析。(2)将基于OpenCL的并行排序支撑矢量机算法扩展到多GPU下运行,同时对多GPU实施过程中的同步问题进行了详细分析,运用一种有效的同步方式减少了多个设备之间的同步开销,在多GPU上运行的结果表明并行算法的加速性能相对于单GPU又有了进一步的提升。(3)利用多线程并行编程模式OpenMP(Open Multiple Processing)将排序支撑矢量机算法并行化,并在多核CPU和Intel MIC(Many Integrated Core)上进行实验,结果表明基于OpenMP的并行排序支撑矢量机算法在多核CPU与MIC上都取得了优异的加速效果。同时比较了基于OpenCL和OpenMP的并行排序支撑矢量机算法在多核CPU与MIC上的性能,分析了两种编程模式的差异。