用于导热系数计算的图形处理单元的加速分子动力学评估外文翻译资料

 2022-06-27 22:36:39

英语原文共 15 页,剩余内容已隐藏,支付完成后下载完整资料


用于导热系数计算的图形处理单元的加速分子动力学评估

Zheyong Fanlowast;, Topi Siro, Ari Harju

COMP卓越中心和芬兰赫尔辛基阿尔托大学应用物理系赫尔辛基物理研究所

摘要:导热系数是测试理论模型和设计更好的实用材料的重要属性,诸如更高效的热电的器件以及热导率的准确和有效的计算是非常需要的。在本文中,我们在完全图形处理单元上用Green-Kubo公式开发了一个高效的分子动力学代码来计算电导率。我们比较了以前的两种不同的力评估方案使用线程方案,其中一个线程用于一个粒子,每个线程计算相应的总力粒子和一个新的块方案,其中一个粒子被用于一个粒子,并且该块中的每个线程计算一个或多个粒子在与给定块相关的粒子与其与给定线相关联的相邻粒子之间产生一对力。对于两种方案都实现了两种不同的经典势能,即Lennard-Jones势能和刚性离子势能。尽管线程方案在相对较大的系统中执行得稍微好一些,但块方案对于相对来说性能更好小系统。块方案相对于线程方案的相对性能也随着增加而增加截止半径。我们通过计算固态氩和碲化铅的晶格热导率来验证实现。该我们的代码效率使得它非常有希望研究更复杂材料的导热性能,尤其是,材料与有趣的纳米结构。

关键词:分子动力学模拟,Green-Kubo公式,导热系数,图形处理单元,CUDA,优化算法,性能评估

  1. 简介

最近,图形处理单元(GPU)由于其大规模的并行性能力而在计算物理学领域引起越来越多的关注,已经在多种计算物理学问题中得到了探索,包括重力N体模拟[1],经典分子动力学模拟[2-8],经典蒙特卡罗模拟[9],量子蒙特卡罗模拟[10],量子传输[11]和精确对角化[12],仅仅只是列出少部分。尽管迄今取得了很多成就,但GPU加速计算物理应用的潜力还远未得到有效探索。

分子动力学(MD)模拟对硬件的性能要求很高,并且GPU加速已经被多个小组研究[2-8]。早在2006年,Yang等[2]就使用GPU基于Green-Kubo公式的固体氩热导率预测的加速平衡分子动力学模拟进行了原理验证研究。为此目的,不需要更新附近列表,因为系统中的每个粒子都在其平衡位置附近振荡。使用一个非常古老的GPU,他们相对于单个CPU获得了大约10倍的加速,尽管它们的实现在精确度上有所影响,这导致了热电流自相关函数(HCACF)不衰减为零而是有限值。在这个开创性的工作之后,其他一些小组研究了更加通用的MD模拟的GPU加速,主要面向生化系统中的大规模模拟,并且邻居列表更新的问题引起了特殊的考虑[4-6,8]。所报告的CPU执行速度范围从1到2个数量级,具体取决于交互电位,仿真大小和模拟中使用的截止半径。

在这项工作中,我们考虑了平衡MD模拟的完整GPU实现的开发和优化,并将其用于使用GreenKubo公式的热导率预测。我们的工作和以前的工作的主要区别在于我们对相对较小的系统更感兴趣,因为Green-Kubo热传导预测方法的尺寸效应不是很显着,而且它们通常可以消除少于几千个粒子。Green-Kubo方法对高性能计算的需求来自于以下事实:模拟步骤的数量通常需要非常大(有时高达108个步骤[13]),以确保良好收敛的HCACF和相应的运行热量电导率(RTC)。围绕这个模拟尺寸,我们发现传统的力评估方法,其中单个线程被分配来评估一个粒子上的总力[5],不能充分利用现代GPU的计算能力。在这里,我们提出了另一种力评估方法,其中一个线程块被分配用于评估一个粒子上的总力,其对于小到中间模拟尺寸表现出显着优越的性能。在每个粒子方案的一个线程(将被称为线程方案)中,力评估内核中被调用块的数量(等于粒子数除以块尺寸)远小于一个块每个粒子方案(将被称为块方案),其中它等于粒子的数量。我们将证明,块方案可以在相对较小的系统中实现最佳性能,并且比线程方案快几倍。与Yang等人[2]的原理证明研究相比,它只使用简单的Lennard-Jones(LJ)势计算固态氩的晶格热导率,我们也考虑了刚性(RI)势,它是对计算要求更高。平均而言,MD模拟的演化部分可以获得两个数量级的加速。对于所有测试情况,RI电位的加速率比LJ电位的加速率大几倍,这反映了RI电位的较高算术强度。此外,在GPU中也实现了邻居列表构建和HCACF计算,并且也为这些部分获得了很好的加速。

