针对集群的GPU
到目前为止,我们只讨论了单一节点的GPU使用。GPU编码也可以用于连接CPU,前提是CPU运行的是并行MPI。GPU势必在未来起到更大的作用,例如大规模应用于集群。其实现在,GPU也已经可以以某些方式用于集群。
GPU集群,或者GPU为主的集群,最近被用于多屏显示(Tiled displays)。Chromium就是一个例子,Chromium可以实现并行渲染。通过若干GPU计算节点,Chromium可以来驱动多个显示或者单一显示。
斯坦福大学的Mike Houston,已经在GPU集群方面工作了一段时间。他所在的小组就正在尝试用并行GPU和HMM (Hidden Markov Models隐形马尔科夫模型)来进行蛋白质研究。HMM编码被重写,在GPU上运行,之后再被修正,数据库搜索被分成多个GPU集群节点。总体来讲,这并不是一个特别理想的集群,因为每个搜索都是独立的,因此全部搜索并非并行。但是每个节点的性能都很不错,大约达到了单一CPU的10~40倍,更重要的是,并行编码扩展得非常好。
SUNY Stony Brook的虚拟化实验室,已经在GPU集群上努力了好几年。该工作室在GPU分布式图像和分布式计算领域有着较深的研究。2004年,虚拟化实验室发布了Lattice Boltzmann Method (LBM) GPU集群的研究报告,该报告是纽约时代广场的空气污染模拟状况。这个小组在研究的时候,采用了显卡到集群中的节点,来重写LBM编码。因为GPU不能直接访问网络界面,数据在传输时转换成CPU能识别的编码,而在节点处则被转换回GPU能够识别的编码。通过这种方法,程序员得到了4.6倍于CPU的速度提升。
根据LBM编码的经验,虚拟化实验室最近也开发出了专门用于GPU集群的中间件ZippyGPU。ZippyGPU运行在GPU接口之上,负责压缩和管理API提供的函数和对象,并且简化代码。代码可以通过ZippyGPU访问网络和GPU。ZippyGPU主要用来支持虚拟化、图像合成、GPU计算。
Acceleware是一家专门开发GPU软硬件的厂商。他们的产品Accelerator Board是插在PCI-e上,来提供工作站的GPU处理。他们也可以给工作站提供2~4个加速器板。性能有多大提升呢?举一个例子来说明:Acceleware公司以共轭斜量法来写方程,在其中一个32-bit的问题上,采用加速器板得到了3倍于CPU的性能。
总结
虽然目前HPC采用GPU进行大量计算的案例还很少,但是我们从现有的案例中已经可以看到GPU的巨大潜力。虽然GPU用于HPC仍旧存在很多问题,但是随着技术的发展,我们对GPU的未来充满了信心。