分子动力学软件GROMACS在GPU上的应用(精) 下载本文

内容发布更新时间 : 2024/5/5 4:23:04星期一 下面是文章的全部内容请认真阅读。

57高性能计算应用

分子动力学软件GROMACS在GPU上的应用 寇大治 徐 磊 徐 莹

上海超级计算中心 上海 201203 dzkou@ssc.net.cn 左光宏

中科院上海应用物理研究所 上海 201800 ghzuo@sinap.ac.cn 摘要:

伴随着高性能计算的发展,硬件在计算能力和功耗上的矛盾越来越突出,作为试图缓解

这一问题的协处理和众核技术的代表,GPU在最近几年逐渐风靡全球。而分子动力学计算作

为高性能计算的主要应用领域之一,一直备受人们的关注,GROMACS [1]正是分子动力学软

件的主流代表之一。本文首先对GROMACS软件的GPU版本作业一些介绍,尤其是其与原

CPU版本的区别做了一些解释。之后就利用了NVIDIA公司C2050型号GPU设备和上海超级

计算中心“魔方”超级计算平台,就一些典型的分子动力学体系分别在GPU和CPU上进行了

GROMACS软件的测试和比较,并对计算性能的区别进行了讨论。 I. 简介

高性能计算发展到千万亿次时代之后,随着计 算能力的提升,硬件功耗也以惊人的速度增长,为 了解决能耗问题,人们开始转向协处理器和众核技 术的研发,通过增加大量的计算单元和简化控制单 元,可以使一些可向量化问题的解决能力得到极大 的提高,同时很好的控制了能耗的增加。在这一思 路的指引下,最近若干年,原本应用于图形处理的 GPU设备被高性能业界推向了前台,利用其大量的图 形处理单元来向量化的处理计算问题,这一方法得 到了一定推广和应用。

GROMACS是分子动力学通用软件包,可以用于 模拟包含几百到几百万粒子体系的牛顿运动方程, 特别适用于生物分子,如蛋白质,油脂等有含有大 量复杂健作用的体系,同时由于GROMACS在计算非 键作用时(这实际上也占了模拟的主要部分相当 快,因此也可广泛应用于非生物体系,如大分子聚 合物。关于GROMACS的相关情况已经有过一些研究 和测试 [2-3]。

本文将主要围绕GROMACS软件的GPU版本,以 及其在GPU和CPU平台上的表现做出比较和评测,以 期对该软件的使用有一个更全面的了解。

2. 测试环境

1 GPU计算环境:NVIDIA Tesla ? C2050 Tesla GPU的20系列产品家族基于代号为\的下一代CUDA架构,支持技术与企业计算所“必 备”的诸多特性,其中包括C++支持、可实现极高 精度与可扩展性的ECC存储器以及7倍于Tesla 10系列 GPU的双精度性能。Tesla ? C2050与C2070 GPU旨在 重新定义高性能计算并实现超级计算的平民化,表1概述了其各方面的一些特性。与最新的四核CPU相 比,Tesla C2050与C2070计算处理器以十分之一的成 本和二十分之一的功耗即可实现同等超级计算性能。 本文测试采用的CUDA toolkit的版本为3.2RC。

表1 Tesla ? C2050与C2070 GPU的一些特性

基于新一代Fermi CUDA架构的GPU 与基于最新四核CPU的纯CPU系统相比,该GPU以十分之一的成本和二十 分之一的功耗即可实现同等的集群性能。

448个CUDA核心 每颗GPU最高可实现515 Gigaflop双精度峰值性能,从而让一台工作站 即可实现Teraflop级甚至更高的性能。每颗GPU的单精度峰值性能超过1 Teraflop。

58《高性能计算发展与应用》 2011年第二期 总第三十五期

ECC存储器 能够满足工作站计算精度与可靠性方面的关键需求。能够为存储器中的数 据提供保护功能,从而为应用程序增强数据完整性和可靠性。寄存器文 件、L1/L2高速缓存、共享存储器以及DRAM均受ECC的保护。

台式机上的集群性能 与一个小型服务器集群相比,配备多颗GPU的单台工作站能够更快地解决 大型难题。

每颗GPU最多配备6GB GDDR5存储器 更大的数据集能够保存在直接附属于GPU的本地存储器上,从而实现了性 能的最大化并减少了数据传输的情况。

NVIDIA ?(英伟达 ? 并行 DataCache ? 能够为物理效果解算器、光线追踪以及稀疏矩阵乘法等诸多算法加速,在 这些算法中,数据地址事先都是未知的。每个流式多处理器模块均包含一 个可配置的L1高速缓存,所有处理器核心使用统一的L2高速缓存。

NVIDIA ?(英伟达 ? GigaThread ? 引擎 通过多项技术实现了吞吐量的最大化,其中包括10倍于上一代架构的高速 上下文切换、并发内核执行以及改良的线程块调度。

异步传输 计算核心在PCIe总线上传输数据的同时还能够处理其它数据,因而增强了 系统性能。即便是地震处理这类需要大量数据传输的应用程序,也能够通 过事先将数据传输至本地存储器的方法来最大限度提升计算效率。

CUDA编程环境受到各种编程语言与 API的广泛支持 开发人员无论选择C语言、C++、OpenCL、DirectCompute还是选择Fortran语 言,都能够实现应用程序