本文组织如下。 在Sect. 2,我们回顾一下热导率分子动力学模拟技术使用Green-Kubo公式和一些预测与我们的实施相关的CUDA的重要功能。 在Sect. 3,我们提出了详细的算法和实现我们的代码。 在Sect. 4,表演不同显示了作用力计算方案和不同的潜力并进行比较。 在Sect. 5,我们通过验证我们的实施计算固体氩和氩的晶格热导率在不同温度下导致碲化物。 我们的结论是在Sect.6。

2.背景

2.1 用于导热系数计算的Green-Kubo方法

在晶格热导率的原子计算中,可以采用基于平衡的分子动力学模拟和基于非平衡的分子动力学模拟。基于非平衡的方法使用傅里叶热传导定律并且被称为直接方法。 平衡方法使用Green-Kubo线性响应理论,并被称为Green-Kubo方法。Schelling等[14]表明,均衡和非平衡方法给出了一致的结果。在某些情况下,前者更有利;在其他情况下,情况正好相反。 Green-Kubo方法最重要的优点是与直接方法相比,它的尺寸效应要小得多。在直接法中,除非模拟单元比无平均路径长许多倍,否则来自热源和散热器的散射对热电阻率的贡献比本征非简谐声子 - 声子散射所做的贡献更大。在大多数情况下,通过直接方法从不同系统尺寸的模拟和外推到无限大的系统尺寸,可以可靠地获得无限系统的导热系数值[14]。然而,正如Sellan等[15]指出的那样,线性外推过程只有在直接方法模拟中使用的最小系统尺寸与支配热传输的声子的最大平均自由程相当时才是准确的。至于计算成本,Green-Kubo方法需要相当长的模拟时间(107〜108个时间步长)才能获得良好的收敛HCACF和热导率值。为了得到明确的温度梯度,直接法只需要相对较短的模拟时间(约106个时间步长)。然而,Green-Kubo方法仍然通常在计算上更便宜,因为当使用直接法精确地推断到无限极限时,需要模拟几个非常大的系统。此外,通过单一模拟,当使用Green-Kubo方法时,可以获得系统的全热导率张量,但是当使用直接法时,只能获得单个热导率分量。、

根据Green-Kubo线性响应理论[16-18],晶格热导率张量kappa;micro;nu;可以表示为 HCACF Cmicro;nu;(t)的时间积分,

其中t是相关时间,kB是波尔兹曼常数,V是体积,T是温度。在MD模拟中通过不同时间点的平均值计算HCACF Cmicro;nu;(t)=lt;Jmicro;(0)Jnu;(t)gt;;

其中delta;t 是时间步长,M是要平均的起始时间的数量,如果相关步骤的数量远少于生产步骤的数量,这大约是生产步骤的数量。 对于各向同性的3D材料,热导率标量通常被定义为对角元素的平均值,(kappa;xx kappa;yy kappa;zz)/3. 类似地,对于在平面中各向同性的材料,该平面中的热导率可以被定义为(kappa;xx kappa;yy)/2. 通常,Green-Kubo方法能够在单次运行中产生完整的热传导张量。 我们将使用C来表示组件Cxx, Cyy Czz的向量。

热电流矢量J(分量Jx,Jy和Jz)被定义为系统中粒子位点能量矩的总和的时间导数[18],

能量是动能和势能之和. 对于两体势和Fi,我们有

在本文中,我们考虑两种成对的电位。 首先是 LJ电位

其中sigma;和sigma;是模型的两个参数,其尺寸分别为[能量]和[长度]。 对于氩气,ǫ/ kB = 119.8 K和sigma;= 3.405Aring;,其中kB是玻尔兹曼常数。 这个潜力已被许多小组用来计算纯固体氩[19-23]和氩氪复合材料[24,25]的导热率。我们考虑的第二种可能性是由库仑势以及白金汉形式的短程部分组成的RI势

下标在参数Aij,rho;ij和Cij表示参数的值取决于交互对的粒子类型。

RI潜能的另一部分是具有长程潜力的库仑潜能,并且使用传统Ewald求和的直接评估对于大型系统是非常耗时的。 相反,Wolf方法[26]在计算和概念上都更为有利。 在我们的工作中,我们使用了由Fennell等人[27]开发的Wolf公式开发的一种改进形式,其中势和力在截止半径处是连续的,

