【IT168 专稿】在前不久刚刚结束的国际高性能计算咨询委员会第二届中国研讨会上,委员会主席Gilad Shainer先生与俄亥俄州立大学的Dhabaleswar K.Panda教授一同接受了IT168记者的采访。就时下高性能计算领域的几个主要热点做了探讨:GPU计算在高性能计算中的日益激增、云计算与高性能计算的关系等。
中国高性能计算成长迅速 率先采用GPU非常明智
美国俄亥俄州立大学的Panda教授是全球范围内高性能计算领域的专家,其在MPI计算优化领域做出了杰出的贡献。他表示,中国高性能计算这两年发展迅猛,与中国经济的稳步增长有密切关系。另一方面,中国高性能计算的爆发式增长尤其是GPU+CPU计算模式的领先,主要原因有两点:
▲美国俄亥俄州立大学 Dhabaleswar K.Panda教授
1、GPU虽然有编程通用性差等弊病还处在应用边缘,但对于高性能计算来说GPU庞大数目的流处理器非常适用于浮点运算。中国的高性能计算系统规划和建造者们早于其他国家认识到了这一点,因此这样的异构计算机在中国出现如此大规模的部署(指“天河一号”)也为全球HPC工作者做了榜样。
2、目前很多Top10里的高性能计算机采用的是升级换代的模式,因此包括Juguar在内的高性能计算系统你可以看到他们在升级处理器和内存来提升性能。这样做的好处是节省了重新构建系统的成本,缺点是他们不能做架构调整。因此升级处理器带来的性能提升幅度有限,却又受制于系统架构不能采用GPU计算。所以这一点上中国的高性能计算更有远见。
另一个层面上来看,包括Nvidia Tesla所支持的CUDA环境,AMD Streaming系列计算卡所支持的OpenCL以及英特尔Knights Ferry系列所支持的x86通用编程环境。所有这些编程环境都在试图让使用GPU的人更轻松的对“小核”做并行编程。
云计算与高性能计算共存 用GPU-Direct为GPU计算加速
国际高性能计算咨询委员会主席Gilad先生认为,云计算并不是新概念尤其是在高性能计算领域里——早先各地的计算人员就以云的方式在提交作业。从服务器农场到网格再到云计算,实际上是云计算这种技术背后的模式正在逐步走向商业化,并得到人们的重视。
▲国际高性能计算咨询委员会主席Gilad Shainer先生
据Gilad先生介绍,很多云计算厂商将自身的云计算环境部署在超级计算机上,如Amazon的EC2和Oracle Sun Exadata和Exalogic两套数据库专用系统中都采用了基于Infiniband的超级计算机(规模不同)。Gilad认为,云计算里面使用高性能计算可以有效降低用户的租用成本。
另一方面,从长远来看云计算目前还处于概念定型和启动阶段。商业环境决定了私有云必然是自主建设,或自行研发或采用成熟解决方案,而云环境对计算性能的渴求使得高性能计算必然会应用其中。可以这么说,云计算不一定可以做高性能计算(系统延迟、负载和高可用等不符合高性能计算标准);但是高性能计算系统一定可以作为云计算的重要节点。
对于GPU计算的优化,Gilad先生所在的Mellanox公司做了很多努力。其中最突出的贡献要数通过ConnectX-2 Core-Direct技术队GPU通讯进行优化。这里简单说说新传输方式与旧方式的区别(如下图):
本图体现了GPU计算过程中数据是如何传递的:CPU从内存中读取需要GPU计算的原始数据,传递给北桥芯片的PCI-E控制器,北桥芯片将数据传给GPU,GPU将其存入缓存,计算的结果也存入GPU缓存(注意这一过程是不断进行的,动态的);计算结果再从GPU缓存流经GPU传回给北桥控制器,北桥传回CPU,CPU将之存入内存。
如果说以上过程足够繁琐,效率很低的话。那么来看看GPU计算好的结果是如何传输的——CPU从内存里重新读取GPU计算的结果,将需要传输的部分再存入内存中网络模块读取的指定区域——infiniband网卡通过CPU再读取相关信息传出去。因此可以说,GPU计算时的数据传输是最大瓶颈。
Mellanox的解决方案很简单,在不改变现有IT架构的情况下——意即原先那套计算流程不变。变化只有一点点:GPU计算结果在存储到内存之后,直接被infiniband读取传输走,减少了再次通过CPU读取转存的步骤。从而降低了数据传输的时延——这一点点的改进使得GPU之间的时延降低30%,消除了数据在infiniband和GPU之间的拷贝,用心良苦可以想见。