发明名称 一种利用GPU加速量子介观体系求解的方法
摘要 本发明提供一种利用GPU加速介观体系物理问题求解的方法,该方法充分利用了GPU所拥有的超强的浮点计算能力和较大的内存带宽等众核处理器的特点,将介观问题求解中占用机时最长的哈密顿量矩阵初始化计算工作交给GPU协处理,而传统的矩阵对角化的工作依然由串行计算能力较强的CPU来完成,从而实现介观物理问题求解的加速。在计算过程中,我们利用哈密顿量矩阵元计算相对独立的特点,实现了从问题空间到GPU线程空间的简单映射,从而保证了算法的易用性和高可扩展性。
申请公布号 CN102663207B 申请公布日期 2016.09.07
申请号 CN201210128993.1 申请日期 2012.04.28
申请人 浪潮电子信息产业股份有限公司 发明人 刘羽
分类号 G06F17/50(2006.01)I 主分类号 G06F17/50(2006.01)I
代理机构 代理人
主权项 一种利用GPU加速介观体系物理问题求解的方法, 其特征在于针对基矢展开计算的特点,将计算过程分为两个主要步骤:初始化哈密顿量矩阵元和哈密顿矩阵对角化,对于初始化哈密顿量矩阵元,由于需要初始化的矩阵元数目相对较大,要求较多的计算资源和较高的存储器带宽,而相应的对存储器的容量需求较小,因此我们将这部分计算移植到GPU上来完成,哈密顿矩阵对角化,就是对整个哈密顿矩阵的归约操作,它需要占用大量的内存资源,并且由于矩阵各部分的依赖关系,大部分时间是做串行处理,因此将计算交给CPU来完成,将介观物理体系哈密顿量矩阵元独立出来,然后将由这些独立的矩阵元所构成的问题解空间同GPU中的线程空间相对应,将内存中的初始参数传入GPU设备显存,并在设备上计算矩阵元,完毕后拷贝结果回主机内存,从而完成介观体系哈密顿量矩阵初始化,再利用CPU对哈密顿矩阵对角化求得本征能量和本征态矢,从而有效加速介观物理问题求解的计算,具体步骤如下:1)将问题解空间同GPU线程空间相对应,利用哈密顿量矩阵元之间的非相关性,将矩阵元与CUDA的三重线程模型对应起来,即同Grid,Block,Thread对应起来,问题的规模与计算中所使用的基矢数目有关;2)将参数传入显存并执行运算,将基矢系数参数传递给显存,包括与所使用基矢有关的贝塞尔零点,并将少数调用频繁的参数存放在缓存中,执行设备端的kernel函数完成计算;3)对角化哈密顿矩阵,利用2)生成计算结果完成哈密顿矩阵的初始化工作,并在CPU上调用Lapack数学库来完成计算;通过计算给出了所涉及的问题空间与GPU中计算线程的对应关系,使用勒让德(<img file="287792dest_path_image001.GIF" wi="21" he="17" />)、贝塞尔(<img file="204933dest_path_image002.GIF" wi="16" he="16" />)或拉盖尔(<img file="656774dest_path_image003.GIF" wi="18" he="16" />)多项式作为基矢,由于<img file="51983dest_path_image004.GIF" wi="49" he="17" />至少含有两个指标n,m需要遍例,因此每一个哈密顿矩阵元<img file="53306dest_path_image005.GIF" wi="73" he="17" />含有四个指标维度,因此认为介观体系的问题空间是四维的,能够将哈密顿矩阵元<img file="813452dest_path_image006.GIF" wi="80" he="18" />构成了问题空间;把GPU的线程空间划分为grid,block和thread三重结构,直接把问题空间的(q, p)变量与block联系起来,(n, m)与thread联系起来,即block(q, p)和thread(n, m),由于各哈密顿矩阵元之间并无相互作用,也就是说block及thread之间无需数据通信;基本程序架构和组织流程如下:1)写出介观体系物理问题的体系哈密顿量,选择合适的基矢展开哈密顿算符,给出哈密顿矩阵元的表达式;2)分离哈密顿矩阵元H(q, p, n, m);3)根据问题空间(H(q, p, n, m))组合规律划分计算网格(grid0、block(q, p)、thread(n, m)),传递输入参数到显存,并将计算中需要频繁访问的参数放到GPU的共享存储器(shared memory)中;4)调用设备端函数,计算哈密顿矩阵元,并将各线程对应的结果存放到显存中;5)将计算完成的矩阵元从显存拷贝到内存中;6)生成哈密顿矩阵,在CPU上做矩阵对角化操作;7)完成计算得到能谱或根据上一步解出的结果计算其他物理量。
地址 250014 山东省济南市高新区舜雅路1036号