MD模拟的发展趋势-1
总的来说,MD模拟的发展趋势是以更高的效率、模拟更大的体系、实现更 长的演化时间、取得更精确的模拟结果为目的。为了实现这些目标,必须从计算 技术、MD模拟算法、分子模型等多方面进行广泛而深入的研究。
1.3.1计算技术的发展方向
在经历了约半个世纪的指数式提高,计算机核心部件CPU的主频在21世纪 初超过3GHz后,出现了停滞现象,失去了过去那种按Moore定律快速提高的 趋势。但是,CPU的制造技术并没有达到发展极限,出现了双核、四核、八核 甚至十六核等多核CPU。因此,Moore定律继续有效,只是发展模式从不断提 高CPU的主频,转化为提高单片CPU上集成的核芯数量。与CPU主频被不断 提高的时代相比,这种新趋势对算法的开发和软件设计提出了新的挑战。
在CPU主频被不断提高的时代,一个因速度缓慢而性能不佳的计算程序, 只要等待新一代具有更高主频的CPU的出现,就会有更出色的表现。现在,同 样因速度缓慢而表现不佳的计算程序,在新一代主频几乎不变、但具有更多核芯 的CPU上,其表现不一定会得到改善。事实上,为了改进计算程序的运算速 度,必须改进程序的算法,提高其并行运算速度。不过,提高计算程序的并行运 算速度,不是简单的工作,而是复杂的工程,必须发展适合并行运算的算法〔河。
衡量一个算法并行运算效果的指标是加速比(speedup)。当利用多个核芯进 行并行运算时,一般只有算法的一部分能被并行加速,其他部分则不能被并行加 速。因此,当用个核芯进行并行运算时,运算时间一般不会缩短到单个核芯 串行运算时间的1/Np。因此,并行运算的加速比,就是利用单个核芯进行串行 运算所消耗的计算时间与利用多个核芯进行并行计算所消耗的计算时间之比。也 就是说,如果一算法在单个核芯上的运算时间为乃,在Np个核芯上的运算时 间为,则算法的加速比为S% = T,/TWp。
根据Amdahl定律,如果一个算 法中能够被任意并行加速部分所占计算量为a,不能被并行加速部分所占计算量 为1 —a ,则利用Np个核芯进行并行计算时的加速比为S% = (1 —a + a/Np)7 „ 当利用任意多个核芯进行并行计算时,得到算法的最大加速比S唉=(1—a)T。 如果算法可以被并行加速部分的比例a未知,可以利用Np个核芯并行运算时的 实测加速比S%估计,a = (S疋一l)/(Nf — 1)。与加速比相关的另一指标是并 行计算的效率,定义为加速比与核芯数之比E% = Sn丿N-此外,在进行并行 运算时,各个进程的调度、进程之间的通信等,都需要消耗额外的时间,更降低 了算法的加速比。
例如,某一作业,当用1个核芯进行计算时所消耗的计算时间为100,用2 个核芯进行计算时所消耗的计算时间为60,则并行计算的加速比为1.667,算法 中可以被并行加速部分所占比例a = 0. 8。当用5个核芯进行计算时,并行计算 加速比为2.778,此时的并行效率为55.6%。事实上,这个作业的最大理论加速 比为5,并行效果并不理想。
并行计算与三个和尚从山下往位于山顶的寺庙运水的故事相似。当方丈觉得 一个僧人运水的速度太慢时,他有两种选择:增加人力,多派一些僧人运水;或 训练运水的僧人,提高僧人的运水效率。前者相当于并行计算,通过利用更多的 计算核芯,提高作业效率;后者相当于提高计算核芯的主频,通过提高单个计算 核芯的运算速度来提高作业效率。方丈可以通过计算加速比,即在没有采取任何 措施以前往山上运一桶水需要消耗的时间,与采取改进措施后运一桶水需要消耗 的时间之比,来评估两种方案的实际效果。
方丈肯定认为,由于受生理条件的限 制,提高一个僧人运水的加速比肯定有限,更好的方案还是多派僧人运水。并 且,如果派出Np个僧人运水,可以将加速比提高到Np。但是,故事的结局已 经熟知,当方丈派出两个僧人运水时,运水作业的加速比没有增加;当方丈派出 三个僧人运水后,加速比甚至降低为0。
如果方丈了解并行计算技术,他在派出更多的运水僧人前会考察从山下往山 上运水的环境是否适合并行作业,或者说他的算法是否具有可扩展性(scalability) o 曾经参观故事中寺庙的游客就会发现,僧人从山下往山上运水的山道,只 能容纳一个人上下山,不适合并行作业,不具有可扩展性。因此,当方丈派出三 个僧人一起进行运水作业时,山道阻塞,加速比降为0。懂得并行计算技术的济 公,考察了从山下往山上运水的山道,发现山道环境条件不适合并行作业,作业 不具有可扩展性。如果不顾作业环境而进行并行作业,还会影响上山敬佛的香 客,不利于吸引游客上山,发展旅游经济。因此,济公改变了算法,让僧人从井 里往上提水。从井里往上提水的作业环境具有更大的空间,可以容纳多人并行作 业,具有可扩展性。
虽然现代超级计算机可以模拟多达上千亿个原子,实现纳秒级的演化时间。 例如,浮点运算峰值速度达IX10"次/s的超级计算机运行一天,可以实现的模 拟量达到NT=2. 14原子•秒(N=2. 14X1O15个原子,实现演化时间T=1 X 10-6s)t5«o但是,大多数MD模拟工作者,难以得到这样的超级计算机的计算 服务,只能使用约每秒万亿次的中小型集群式计算系统。
目前,除传统的CPU 计算系统外,MD模拟工作者的另一选项是GPU (graphical processing units) 计算系统。GPU计算系统的主要特点是并行性能优越,性能价格比远高于CPU 计算系统。利用GPU计算系统,可以以小型集群式计算系统的成本,得到大型 计算系统的浮点运算速度。例如,NVIDIA的M2090 GPU运算卡包含16个多 处理器,每个多处理器又包含32个计算核芯,总共多达512个计算核芯。该 GPU运算卡的单精度浮点峰值运算速度达到每秒1-331万亿次以上,价格约2 万元。因此,GPU计算系统正吸引越来越多的MD模拟工作者的使用酎丽。
GPU并不是一项新的发明,它早已被广泛应用于传统的CPU计算机中,作 为图形处理器用于提高图形处理速度。因此,GPU计算系统是MD模拟者容易 得到或可以以低廉的价格得到的一种计算资源。GPU计算系统的缺点是难以与 传统CPU计算相互兼容,不能直接移植面向CPU设计的MD模拟程序。GPU 计算系统的更大缺点是不能直接使用MD模拟软件编写者熟悉的FORTRAN等 程序设计语言。GPU计算系统通常使用一种与简化版C语言相似的编程语言, 称为 CUDA (compute unified device architecture) o 因此,即使使用 C 语言编写 的MD程序,移植到GPU计算系统上运行时仍需要大量的改写和调试工作[旳。 与CPU计算不同.GPU计算擅长浮点运算,但不擅长逻辑运算密集的算法。因 此,为了得到更好的效果,必须把CPU计算和GPU计算结合起来,利用CPU 进行作业调度等逻辑运算.利用GPU进行浮点运算。
