论文部分内容阅读
随着信息技术及互联网的发展,人类所面对的网络信息迅速膨胀,因此如何从杂乱无章的海量文本信息中快速刷选出目标信息,一直是自然语言处理领域的研究热点。文本聚类是一种基础的自然语言处理技术,在文本聚类中,LDA(Latent Dirichlet Allocation,隐含狄利克雷分配)算法是一种主题模型聚类,根据从文本中发现的主题进行分类,能有效提高聚类结果的质量。然而在实际应用中,LDA算法的程序在计算大规模数据时速度较慢,原因是使用相同的控制逻辑处理大量数据,需要在CPU上对这些大量数据反复循环。根据LDA算法的耗时特点,可以对LDA算法进行并行化设计,并利用并行计算技术对其进行加速。计算机图形处理器(Graphics Processing Unit, GPU)不断高速发展,目前已拥有强大的并行处理能力和可编程流水线,非常适合于高效率低成本的高性能并行数值计算,为图形处理之外的通用计算任务提供了良好的运行平台。基于GPU的通用计算已成为高性能计算领域的热点研究课题。CUDA(Compute Unified Device Architecture,统一计算设备架构)是一种新的处理和管理GPU并行计算的硬件架构与编程模型,由NVIDIA公司开发。CUDA将GPU视作一个数据并行计算设备,并且无需把这些计算映射到图形API。CUDA程序的开发语言以C语言为基础,并对C语言进行扩展。在CUDA程序中,核函数调用GPU执行并行计算,通过GPU内部硬件提供的多层次存储器,GPU内部计算所需的数据读写操作效率都非常理想,因此核函数的执行时间往往很短。采用CUDA编程模型,对LDA文本聚类算法并行化设计与实现,可以充分利用GPU的并行计算能力,取得很好的加速效果。本文首先介绍了Mahout机器学习库中基于MapReduce模型的LDA程序主要架构,该模型是为实现分布式计算而设计,能够在Hadoop计算集群上分布式运行。接着,分析并找出其中计算过程繁多的串行代码部分,研究将这些代码并行化的方案。最后利用CUDA编程模型实现并行程序,将核心的计算任务从CPU转移到GPU,由串行计算变为并行计算,实现了GPU并行加速。实验表明,利用GPU强大的并行计算能力,可以大幅加速基于MapReduce编程模型的LDA文本聚类程序,对GPU在数据挖掘领域的其他应用具有一定的借鉴意义。