在高性能计算领域,一般从两个方向出发追求高的计算效能。一是向上扩展 (scale-up),用更高频、更多内核的CPU;另一个方向是向外扩展 (scale-out),购置更多的CPU 及所需的附加硬件设备。过去10年高性能计算的主流方向都是不断向外扩展,使用更多节点,把问题分拆,并行在多个节点上运行。
但随着计算规模增大,向外扩展的缺点也变得越发明显。首先,客户在初期要购买大量服务器,一次性投入高。其次,随着机器增多,机房的电费和空间费用也会提高。另外也要求运维人员懂得灵活处理硬件故障事故。对大型数据中心来说,硬件故障是每天都可能会发生的事。
近年来,业内厂商开始研发并行处理图像的技术。人们通过图像处理和并行计算的自然关系,把技术从狭义的像素处理推广到广义的并行计算,研发出利用图像处理器进行运算的技术 。
开发GPGPU
目前有GPU厂商专门推出了运算平台CUDA(Compute Unified Device Architecture),该架构使GPU能够解决复杂的计算问题。 但是在 CUDA上实现叠前时间偏移算法需要根据 CUDA的编程环境对核心算法重新设计。当运行GPU指令集时,线程分为加载和处理阶段。加载阶段通过内存聚合方式 (memory coalescing) 访问GPU内存,增加每次读取的数据使用量。为进一步提高计算速度,有些GPU解决方案针对SM的流水线特性,优化当中逻辑和循环语句,尽可能减少数据传输量。
在核心算法上,可以把分布式集群及 GPU 计算两个概念结合。一个节点做母节点 (parent node),其余为计算节点 (compute node)。母节点把数据分拆发布到各计算节点。计算节点执行GPU 指令集时把指令输出到多块GPU卡上。计算出局部结果后返还给计算节点,计算节点再把结果返还给母节点。母节点把所有结果叠加起来得出最后结果。当中设计软件时要考虑到硬件运行时出现故障的处理方法,定期做断点备份及自动修复。
GPGPU硬件架构上可有两种配置:一种为GPU 卡分布式配置,另一种为GPU卡集中式配置 (图1)。
图2 的接驳方法好处是GPU 卡可一并和节点管理。但GPU卡用电量高,且需要有多条PCIe 2.0×16 的插槽才能在单台节点上插多块GPU卡。这适合用户于一开始购置计算节点时就已准备支援多块GPU卡,在供电及PCIe插槽要求上都满足到运行多块GPU卡。反之,图2则为在不需升级每台计算节点的前提下的配置。以一台可高密度插放GPU卡的 GPU 服务器来运行,计算节点以1至2块HIC (Host Interface Card) 卡连到GPU服务器上。
GPU算法 vs CPU算法
比较 GPU及 CPU 算法做偏移所需的时间,图3为在不同 CPU 核及 不同 GPU 卡上所得的计算结果。
以上的CPU及GPU测试平台为:
CPU 平台为 10 台节点集群,每节点有 两 个 双核 2.0GHz CPU;
GPU 1 平台为 1 台GPU节点,共 1 块 NVIDIA Geforce GTX 580 卡;
GPU 2 平台为 两 台GPU节点,共 2 块 NVIDIA Geforce GTX 580卡;
GPU 3 平台为 两 台GPU节点,共 4 块 NVIDIA Geforce GTX 580卡。
以处理10GB数据为例,CPU平台上以20个CPU计算需时522.1秒。而GPU3平台上以4块GPU卡计算需时仅52.6秒。简单比较CPU及GPU做叠前时间偏移的运算力: (552.1×20) / (52.6×4)。单块GPU显卡达到接近 50 台电脑的运算能力。以此简单推算硬件成本,配置以上CPU测试平台需要预算约 30万元。而构建GPU3平台的配置则需约10万元。
在电费成本上,搭建CPU 测试平台及一年的电费投入约32.19万元。而 GPU2 测试平台及一年的电费投入约 10.876万元。搭建GPU平台节省高达2/3的成本。
从以上的推算看出,在合适情况下使用GPGPU技术,把计算量大、并行化高的代码移植到 GPU 后,能大大提升运算效能,减少节点使用量,节省硬件及运维成本。GPGPU技术可与现时分布式计算并合使用, GPU卡也可高密度地插在服务器内。所以一件大的计算工作可先分布到各计算节点,而每节点再调度多块GPU卡做运算,最后把结果返还给母节点。这样只用数台服务器就可取得一个机柜传统集群的运算能力,无论在硬件及日后运维上都节省了不少成本。
吴秉熹 朱振明
作者简介
本文由联科集团(中国)有限公司商务总监吴秉熹博士及商务主任朱振明共同撰写,本文得到了石油行业计算机用户协会在GPU-PSTM开发上的全力支持,如读者对本文有何疑问,可与作者hkbd@clustertech.com 联系。
……
关注读览天下微信,
100万篇深度好文,
等你来看……