GPU集群中的每一个节点配备GPU 卡,使机器的处理能力大幅提高。GPU 集群成为将来集群配置的重要模式,在未来的数据中心成为重要角色。FFT 算法是云计算、数据挖掘、科学与工程计算领域的基础算法。由于GPU 集群存储层次深,大规模FFT 算法在保持高性能的前提下移植到其他机器极具挑战。本项目针对大规模数据集,研究建立可移植的FFT 数学库原型。主要研究内容包括(1)针对FFT数学库原型这一最终目标,研究GPU集群编程新机制;(2)基于GPU集群编程新机制,研究GPU集群性能模型,开发FFT数学库原型;(3)此研究过程中积累的关于GPU集群编程新机制的技术、方法和工具可以广泛应用于解决其他算法的GPU集群移植问题。项目研究成果将提高GPU集群硬件平台的使用效率。
本项目所进行的研究工作分为相辅相成的两方面首先研究GPU集群程序设计方法的新机制;而后基于GPU集群程序设计方法的新机制,实现FFT数学库算法原型。当前GPU和GPU异构集群程序设计方法存在的最大问题是缺乏有效的软件工具和编程接口,帮助程序员简化程序设计。我们初步实现了Parray接口该编程接口使用数组类型对数据的物理存储和逻辑结构进行分离;提供统一的方式表示各种进程(线程)的创建以及它们之间的控制流转。Parray接口是位于MPI、Pthread和CUDA等程序库之上的一层软件层,它暴露了与性能相关的底层因素,又封装了实现细节,且不以牺牲性能为代价。Parray提供了GPU集群并行化的新语言机制。其主要思想是将多维数组扩展为多层次的树状结构;这一扩展间接反映了GPU集群树状存储器结构和不同处理器在集群架构中的异构性。数据的划分、分布、转置与变形均可以在新数组类型这一层次得以简洁表示和处理,而同类的线程也组成数组。在天河1A上,使用Parray书写的3维FFT代码最大运行到14336×14336×14336单精度复数的规模,共使用7168个节点。使用Parray实现的GPU集群3维FFT在天河1A上进行了性能测试,并与Intel MKL 10.3.1.048进行了比较,PKUFFT算法的性能远远超出MKL。同时,与MKL相比较,PKUFFT具有更好的性能延展性。