基于Gaussian 03 的计算化学集群系统方案
1. Gaussian 软件简介
1.1. Gaussian 软件功能介绍
Gaussian 是做半经验计算和从头计算使用最广泛的量子化学软件,可以研究:分子能量和结构,过渡态的能量和结构,化学键以及反应能量,分子轨道,偶极矩和多极矩,原子电荷和电势,振动频率,红外和拉曼光谱,NMR,极化率和超极化率,热力学性质,反应路径。计算可以模拟在气相和溶液中的体系,模拟基态和激发态。Gaussian 03 还可以对周期边界体系进行计算。Gaussian 是研究诸如取代效应,反应机理,势能面和激发态能量的有力工具。
Gaussian 03 是由许多程序相连通的体系,用于执行各种半经验和从头分子轨道(MO)计算。Gaussian 03 可用来预测气相和液相条件下,分子和化学反应的许多性质,包括:
A2.jpg
_ 分子的能量和结构
_ 过渡态的能量和结构
_ 振动频率
_ 红外和拉曼光谱(包括预共振拉曼)
_ 热化学性质
_ 成键和化学反应能量
_ 化学反应路径
_ 分子轨道
_ 原子电荷
_ 电多极矩
_ NMR 屏蔽和磁化系数
A3.jpg
_ 自旋-自旋耦合常数
_ 振动圆二色性强度
_ 电子圆二色性强度
_ g 张量和超精细光谱的其它张量
_ 旋光性
_ 振动-转动耦合
_ 非谐性的振动分析和振动-转动耦合
_ 电子亲和能和电离势
_ 极化和超极化率(静态的和含频的)
_ 各向异性超精细耦合常数
_ 静电势和电子密度
计算可以对体系的基态或激发态执行。可以预测周期体系的能量,结构和分子轨道。因此,Gaussian 03 可以作为功能强大的工具,用于研究许多化学领域的课题,例如取代基的影响,化学反应机理,势能曲面和激发能等等。
Gaussian 03 程序设计时考虑到使用者的需要。所有的标准输入采用自由格式和助记代号,程序自动提供输入数据的合理默认选项,计算结果的输出中含有许多解释性的说明。程序另外提供许多选项指令让有经验的用户更改默认的选项,并提供用户个人程序连接Gaussian 03的接口。作者希望他们的努力可以让用户把精力集中于把方法应用到化学问题上和开发新方法上,而不是放在执行计算的技巧上。
1.2. Gaussian 软件主要组成模块(并行)介绍
Gaussian 03 软件由很多子程序构成,一个Gaussian 03 执行程序会启动多个子程序分段执行,其中部分程序可以并行执行,部分程序只能串行执行。下面是这些程序的功能介绍,本方案中主要标出可并行的程序:
链接 功能
L302 (并行) 计算重叠积分,动能和势能积分
L502 (并行) 迭代求解SCF 方程(用于通常的UHF 和ROHF ,所有的直接方法,以及SCRF)
L506 (并行) 进行ROHF 或GVB-PP 计算
L508 (并行) 二次收敛SCF 程序
L510 (并行) MC-SCF
L602 (并行) 单电子特性(势,场,和场梯度)
L701 (并行) 单电子积分一阶或二阶导数
L703 (并行) 双电子积分一阶或二阶导数(spdf)
L906 (并行) 半直接的MP2
L913 (并行) 计算后-SCF 能量和梯度项
L914 (并行) CIS,RPA 和Zindo 激发能;SCF 稳定性
L1002(并行) 迭代求解CPHF 方程;计算各种特性(包括NMR)
L1014(并行) 计算解析的CIS 二阶导数
L1101(并行) 计算单电子积分导数
L1110(并行) 双电子积分导数对Fock 矩阵的贡献
L1112(并行) MP2 二阶导数
通常的Gaussian 运算程序由以上这些子程序和其它串行子程序组成的序列组成,其中通常会包含一些串行部分和一些并行部分。在可并行程序部分可以通过集群系统获得更高的性能。
1.3. Gaussian 软件并行方式
Gaussian 03 软件主要采用两种并行方式,对于IBM 小型机或者SGI 的Origin系列或者Altix 系列的高性能机来说,主要采用基于OpenMP 的并行方式。
OpenMP 并行方式可以运行在基于共享内存方式或者基于 #p#page_title#e#NUMA 体系结构的高性能计算机上采用多线程的方式实现高速并行。这也是Gaussian 系列软件最早采用的并行方式。对于目前最流行的集群系统,Gaussian 系列软件也引入了Linda并行库来实现多机的并行作业。TCP-Linda 是专门为Gaussian03 设计,实现G03分布式并行的必需程序。Gaussian 03 软件可以在执行任务的时候选择Linda 并行方式还是共享内存方式。当然,基于OpenMP 的并行方式将受到单节点的CPU数的限制。例如如果服务器的CPU 数为8,则采用Gaussian 03 的OpenMP 并行方式将最多使用8 颗CPU 并行工作。
2. Gaussian 03 并行平台系统分析
从本章开始,将着重阐述北京宏剑公司对Gaussian 03 运算并行平台的系统分析,从而帮助我们为向用户提供一套具有最优性能价格比的方案做好准备。
2.1. 关于g03 在并行集群平台上的加速比
Gaussian 03 的问题规模会随着计算题目的复杂程度、所选取的粒子数目、所选基组的数目、使用的基函数的数目以及算法收敛快慢等多种因素的变化而变化;在很多领域中,Gaussian 03 计算只需要普通的PC 机就可以进行,但是同样也有很多使用PC 机无法解决的问题,这个时候,采用并行技术的Gaussian 03计算就成为了解决该类问题的必然方法。目前Gaussian 03 中几个比较消耗CPU的Link 都实现了并行。一个采用了优秀方法的运算题目可以使得Gaussian 03 在并行平台上的运算效果更好。以Gaussian 03 的Benchmark 中的test397 为例,其并行部分主要集中在Link 502 和Link 703,这两个部分都可以实现很好的并行。
下面是Gaussian 03 软件的test397 测试在并行平台上的并行测试结果:
A1.jpg
Test397 在并行平台上的加速比
如图,综坐标是运行时间(Wall time),以秒为单位;横坐标是CPU 个数,其中4 颗CPU 以内采用了sharemem 的形式,8 颗CPU 的并行采用了Linda 并行的方式。我们可以看到在目前的测试规模下,test397 在并行集群系统上显示了较为良好的性能加速比,这也就意味着过去需要一天才能算完的题目可以在4个小时以内完成运算。这也标志着很多大规模的题目可以在规定的时间内运算完毕并获得满意的结果。
因此,通过并行集群配合Linda,Gaussian 03 计算可以取得很好的性能突破,这使得采用集群作为Gauusian 03 计算的硬件平台成为一个发展趋势。同时,该平台具有较CC-NUMA 平台以及小型机平台更高的性能价格比,这也使得集群技术成为Gaussian 03 计算的必然趋势。
2.2. g03 采用Linda 并行和OpenMP 并行的性能差别
为了了解Linda 并行和OpenMP 并行之间的性能差距,我们进行了下面的实
验:
实验平台:
1、2×H4402(运行Linda 并行作业test415,采用2 颗CPU 并行)
2、1×H4402(运行OpenMP 并行作业test415,采用2 颗CPU 并行)
运行结果:
A2.jpg
从表中可以清楚地看到,采用OpenMP 的并行方式的计算题目运算效率更高,当然,这需要在硬件层面上解决OpenMP 的问题――即采用多CPU 的高性能节点机。
2.3. 关于g03 对内存的需求
Gaussian 计算是对内存要求非常高的计算,在整个运算过程中有一个参数(%mem)可以控制使用的内存总量,利用这些内存可以使得很多计算速度更高,同时将该参数提高将可能提高整个运算的运算速度。不过该参数的设置也不是越大越好,实验证明,当该参数达到一定程度的时候,运算的性能并不会随着参数值的增加而提高。另外对于一些计算,采用64 位系统将可能花费更高的内存。
下图是对test415 的内存消耗的描述:
A3.jpg
Test415 内存消耗
从图中可以清楚地看到,test415 计算分为两个阶段(表现在test415 运算题目上,是两个Link),并且内存消耗有所不同,最大可以达到
同时对于同样的计算问题,系统所使用的内存总量是不变的,下面是对于test397,我们采用2CPU 并行和采用4CPU 并行的方式所测得的内存消耗:
A4.jpg
从上图可以确定,Gaussian 03 计算对于相同规模的问题,其使用的内存总量是一定的。因此在配置Gaussian 应用系统的时候应该充分考虑到这一点,在节点数和单节点内存中找到一个最佳的契合点。
2.4. 关于g03 对系统IO 吞吐能力的需求
对IO 能力的需求主要分为三个方面:
1)对存储容量的要求
2)对存储速度的要求
3)对存储安全性的要求
Gaussian 03 计算通常是在计算的开始阶段将一些计算内容写入一个文件中,然后在后面的计算过程中不断地修改这个文件并最终获得计算结果,所以Gaussian 03 计算的时候会在开始阶段出现整个运算过程的IO 最高峰,并在后面计算的过程中始终保持较小的IO。下图是test397 的磁盘占用量:
A1.jpg
Test397 硬盘消耗
Gaussian 03 计算部分算例对于存储容量有着很高的要求,通常的Gaussian 03计算需要至少
Gaussian 03 计算对系统的IO 能力具有一定的要求,经过测试,对于Gaussian计算中对IO 要求较高的一些应用来说,其IO 吞吐需求可以达到50Mb/s,这个速度对本地硬盘和本地RAID 以及磁盘阵列都不会构成很大的资源紧张,但是对于采用NFS 共享文件系统存取策略的用户来说,这个速度接近NFS 的数据存取带宽,因此,采用NFS 文件系统作为整个Gaussian 03 计算集群系统的载体将会带来Gaussian 03 计算的瓶颈。下图是某一Gaussian 03 计算程序的IO 变化图:
A2.jpg
某计算空间占用变化过程
我们看到整个计算在一段时间内实现写文件的操作(500 秒左右),实现了
大约25Gb 的文件写,这样平均存储访问带宽达到近50Mb/s。
在存储安全性上,由于Gaussian 计算中间过程的文件并不被用户使用,所以对存储的安全性Gaussian 03 计算并没有太高的要求,只要保证在运算过程中文件系统以及存储介质没有出现本质的故障就可以确保Gaussian 计算的顺利进行。当然,对于结果的log 文件需要具有很好的存储策略以提供给用户进行结果分析和显示。
2.5. 关于g03 对系统网络能力的需求
Gaussian 03 计算程序对系统网络能力的需求主要体现在两个方面:
1、 计算通信网络的需求。Gaussian 03 应用程序采用Linda 并行程序进行并行通信,Linda 并行通信的时候会进行大量的系统通信和同步,这就需要网络最好具有更好的带宽和更低的延迟。目前一些专用网络(如Myrinet 和Infiniband)具有更高的系统带宽和通信延迟,但是Linda 并行程序暂时并不支持这些高性能网络。所以Gaussian 并行应用通常都采用基于标准TCP/IP 协议的以太网络。当然,我们也可以在高速网链路上运行TCP/IP 协议,最大程度地提高整个系统的带宽和延迟性能。
2、 数据通信网络的需求。Gausian 03 应用通常采用NFS 文件系统实现节点间的数据同步和程序的同步,而NFS 文件系统的性能取决于在数据通信链路上所采用的网络设备。这就要求数据通信网络应尽量采用全线速、无阻塞的交换设备。
为了确定网络带宽对Gaussian 03 计算的影响,我们对test415 用2 颗CPU的linda 进行计算,分别比较了千兆网络和百兆网络的性能,下面是测试结果:
A3.jpg
可以看到 #p#page_title#e#
2.6. 关于g03 的应用部署问题
g03 应用通常不会采用太多的CPU 计算太大规模的问题,通常情况下32 个CPU 的并行计算的规模已经被认为是较大规模的计算。同时由于该计算需要反复的验证过程,所以通常g03 计算采用分布式计算的方式,将多个计算任务分配到集群系统或者高性能计算机系统中,这个时候,针对Gaussian 03 计算的方案中就必须体现对系统的应用部署的优化。解决这个问题的关键点主要有如下几点:
1、您的应用最多希望使用多少CPU?
假设您的应用最多希望使用32 颗CPU,则在配置集群系统方案的时候要提供至少32 颗CPU 同时计算的能力,同时为了满足冗余的需求,最好配置一倍左右的CPU 数。
2、您的大规模应用和小规模应用的计算频率比是多少?
同样假设您最多希望使用32 颗CPU,但是使用这么大规模进行计算的情况非常少,大部分的应用都是在8 颗CPU 以内进行的,则在部署系统的时候建议将这些系统按照8CPU 一组进行部署,并提供多组整合的能力,以确保大计算任务的顺利完成。
3、您的计算问题是否需要大量的IO 处理?
这个问题同样很关键,因为如果采用每个计算任务都使用单独的存储系统方案得话,通常造价较高,性价比不好,但是如果整个系统仅有一个存储入口,则在大量IO 频繁计算需求下,会造成整个系统的不可用。因此您的计算是否大多都是IO 量大的应用和是否都是CPU 量大的应用将决定整个系统的IO 节点数量和计算节点数量的比值。
4、您的系统是否具有良好的作业管理能力?
利用成熟的作业管理系统可以实现对计算资源的充分调度,极大地降低管理员的管理成本,从而提高整个系统可用性。
2.7. 操作系统和操作系统内核对g03 计算的影响
通常的共享内存服务器系统主要有两种架构,一种是基于NUMA 结构的内存访问架构,另外一种是基于SMP 的内存访问架构,两种架构的最主要的区别是在访问统一的内存空间的时候,NUMA 架构CPU 会优先访问离自己最近的内存,而SMP 架构的CPU 访问所有内存的速度是一样的。显然,在这样的架构条件下,采用NUMA 结构的CPU 可能会带来系统性能的提高。但是实验证明对于Gaussian 03 软件来说,这些内存访问带来系统性能的提高并不大,如下是对test415 用1 颗CPU 计算所得到的结果:
A4.jpg
这其实和Gaussian 计算的特点有关,Gaussian 计算采用Link 计算的方式,内部有非常多的子运算程序,用来完成一个整体运算的不同步骤。而在这些子应用程序进行切换的时候,我们发现其切换的CPU 是非常随机的,有的时候采用CPU0,有的时候采用CPU1,或者切换的CPU2,CPU3,等等。所以在计算的时候,特别是采用多线程进行计算的时候,CPU 无法确保会访问离自己最近的内存,这也是操作系统和软件层共同作用的结果。不过上面的测试结论至少证明,采用64 位系统下的64 位Gaussian 03 软件的应用性能可以超过32 位系统下的32 位Gaussian 03 应用性能。
2.8. 小结
经过前面的分析,我们认为构建一个计算化学计算硬件平台需要注意以下几点:
1、 Gaussian 计算可以通过并行计算机实现性能的提高。
2、 Gaussian 计算对计算能力的需求是很大的,越多的CPU 将提供越强大的计算能力
3、 Gaussian 计算对内存的需求很大,通常一个CPU 至少要配置
4、 Gaussian 计算对IO 的需求是根据应用的不同而不同的,并且如果采用多任务计算的分配方法,则建议在IO 层面进行全面的优化
5、 Gaussian 计算的并行部分采用单节点内并行较多节点内并行效率更高,并且Linda 软件需要额外的付费,所以对于小规模的应用应使其尽量在一个节点内完成。
6、 Gaussian 计算无法使用高速专用网,在高速专用网上运行 #p#page_title#e#TCP/IP协议是一个折中的方案。
7、 Gaussian 计算64 位程序会获得更高的性能(对于有些应用),同时64 位程序可以突破Gaussian 应用的硬盘使用限制,为更大规模的计算做好准备。