论文部分内容阅读
推荐系统的任务是通过联系用户和产品,帮助用户发现对自己有价值的信息。优秀的推荐算法可以使得推荐系统的效率大大提高,增强推荐结果的正确性,满足海量用户的需求。异构众核体系结构的发展为高性能计算技术与推荐系统的结合带来了新的发展契机。本论文面向当前主流的多核与众核处理器实现并优化一种推荐系统领域极具代表性的算法:交替最小二乘法(ALS),旨在从不同角度最大化该推荐算法的性能。本文的主要工作和创新点包含以下三点:1.使用OpenCL实现了ALS算法,使其具备跨平台可移植特性;针对不同平台实施不同的优化技巧,组合不同优化技巧产生多个代码变体,从而方便研究者针对不同平台选择最优的优化方法。实验结果表明,相对于基准实现,在Intel E5-2670平台上优化后的ALS的执行速度提高为原来的5.5倍,在NVIDIA K20C平台上的性能提高了21.2倍;该实现在多个数据集上的性能均优于cuMF。2.在分析ALS算法热点和剖析已有ALS实现所存在问题的基础上,进一步提出了一种基于细粒度分块并行策略的ALS实现。该实现通过细粒度的任务划分与合理的线程配置实现了该算法性能上的大幅提升。实验数据表明,与基准实现相比,该实现在NVIDIA K20C平台上实现了多达88倍的性能加速,在AMD gfx803平台上实现了多达98倍的性能加速。此外,该实现在不同平台和不同特征维数上的性能均超越了cuMF。3.根据推荐系统数据集的特点,提出了一种基于数据重用策略的ALS实现。该实现是基于一种新的稀疏矩阵压缩分块存储格式以及数据重用/重排两种优化策略。数据重用策略降低了不同存储层次之间的数据传输次数,从而减少了访问全局存储的压力。数据重排策略通过重新组织稀疏矩阵的行列,最大化数据重用的收益。实验数据表明,相对于领域内最快的Gates实现,本文提出的实现在K20C平台上达到约2.08倍的加速比,在TITAN X平台上能够取得约3.72倍的加速比。据笔者所知,这是目前领域内最快的基于ALS算法的矩阵分解实现。本文结合了交替最小二乘算法、推荐系统数据集与异构众核体系结构的特点,合理地将任务映射到处理器的计算核心,运用了多种面向体系结构的优化技巧,从而能够充分地利用硬件架构的资源,实现在不同平台上矩阵分解性能的大幅度提升。本文所提出的ALS实现能够被直接地融入到当前主流地大数据处理框架中。