论文部分内容阅读
在科学领域,随着各类精密仪器的广泛应用和科学计算时模拟生成的数据越来越多,科研人员需要分析和处理的数据也越来越多。数据规模之大使得传统的串行计算方法无法在研究人员可接受的时间开销内得到数据处理结果。如何高效地分析处理庞大的科学数据,并从中获取有价值的信息,也成为了一个挑战。主成分分析算法(Principal Component Analysis,简称PCA)可以有效地简化信息,压缩数据,成为了大数据应用中广泛使用的数据预处理技术。然而在实际应用中,由于数据规模过大,数据预处理这一步还是会造成巨大的时间开销。如何使PCA算法在处理大规模数据时尽可能快速且高效,是很值得研究的问题。传统的超算系统更多关注于“计算密集型”应用,由于需求驱动,新兴的大数据分析生态圈更多关注于“数据密集型”应用。两种技术在一定程度上出现了一些分离。大数据时代下,如何融合大数据技术,利用高性能计算系统的庞大计算能力处理大数据问题已经成为了一个机遇与挑战。本文即以PCA算法为研究对象,研究PCA算法在高性能计算系统上处理大规模科学数据的并行优化技术与高效实现。主要取得了如下成果:1)设计了一种快速PCA并行优化算法。该算法首先对PCA求解的过程进行简化,然后将大数据分析技术中MapReduce的计算模型的思想迁移到高性能计算环境中,使得PCA算法设计在利用高性能计算强大计算能力的同时,又易于在不同平台上使用和实现。2)提出一种面向多核体系结构的多线程PCA实现算法。该算法是快速PCA优化算法设计在多核体系结构下的高效实现。采用OpenMP实现MapReduce计算模型的功能,SIMD进一步优化计算的方法,相对于高效串行算法最多得到110倍的加速比,与在相同计算环境下Intel DAAL算法库中PCA算法的实现相比,最多可以得到28倍的加速比。3)提出一种面向分布式体系结构的分层混合并行优化的PCA实现算法。该算法是快速PCA优化算法设计在分布式体系结构下的高效实现。采用MPI实现粗粒度并行,OpenMP实现细粒度并行,SIMD进一步优化计算的方法,在128个节点上相对于高效串行算法可以得到145倍的加速比,在256个节点上,性能约为Spark MLlib的29.6倍。4)提出一种面向CPU+GPU异构体系结构的异构混合PCA实现算法。该算法是快速PCA优化算法设计在CPU+GPU异构体系结构下的高效实现。采用CUDA实现快速PCA求解过程,OpenMP实现多线程并行控制GPU的方法,在单个GPU上相对于串行算法可以得到202倍的加速比,在单个节点上使用多线程并行混合优化实现可以得到最高553倍的加速比。同时,算法还在SNP基因分析处理HapMap3数据集应用中进行了测试,得到了很好的性能。