桌面上的计算化学
计算化学 (Computational Chemistry) 在最近十年中可以说是发展的最快的化学研究领域之一。究竟什么是计算化学呢?由于其目前在各种化学研究中广泛的应用,我们并不容易给它一个很明确的定义。简单的来说,计算化学是根据基本的物理化学理论(通常是量子化学)以大量的数值运算方式来探讨化学系统的性质。最常见到的例子是以量子化学计算来解释实验上各种化学现象,帮助化学家以较具体的概念来了解、分析观察到的结果。除此之外,对于未知或不易观测的化学系统,计算化学还常扮演着预测的角色,提供进一步研究的方向。另外,计算化学也常被用来验证、测试、修正、或发展较高层次的化学理论。同时,更为准确或有效率计算方法的开发创新也是计算化学领域中非常重要的一部分。
计算化学其实是一门有着悠久历史的研究领域,自一九二零年代量子力学理论建立以来,许多科学家曾尝试以各种数值计算方法来深入了解原子与分子之各种化学性质。然而在数值计算机广泛使用之前,此类的计算由于其复杂性而只能应用在简单的系统与高度简化的理论模型之中。在十多年前笔者求学之时,计算化学仍是一门须具有高度量子力学与数值分析素养的人从事的研究,而且由于其庞大的计算量,绝大部分的计算工作需依靠昂贵的大型计算机主机或高阶工作站来进行。
计算化学的普及
然而,此情况在九十年代中期开始有了重大的改变。由于使用在个人计算机上的处理器(Pentium, Pentium Pro)以及外围设备(如高速内存及硬盘)的大幅进步,个人计算机的运算速度已经直逼一些传统的工作站;再加上个人计算机系统无需负担传统多人多任务系统中复杂的作业,使得个人计算机逐渐开始成为从事量子化学计算的一种经济而有效率的工具。然而,早期为个人计算机操作系统所发展的计算化学软件非常有限,因为数十年来大部分的科学应用软件都是在Unix操作系统下所开发出来的,但当时在个人计算机上的Unix操作系统都非常昂贵且不易安装与使用。就在此时,逐渐成熟的Linux操作系统开始被广泛的使用在个人计算机之上。Linux 是由一位芬兰人Torvald Linus所开发出来的在个人计算机上执行的Unix操作系统。在经过数年全世界无数人的协助发展下 ,在九十年代末期Linux已成为一功能齐全的网络多人多任务操作系统。Linux最吸引人 的地方在其稳定性且不需要昂贵的计算机配备,而且更重要的是它基本上是免费的。比 如说,大家对目前普遍使用的操作系统当机的情况并不陌生,但Linux工作站通常可以正常运作几个月而不出现任何问题;此外,一般个人计算机上使用的操作系统、网络、网页、邮件、档案、X-Window等服务器软件动辄需要上万元,但这些在Linux操作系统中几乎都可免费取得。因此,搭配Linux操作系统的个人计算机现在已成为量子化学计算的一种很好的选择。当然,如本刊中另一篇文章所介绍的,近几年来许多可在Windows操作系 统下运作的计算化学软件也陆续出现,功能也不断的增强,使得个人计算机成为当今计 算化学领域中非常重要的工具。
计算化学普及的另外一个原因是图形接口的发展与使用。传统上计算工作的输入与输出都是以文字方式来表示,不但输入耗时易错,许多计算结果的解读也非常不易。近年来图形接口的使用大大的简化了这些过程,使得稍具计算化学知识的人都能够轻易的设计复杂的理论计算,并且能够以简单直接的视觉效果来分析计算所得的结果。现在的研究生可能很难想象以往我们成天坐在文字终端机前一个一个字的将大分子的Z-matrix敲入 的生活。
计算化学未来的发展
在硬件上,由于计算机科技进步的速度非常快,因此不易预测长远的未来计算化学的发展。比如说,十八年前,当Apple II 带起个人计算机旋风时,所用的处理器仅是频率1MHz 的8位Motorola 6502,内存只有48-64 kB,资料常只能存在录音带中,不到100 kB的软盘是一种奢侈品。十五年前,第一代的IBM PC XT是使用4.77MHz的Intel 8088处理器,内存"高达"640 kB。当时恐怕没有人能想象如今最新一代的个人计算机可配有超过1GHz 的Pentium III、Pentium 4、或Athlon等32位处理器,内存可达1GB以上,而超过30GB的高速硬盘也已非常普遍。最近,Intel又推出了64位的Itanium处理器,而且支持此处理器的Red Hat Linux 7.1也已发行,藉由更有效率的计算与数据处理能力与对海量存储器与档案系统的支持,这将可大幅提升PC上的科学运算能力。十五年来个人计算机在功能上有超过1000倍的提升!而未来十五年的发展又是如何呢?依照专家的估计,由于物理定律的限制,类似现有的处理器架构在功能上大概只有十倍的成长空间。短期来 看,平行处理的技术可大幅提升运算的效率;长远而言,或许光学计算机甚至于量子计算机将会提供现今无法想象的计算速率。
然而我个人认为计算化学要有真正突破性的发展,除了硬件的进步外,理论上研发似乎更为重要。目前对于大分子的计算限于理论的复杂性只能使用分子力学或半经验法;而且就算计算机功能上能有1000倍的提升,距离准确的量子仿真仍有一段距离。目前的理论方法,仅能对大约小于十个原子的系统达到化学误差(1-2 kcal/mol)内的准确度;而且这些准确的计算方法的计算量大约是跟系统大小的七次方成正比。因此,计算机计算功能的提升通常并无法将可准确仿真的系统加大多少。一般认为要能以计算化学准确仿真各种生物及材料系统,理论化学家需要研发出计算量仅与系统大小的平方甚至一次方成正比的准确量子化学方法。
以Linux操作系统从事计算化学的实例笔者最近二年来将研究用的计算平台逐渐由高速计算机中心及高价位的工作站转移到使用Red Hat Linux操作系统的PC上,我们建议使用6.1以上的版本以及2.2.16以上之kernel。
本实验室最常用的计算软件为Gaussian 98以及Gaussrate 8.2。以下就以Gaussian98在PC上的安装与使用为各位做一介绍。在过去Gaussian 94的版本中有提供在Linux上以f2c将Gaussian原始码编译的shell script,但在Gaussian 98的版本中我们则需要使用由Portland Group Inc. (http://www.pgroup.com/) 所发行的FORTRAN 编译器 pgf7 7。此软件可由网络上直接下载购买,十分方便。 若您的单位已有Gaussian 98 source code的site license,则您可直接由负责人处取得,否则需先与Gaussian公司接洽,签署一些License Agreement,手续较为麻烦。当这二个软件都安装完成后,理论上就可进行Gaussi-an 98的编译工作;但Gaussian公司建议采用最佳化过之BLAS 链接库 (目前建 议之版本为ppro1.2f),这可经由网站 (http://www.cs.utk.edu/~ghenry/distrib/) 登记下载;并且由Gaussian公司 (http://www.gaussian.com/g98_req.htm) 下载blas-f2 c.a 链接库一起摆入/usr/local/lib 目录之中。接下来便可执行Gaussian 98的安装程序 (g98/bsd 目录下之 bldg98)。Pgf77 的编译速度非常惊人,绝不逊于工作站及大型主机上之编译器;若一切顺利,大约20-30分钟后Gaussian 98程序就已准备就绪。我们建议此时至少执行一些测试工作(test jobs, 如test 1, 28, 94, 155, 194, 296, 302 等)以确定可以得到正确的计算结果。
Gaussian 98支持多处理器,我们强烈建议您的计算机使用双CPU的主机板,并且确定Linux 系统上是使用SMP版本的kernel。
使用双CPU另外要注意的是Linux 系统中内定的内存共享值太小,我们建议将其改为系统主存储器的80%左右,这只需要将希望共享的内存量键入 /proc/sys/kernel/shmmax 档案即可,在Gaussian 98中使用双CPU的方法为在输入档开头加入 %NProc=2 的指令。虽然前面提到说目前PC已可作为计算化学的工具,但如Gaussian等软件通常处理的计算量及资料量都非常庞大,为达到良好的效率,硬件上的配备需较一般PC高出很多。在内存上,512MB 的SDRAM 应是基本配备,由于最近内存价格的滑落,1GB 的内存应该是很好的选择。硬盘配备也是影响运算速率的一个重要因素,因为在Gaussian的运算过程中常需写入及读取大量的资料 (scratch file),高速硬盘的重要性不亚于内存。我们建议使用Ultra SCSI 160 的接口配合18GB以上的硬盘空间。新版的Red Hat Linux 支持software RAID系统。两台以上的SCSI硬盘在RAID 0的架构下可额外增加一些IO的速度。 另外由于32位系统的限制,PC上之scratch 档的大小不可超过2GB。 对于较大的计算工作常需要借着%RWF 指令产生多个scratch 档案。此外,为避免停电造成系统的破坏,UPS也是不可少的配备。右图为使用Gaussian 98在不同速度的计算机上(单CPU)测试的结果。测试的分子为Benzene。测试的项目为结构最佳化、QCISD(T)单点能量、以及振动频率 的计算。这四种CPU分别是过去四年来Intel推出的代表性处理器。虽然P4在许多商用软件上表现并不特别出色,但在我们的一系列测试中,P4的运算能力似乎远较PIII来的强。我们正期待多重P4处理器以及Itanium 64位处理器的计算机上市,因为这将会把桌面上的计算化学带入一个新的高速领域。
结语
公元1998年的诺贝尔化学奖颁给对计算化学有卓越贡献的Walter Kohn 及 John Pople。这是对计算化学领域的一大肯定,也显示了计算化学在现当今化学研究中的重要性。数十年来,藉由计算化学的研究使得我们大幅增加了对许多化学现象的了解。随着计算能力的大幅增加,在将来的化学研究中计算化学将扮演更加重要的角色。比如说以往计算化学所研究的系统主要局限在气态中的中小型分子,但近来国际上一些主要化学期刊中已陆续出现准确仿真大型生化系统的计算化学研究。计算化学不仅已成为一个重要的化学学门,它更已经是国际间化学基础研究的必备工具。国内在这方面的起步较晚但研究人才不算少,然而受到重视的程度仍有待加强,并且应该在大学及研究所化学的课程中开始加入计算化学的基础训练,以培养具有分子仿真及计算化学理论能力的新一代化学专业人才。