其中alpha;和Rc分别是静电阻尼因子和截止半径。 白金汉形式的RI电势被广泛用于研究各种半导体和绝缘体如复杂的二氧化硅晶体[28],ZnO [29]和PbTe [30]的晶格热导率。在这项工作中,我们只考虑PbTe,使用Qiu等[31]开发的潜在参数。请注意,在它们的参数化中,Pb和Te都使用部分电荷,分别为 0.666和-0.666。

为了获得HCACF的晶格热导率,通常首先通过具有两个时间参数的双指数函数[20,32]来拟合HCACF,并通过该函数的分析积分来获得热导率。理想情况下,HCACF应衰减到零,除了一些具有不同导热系数的异常系统[33]。因此,也可以直接整合HCACF并将得到的RTC值平均在适当的时间范围内[14,15]。只要模拟时间足够大以获得在给定相关时间后衰减到零的平滑HCACF,我们就会证明RTC将收敛到一个确定的值。

2.2. CUDA概述

在本小节中,我们将回顾一些使用CUDA进行GPU编程的技术。 我们选择使用CUDA作为我们的开发工具,但其他工具(如OpenCL)也可以同样使用。 这里仅介绍与我们实施相关的重要功能。 有关CUDA更全面的介绍,请参阅官方手册[34]。 虽然我们的讨论基于计算能力2.0的Tesla M2070,但实现和优化可以轻松移植到其他平台。

CUDA(计算统一设备体系结构)[34]是CPU(主机)和GPU(设备)混合平台的并行计算体系结构。 我们的CUDA程序包含在主机上编译和执行的通用C / C 代码以及从主机调用并在设备上执行的称为内核的特殊功能。 当从主机调用内核时,会调用一个块网格(每个块包含单独的线程)以单指令多数据方式执行内核指令。 每个单独的线程都有一个唯一的ID,可以通过内置变量(如threadIdx.x和blockIdx.x)来指定。 网格和内核块的大小是在运行时指定的,也可以从内置变量(如gridDim.x和blockDim.x)推断出来。

CUDA的概念与GPU硬件架构密切相关,其中的知识对理解和优化CUDA应用程序至关重要。 GPU由多个流式多处理器(SM)组成,SM由多个标量处理器(SP)组成。对于我们测试的GPU,Tesla M2070,有16个SM和16times;32 = 448个SP。 SM中可以同时调用的驻留块和线程的最大数量是有限的。对于具有计算能力2.x的GPU,它们分别是8和1536 [34]。因此,对于特斯拉M2070,块中的理论最佳线程数(块大小)约为1536/8 = 192。在这种情况下,SM中的活动块数和活动线程数均达到其优化值。实际上,最佳块大小也受所考虑的特定问题的影响。例如,在力评估的块方案中,128的块大小更好,因为192不是2的指数,因此不适用于二进制减少。

理解不同的GPU内存对于CUDA程序的实现和优化也很重要。 GPU中有各种类型的存储器,每种存储器都有自己的优势和局限性。 GPU最重要的内存是全局内存,共享内存,寄存器,常量内存和纹理。全局内存在CPU和GPU之间交换数据以及将数据从一个内核传递到另一个内核起着至关重要的作用。全局内存可以由内核中的每个线程读取和写入,但速度非常慢,因此应尽量减少。共享内存在数据块内共享数据的重要作用,当我们进行一些减少计算,如求和时,这是至关重要的。共享内存很快但很昂贵。对于Tesla M2070,每个SM只有48 KB共享内存。如果我们希望保持最大数量的驻留块(每SM为8个),我们不应该在内核中定义多于6 KB的共享内存。寄存器是个别线程的私有读写存储器。寄存器的访问速度非常快,但寄存器内存的数量相当有限。对于Tesla M2070,每个SM只有32个K 32位寄存器。如果我们希望保持最大驻留线程数(如果我们将块大小设为128,则每个SM为1024),我们不应该在内核中定义多于32个32位寄存器(或16个64位寄存器)。与全局内存相比,常量内存更快,但其数量也非常有限,仅为64 KB。虽然我们的应用程序中的一些数据(如邻居列表)在整个计算过程中不会改变,但我们无法为它们使用常量内存,因为即使对于少数几个小系统,邻居列表所需的内存量也超过了上限一百个粒子。或者,纹理可以用于这种数据。我们只对内核中需要的一些不变参数使用常量内存。

最后,我们注意到,只有当块的数量比SM的数量多几倍才能使GPU始终处于繁忙状态时,我们才有可能获得GPU的最高性能。 当我们在下面的章节中比较两种作用力计算方案时,将会详细讨论这个重要特征。

3.实施细节

lt;

全文共24195字,剩余内容已隐藏,支付完成后下载完整资料


资料编号:[10575],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。