一种基于CPU和GPU协作的分子动力学加速方法技术

技术编号:7266989 阅读:267 留言:0更新日期:2012-04-15 03:24
本发明专利技术公开了一种基于CPU和GPU协作的分子动力学加速方法,目的是提出一种通过协同使用CPU和GPU的加速方法,在较低成本的情况下实现分子动力学的加速。技术方案是使用配置有多核CPU和GPU的计算机,对待模拟的分子系统建立“网格-单元”结构存储分子信息,使用CPU和GPU动态申请和处理网格,在处理网格时,CPU以单元为单位处理网格,GPU则直接处理整个网格,实现CPU和GPU高效协作地完成分子动力学模拟。采用本发明专利技术可使得CPU核之间负载均衡,避免静态分配计算任务时CPU和GPU可能出现闲置等待的情况,CPU和GPU都能充分发挥自己的计算性能,提高了整个计算机系统的利用率,以低成本实现了分子动力学的加速。

【技术实现步骤摘要】

本专利技术涉及一种分子动力学加速方法,尤指基于CPU和GPU协作的分子动力学加速方法
技术介绍
分子动力学方法是一种依靠牛顿力学定律来模拟分子体系的运动,从而计算分子体系宏观性质的方法。它是研究纳米尺度物理现象的重要手段,广泛应用于材料科学、生物物理和药物设计等领域。随着模拟精度的提高和模拟规模的增大,分子动力学模拟时间也随之增长,从而对其实际应用产生了很大影响。目前通常的做法有以下几种1、通过组建集群系统来并行的进行模拟。但这种方法硬件成本较高,同时也需要开发人员不断改进并行算法来挖掘集群系统性能。因此在考虑硬件、人力成本时,不适宜采用该方法。2、通过定制专用计算机来加速模拟。针对分子动力学模拟的不同阶段定制相应的专用硬件进行计算,从而达到很高的模拟速度。但是这种机器硬件成本很高,目前该方法很少采用。3、利用通用加速单元GPU (Graphics Processing Unit,图形处理单元)来协作普通计算机进行模拟。目前GPU厂商为用户提供了通用编程模型如CUDA(统一计算架构模型)等对GPU进行编程,利用GPU浮点计算能力比CPU强的特点,使用GPU完成分子动力学中计算任务,从而提高模拟速度。但是该方法目前存在一些局限性,主要表现在使用GPU计算时,计算机中CPU处于闲置状态,计算机的总体利用率较低。第三种方法由于成本较低,是目前前景较大的分子动力学加速方法。但是目前该方法仍存在一些问题一方面CPU和GPU的计算模型不同,GPU适合一次性处理大量数据, 因此它要求分配的计算任务不能太小,而大块的计算任务又不利于CPU进行调度,为了使 CPU和GPU都能高效计算,必须设计大小适中的计算任务;另一方面CPU和GPU完成计算任务的时间难以估量,静态地分配计算任务会造成CPU或GPU出现闲置等待的情况,应根据两者的忙闲动态调整计算任务的分配,以保证两者皆不出现闲置等待的情况。但目前还没有公开的技术方案能较好解决这两方面的问题。
技术实现思路
本专利技术要解决的技术问题在于针对当前基于GPU的分子动力学加速方法效率较低的问题,提出一种通过协同使用CPU和GPU的加速方法,使系统中CPU和GPU都能高效计算,从而在保持较低成本的情况下实现分子动力学的加速。为了解决上述技术问题,本专利技术提出的技术方案为使用配置有多核CPU和GPU的计算机,对待模拟的分子系统建立“网格-单元”结构存储分子信息,使用CPU和GPU动态的申请和处理网格,在处理网格时,CPU以单元为单位处理网格,GPU则直接处理整个网格, 从而实现CPU和GPU高效协作地完成分子动力学模拟。具体技术方案为第一步、构建配置有多核CPU和GPU的计算机系统。选择包含Q个O! > = 4)核的CPU作为计算机系统的处理器,选择支持CUDA的GPU通过PCI-E接口与CPU相连。CPU 的Q个核顺序编号为0,...,Q-I。第二步、从存储于硬盘的文件中读入分子系统相关参数,包括截断半径I 。和所有分子的数据量。其中截断半径I 。表示每个分子与其他分子发生作用的最大距离,如果两个分子之间的距离超过R。,则它们之间不发生作用。分子数据量包括分子总数目MN以及每个分子的编号、位置向量和速度向量。在CPU的内存中申请二维双精度浮点型数组Pos存储分子的位置向量,申请二维双精度浮点型数组Vel存储分子的速度向量。第三步、设置模拟参数,包括目标网格权重TW,目标模拟步数T和实际模拟步数t。 TW和T的值由模拟需求确定,Tff的值为期望网格包含的分子数目,T的值为需要模拟的步数,实际模拟步数t初始化为0。第四步、使用“网格-单元”结构表示分子系统,“网格-单元”结构的建立过程如下4. 1使用“单元”结构表示分子系统,步骤为4. 1. 1将分子系统划分为均勻组合的边长为Rc的η个正方体区域,称这些正方体区域为单元,将这些单元顺序编号为0,. . .,η-1。4. 1. 2在CPU的内存中初始化结构体数组SCell保存单元中的分子编号以及单元的邻接单元编号,称该结构体数组为“单元”结构,使用符号SCell (0 ^ k < η)表示序号为k的单元。每个“单元”拥有一个变量成员和两个数组成员,分别为单元内分子数目AN、 单元内分子编号数组AIdx和邻接单元编号数组NB。AIdx顺序存储单元中分子编号。NB顺序存储单元在三维空间中邻接沈个单元的编号。用符号SCell . AN表示序号为k的单元包含的分子数目;用符号SCell . AIdx表示序号为k的单元中分子编号数组;用符号 SCell . NB表示序号为k的单元邻接单元编号数组。4.2根据单元内分子数目SCelUk].AN(0<k<n)将多个单元组成区域,使每个区域中的分子数目相等,称这些区域为网格。在CPU的内存中用链表保存网格中分子信息以及网格处理标识,链表的每一个节点称为一个“网格”结构。每个“网格”结构拥有一个指针、一个整型变量、一个布尔变量、一个整型数组和四个双精度浮点型数组,分别为后续“网格”指针Next,网格内单元数目CN,网格处理标识R,网格内单元编号数组CIdx,网格内分子位置信息数组Ppos,网格内分子速度信息数组Pvel,网格内分子受力信息数组Pforce, 网格外分子位置信息数组Gpos。为了便于描述,用SPatch表示指向链表首节点的指针,称这个节点为SPatch指向的网格;用符号“一”引用节点中的元素。例如,用SPatch —Next 表示指向下一个网格的指针;用SPatch —CN表示SPatch指向的网格中单元数目;用 SPatch — R表示SPatch指向的网格处理标识,若SPatch — R的值为iTrue则表示SPatch 指向的网格已经被处理,若SPatch — R的值为False则表示SPatch指向的网格未被处理; 用SPatch — CIdx表示SPatch指向的网格中单元编号数组,用SPatch — CIdx (O^x < SPatch — CN)存储网格中序号为χ的单元编号;用SPatch — Ppos表示SPatch指向的网格内分子位置信息数组;用SPatch — Pvel表示SPatch指向的网格内分子速度信息数组;用SPatch — Pforce表示SPatch指向的网格内分子受力信息数组;用SPatch — Gpos表示SPatch指向的网格外分子位置信息数组。生成网格结构的步骤为4. 2. 1计算每个单元的权重W。,W1, ...,Wlri,其中Wk (0彡k < η)的值为单元k中分子数目SCell . AN。初始化当前网格负载PW为0,起始单元编号St为0,结束单元编号 Ed为0。初始化指针CP,使指针CP = SPatch04. 2. 2将指向下一个网格的指针CP — Next初始化为NULL,CP指向的网格中单元数目CP — CN初始化为0,CP指向的网格处理标识CP — R初始化为i^alse,CP指向的数组 CP — CIdx, CP — Ppos, CP — Pvel.CP — Pforce, CP — Gpos 全部初始化为 O。4. 2. 3判断PW是否小于目标网格权重TW,若是,执行4. 2. 4,否则本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:廖湘科杨灿群吴强陈娟李春江杜云飞彭林左克石志才
申请(专利权)人:中国人民解放军国防科学技术大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术