HPC集群编程模型研究

2012-11-09 06:41许建亚田园齐记周庆国
中国教育网络 2012年4期
关键词:细粒度高性能计算能力

文/许建亚田园 齐记 周庆国

HPC集群编程模型研究

文/许建亚1田园1齐记1周庆国2

高性能计算是计算科学的一个分支,研究并行算法和开发相关软件,并致力于开发高性能计算机。目前较为流行的并行程序设计模型为基于消息传递M P I(Message Passing interface)的编程模式,基于共享内存的Ope MP模式和结合MPI+OpenMP的混合编程模型,以及利用GPU作为并行数据计算设备(GPU计算的模式就是在异构协同处理计算模型中,将CPU与GPU结合起来加以利用, 应用程序的串行部分在CPU上运行,而计算任务繁重的部分则由GPU来加速)的MPI+OpenMP+CUDA的三级混合编程模型。本文基于中国科学院近代物理研究所超算中心的深腾 7000G 集群,进行GPU通用计算能力和并行编程模型的研究,采用MPI+CUDA多粒度混合编程模型,节点间使用MPI进行通信,实现粗粒度并行,节点内利用GPU强大的并行数据处理能力,使用CUDA架构实现细粒度的数据并行和线程并行。实验结果表明,该方法能使并行效率显著提高,同时证明MPI+CUDA混合编程模型能充分发挥集群节点间分布式存储和节点内共享存储的优势,为CPU+GPU混合架构的集群系统提供了一种有效的并行策略。

高性能计算四个历程

高性能计算机是信息产业的重要领域,是现代社会科学研究、社会服务、经济活动中一种极为重要且不可或缺的战略工具,世界上许多国家对计算能力的建设和计算科学的发展都给予了高度重视。自从1946年ENIAC(Electronic Numerical Integrator And Computer)在美国宾法利亚工程学院的摩尔电子工程学院诞生起,人类对高性能计算的追求就一直没有停止过,高性能计算经历了史前时代、向量机时代、大规模并行处理机时代、集群和超级计算机时代四个大的发展阶段。二十世纪九十年代中期,随着Linux操作系统的出现,微处理器和动态随机存储器速度的提升,PCI总线的研制成功以及局域网技术的发展,高性能计算的集群和超级计算机时代到来。现在,高性能计算机已经被广泛地应用到了生命科学、物理、化学、材料等研究领域,还被应用于能源、气候、环境、金融、游戏等产业与公共服务领域,高性能计算的普及在一定程度上改变了科学研究的方式,已成为继理论科学和实验科学之后科学研究的第三大支柱。

深腾7000G集群介绍

深腾7000G集群专为连接GPU 设计。节点机采用基于Intel 架构的商用服务器,节点间通过高速通信网络实现互连,能够很好地支持大规模科学工程计算,具有节点选择丰富灵活、机群域网专业高效、基础架构完备可靠等技术优点。

深腾7000G集群包含100个计算节点,每个计算节点均含有2个Xeon E5504CPU处理器和2个TeslaC1060GPU处理器, 2GB内存,500GB硬盘。深腾7000G集群安装的操作系统为Red Hat Enterprise Linux Server release 5.6,采用了著名的开源作业处理系统Torque+Maui的资源管理组合,同时部署了ganglia监控系统,便于系统管理员和用户实时了解集群的相关运行状况,并提供了MPICH、Intel MPI等并行计算环境和CUDA-SDK、CUDAToolkit等相关GPU开发平台,充分利用了集群提供的众多GPU强大的计算能力。

MPI + CUDA 编程模型研究

MPI和CUDA介绍

MPI ( Message Passing Interfac)e 是一种消息传递机制,吸取了众多消息传递系统的优点,是目前国际上最流行的并行编程环境之一,尤其是分布式存储的可缩放并行计算机和工作站网络以及集群的一种编程范例。MPI具有可移植性和易用性、完备的异部通信功能、正式和详细的精确定义等优点,为并行软件产业的增长提供了必要的条件,在基于MPI编程模型中,计算由一个或多个彼此通过调用库函数进行消息收、发通信的进程组成。MPICH是MPI标准的一种最重要的实现,本文研究基于MPICH2版本。

CUDA ( Compute Unified Device Architecture )是nVIDIA公司推出的基于GPU的通用计算模型。在CUDA编程模型中,GPU作为一个协处理器能产生大量线程,这种优势要得益于GPU的物理构造,GPU由许多晶体管组成,专为计算密集型、高度并行化的计算而设计,因而GPU的设计能使更多晶体管用于数据处理,而非数据缓存和流控制。GPU专用于解决可表示为数据并行计算的问题,具有极高的计算密度(数学运算与存储器运算的比率),因此可通过计算隐藏存储器访问延迟,而不必使用较大的数据缓存。通过nVIDIA公司的CUDA技术,开发人员能够利用GPU解决及其复杂的并行计算难题,开发出前所未有的高性能计算软件。

MPI+CUDA编程模型

深腾7000G集群下,MPI+CUDA程序的联合编译运行环境用Makefile文件完成配置,主要配置文件如下:

Makefile配置文件主要添加了程序的MPI部分simpleMPI.cpp的编译和链接时用到的函数库,其中程序的C U D A部分simpleMPI.cu用common.mk文件规则完成编译和链接,最后生成一个可执行的simpleMPI文件。MPI+CUDA编程模型如图1。

开发人员把问题分解成粗粒度(一个并行任务包含较长的程序段和较大的计算量)的问题,这些子问题可以独立地并行解决,然后把这些子问题分为更小的细粒度(一个并行任务包含较短的程序段和较小的计算量)任务,然后在集群的不同层次实现并行粒度及优化。集群并行计算的方式,多为启动多个进程,在各个节点上分别执行,节点间通过消息传递的方式通信,最后规约出计算结果。这种方法灵活,能够适应任务并行、几何分解、分治等大部分科学计算模式,但由于其通信成本较高,因此多用于任务划分清晰、通信频率较低的粗粒度并行。MPI是一种粗粒度并行编程模型。而GPU拥有强大的数据处理能力,可以同时开启成百上千个线程,是典型的细粒度并行编程模型。对于含有支持CUDA架构的显卡(GeForce、Quadro以及Tesla产品均采用nVIDIA CUDA并行计算架构,GeForce和Quadro分别是为消费级图形处理和专业可视化而设计的,只有Tesla产品系列是完全针对并行计算而设计的,可提供广泛的计算特性)的机群,可以综合以上两者的优点,通过消息传递机制,将任务分配到各个节点实现粗粒度并发性;在每个节点上,启用多线程机制,利用共享内存实现快速高效的细粒度并行。这种混合粒度的并行程序的开发既可以发挥每个节点的巨大计算能力,又可以充分利用集群的可扩展性,为大型计算提供一个切实可行的方案。

(作者单位1为中国科学院近代物理研究所 ,2为兰州大学)

猜你喜欢
细粒度高性能计算能力
融合判别性与细粒度特征的抗遮挡红外目标跟踪算法
浅谈如何提高小学生的计算能力
小学生计算能力的提高策略
基于SVM多分类的超分辨图像细粒度分类方法
小学生计算能力的培养
浅谈小学生计算能力的培养
基于型号装备?角色的IETM访问控制研究
基于web粒度可配的编辑锁设计
一款高性能BGO探测器的研发
高性能砼在桥梁中的应用