论文部分内容阅读
随着超级计算机的诞生,高性能计算得到了飞速的发展,其带来的变化具有深刻的意义。高性能计算应用跨域众多并悄无声息的渗透到科研机构、实验室、教育机构之中,并在天气模拟、医学研究等领域作出贡献。与此同时,随着游戏产业的不断推动,图形处理单元(GPU)的性能亦得到了飞速的发展。GPU在计算能力、功耗、成本等多方面的优势使得探索大规模CPU+GPU异构平台上的高性能计算有着重要意义,全世界超级计算机TOP500排行榜中排名靠前的很多是CPU+GPU异构系统。
快速傅里叶变换(FFT)在信号处理、模式识别、媒体压缩、医学等多个领域有着广泛的应用,越来越受到各个领域的关注和重视。传统傅里叶变换适用范围为规则区域,在实际的应用中需要计算非规则区域上的傅里叶变换,非规则区域的FFT计算已被列为FFT未来发展的四个方向之一。研究非规则区域数据快速变换及其CUDA-MPI并行算法对于高性能计算研究和评测具有及其重要的意义。并行FFT存在各计算节点间的大量数据聚合通信尤其是alltoall通信,能够对高性能计算机的内存访问性能、网络带宽和延迟等功能进行综合测试,显存和内存之间大量数据的拷贝能够对高性能计算机内存和显存间的数据传输带宽进行综合评测。
本文主要研究二维六边形区域和三维菱形十二面体区域两个非规则区域上的FFT算法(FFTH)。首先,通过充分利用CUDA的层次化并行机制及其库函数,设计了二维FFTH的高效率的单GPU卡CUDA算法。在此基础上,通过引入PinnedMemory技术、优化Kernel函数数据读写以及优化排序算法,对单GPU卡二维FFTH算法进行了优化改进,并且推广到单GPU卡三维FFTH算法。最后,通过研究GPU上分布式并行数据的转置与排序算法,优化设计了二维FFTH的CPU+GPU异构CUDA-MPI算法,并将算法推广到三维。对于三维FFTH的CUDA-MPI算法,又进一步进行了优化,引入流水线技术将计算和数据传输进行重叠,同时采用InfiniBand网络提高数据的网络传输速度。
本文设计实现的二维FFTH单GPU卡CUDA程序与CPU串行程序相比可以达到12倍加速比,其计算效率与CUFFT所提供的传统二维方形区域FFT程序的效率基本一致。设计实现的三维FFTH单GPU卡CUDA程序与CPU串行程序相比可以达到16倍加速比。设计实现的二维FFTH的CUDA-MPI程序其运行效率比MPI并行版FFTW提高25%,比基于CUFFT本地计算和FFTW的并行转置实现的方形区域并行FFT提高37%。设计实现的三维FFTH的CUDA-MPI程序与MPI并行版FFTW相比加速比达到2.5倍,其运行效率比基于CUFFT本地计算和GPU上并行转置实现的长方体区域并行FFT提高23%。