你在浪费时间吗

李微雪

我平常注意到,你们一旦将准备好的任务投到计算机里去算后,就再也不去管它了。不去及时地看一下结构优化的情况。如果没有队列时间限制的话,你们可能就会一直等下去了。

要记住,计算机以及我们用的所有的程序都是人写的,并且是固定不变得,缺乏灵活性。和人的脑子本身比起来,差的太多太多。如果你依赖于计算机,而不是你的大脑,那你可能就在浪费你宝贵的青春了。下面就是一个例子,其中有超过75%的时间是在做无用功;而你如果不管它的话,它可能还在继续地浪费时间下去。这个算例早就收敛了,或者应该停下来,重新开始,只把最后优化的坐标读进去。如果 总是按这种方式去进行研究的话,那么计算机越多,可能负面效果越大。

我经历过的另外一个例子就是,我的一个博士生同学,在计算机上用 Mathmatic软件包编程解析求解一个复杂的偏微分方程,化了将近两个星期计算机都没有解出来,将情况反应给了导师。导师拿着方程回了家,第二天早上 来得时候,已经将方程给解好了。原因是将方程稍微简单变换一下,就可以求解了。但要让计算机做到这一点,真的是勉为其难了。

我已经多次提到这一点,希望你们自己思考、讨论找到合适的正确的从事研究工作的方法。不要不加思索地让计算机去为你算。否则化,我可能会要求你们停下来,认真分析你们现在的计算,看你是否真正理解了你现在所用的程序,以及你所用模型的涵义。

计算模拟,也是一种实验,要你去设计,并及时地去调整。有些可能只是定性地验证一下,不需要很准确地得到结果;有些则需要定量地拿到结果,要求结果确凿无疑

 

文章撰写

李微雪

 

文章是大家科研工作的总结,也是大家及时毕业、寻找新工作的一个重要判据。对于写什么样的文章,定位在什么水平上,我们组要有一个统一的规定,如下:

1)任何人不允许以任何理由去撰写任何中文学术文章,我也不去改这样的文章。(综述、评述文章除外。)

其主要原因如下,读者群较窄,不利于学术交流。另外,很多中文期刊的审稿都流于形式,其中充斥在大量良莠不齐的文章。现在,我们组有两篇中文催化学报的文章,和苏海燕待投的一篇中文文章。但这将是我们组最后的一篇中文学术文章 !!!

2)会议文章,不能算是真正的学术文章。

3)即使是撰写英文文章,期刊也要能在本领域主流期刊上发表的文章才能去撰写。这里主流期刊的含义并一定是高影响因子的期刊。相反有些期刊向Surf. Sci, 虽然影响因子相对较低,但经常有一些很好地工作在其中发表。

4 在撰写每一篇前都要考虑如下一些问题,如果能够基本上到达这些要求后,就可以和老师商量文章撰写的事情,讨论文章的大纲、结构、和准备在文章中包括那些图表。
(a)
文章是否有鲜明的立意、新意,是否是针对一个明确的科学问题。
(b)
所用方法、模型是否合理、恰当。
(c)
数据是否充分、完备、系统,令人信服。
(d)
分析是否恰当,逻辑是否严密。
(e)
通过文章的研究结果,能否有效地解决、澄清在文章开始所提出的科学问题,能否得到令人信服结论,并进一步提出新的见解。

希望大家在平常的工作中,都要围绕着这些来展开自己的研究工作。而我也希望每一个人的工作都是系统的,有深度的。只有这样,才可能写出好的文章来,也就才可能写出高影响因子的文章。而有了好的研究工作,毕业、就业可能就不是大的问题了。

 

科学计算(研究)经验谈

李微雪

对于科学计算,或更一般地讲科学研究,我总结了一下我的一些具体的体会和经验,给大家来分享,希望大家能够有效地体现在自己平常的科学研究中去,或有更好地发挥和总结:

1)要将物理模型想清楚,计算研究之前,尽量将问题简化,找出核心、关键问题,然后在设计相应的模型,进行数值计算

2)要充分地根据相关的物理、化学理论、知识进行尽可能多的分析、讨论。DFT 理论计算是我们的重要研究手段,但绝不是唯一的研究手段。往往算得太多,想得 太少,会导致只见树木,不见森林,局限于细节,或容易专牛角尖而不自觉,让问 题限于困境,或完全忘了自己到底在干什么。反过来,又不能过于依赖定性分析和 讨论,没有定量的研究也就不成为科学,也就不会有DFT理论及其应用蓬勃发展的 今天。

3)在保持批判眼光看已经发表的文献结果的同时,要充分吸收、理解已发表文献的研究结果,并用其来帮助解决我们的问题。我们不可能、也完全没有必要所有的东西都从头自己做一遍。所以要充分地阅读大量的文献,进行很好地总结。一般来讲,大的课题组、有名的研究中心研究结果相对来说可靠一些,但也不能说他们做的所有的东西都是对的。也有很多计算被证明是完全错误的。和自己研究问题相关的关键的数据一定要进行重复计算。

4)为提高效率,在大规模、批量计算之前,要做好充分的测算、试算,调整到最优的参数和算法后,再统筹安排计算。

5Benchmark计算/研究,特别是针对新的体系是绝对不可少的。大多数的科学研究都是基于定量研究的基础之上,所以拿出可以信赖的、有说服力的数据,是一切科学研究可以被称之为科学研究的必要条件。

6)要充分认识到DFT理论计算适用范围,相关的系统误差、数值误差的大小,以 及所研究问题的特性和需要的精度有多大。要对相关的物理量、物理过程在量纲和 数量级上有一定的概念,据此要求,来选择的相应的计算方法、模型和参数。不做 盲目的、不必要的高精度计算,也不要让数值噪声太大,以致完全影响准确的数值 分析和物理结论的导出。

7)要将定性、粗略的计算和定量、高精度的计算有机地结合起来。定性、粗略的计算适合于快速的排除、以及验证一些初步的猜想,有助于迅速地缩小研究的范围,得到初步的、定性的认识,并验证一些来源于直觉上的、不能完全确定的初步推断。定量的计算则是可以最后放到文章里去的计算,或定性计算不足以区分相关物理过程、或需要定量、准确描述的问题。

8)提高计算效率方法之一是,设计好计算方案和相应的对比计算,不做漫无目的的计算。要力图将问题、相关变量给孤立出来,单独进行测试分析,不要眉毛胡子一把抓。这可以极大地便利问题的分析和排除,加快研究进度。

9)提高程序使用技巧和效率,努力学习相关理论知识。一个从事理论计算的人,如果程序在你手里只是一个黑盒子,那你就不能说是一个从事理论研究的人,也就不能真正发挥理论研究的力量。在研究工作进展到一定水平,技巧就是非常重要了。同样的认识和理解,同样碰到很有趣的问题,你技术水平不够好,不够快,逾越不过去,也就还是解决不了问题。或受限于你的技术和方法,同样也不能有效地解决相应的问题。简言之,不能眼高手低,或不切实际。

10)人是所有因素中最大的速控步。大多数人所面临的最主要的问题,不是技 巧、方法和设备水平的局限,更多的是对科学问题的理解和简化所到达的深度。不 勤于、善于思考,简单的问题也会变得复杂了;勤于思考,善于思考,看似复杂的 问题,也变得容易解决了。小的科学问题,做的深了,能够变通了,也可以变成大 的科学发现了。所以我平常也总在提醒大家,科学问题无所谓好坏,无所谓难易, 关键是看做问题的人和怎样去做。我在前几天也提到:最好的程序是你真正理解的 程序。其初衷也是在某种程度上是弱化对外在仪器、硬件的依赖性,而更加强调从 事研究工作的个人的内在因素的重要性,而事实上也是如此。再好的仪器、设备也 要看具体使用的人怎么去使用它了,在好的仪器、设备也是人造出来的。

希望大家在日常工作中勤于思考,不断总结、提高自己,做出漂亮的工作来,为自 己将来的顺利发展打下坚实的基础。也希望大家能够对此进行更深入地思考、总结 和探讨。

 

计算资源优化利用

李微雪

我们课题组目前有三个计算节点,三个节点的计算特性差别也比较显著:

1101是最先买的计算机,在计算速度上也有较慢一些。计算为两个核,2G内存。

223807年买的计算,在性能上较大的提升,单个计算节点:服务器为4个核,4G内存,PC为双核,2G

3237是今年买的,每个节点16G内存,8CPU,网路交换为Infiniband (前面 两个均为千兆交换机)。适合超大规模的计算

大家在投递自己的作业时,要根据自己的计算特点来选择合适的计算机来运行自己的作业,基本想法如下:

1)要充分找到适合自己作业的计算特点,使得我们计算机的整机性能达到最大的发挥

2)但科学研究追求的不是最省钱的研究,还要有时效性。在不无谓浪费计算资源的情况下,要力争使自己的计算在较短的时间内完成。

3)目前我们在所有的三个计算节点上,大家作业的优先级和配额都是一样的。算得多的,相应的优先级就会将下来,排队时间会长一些。我会根据科研进度的实际情况,会进行适当的调整。平常,还是鼓励大家充分利用这些资源,所有人在所有的计算节点都是开放的。建议大家有所协调和默契。特别是新手要谨慎使用,在真正掌握计算软件和明确科学问题之前,不鼓励放开来进行大规模计算。但同时鼓励竞争使用相关计算资源,现在的作业调度系统是通过优先级和配额来进行动态平衡的。 

 

最好的程序是你真正理解的程序

李微雪

今天下午了解了一下欧阳做的FeO/Pt的工作,看到欧阳在短短的时间半年里进行的benchmark计算和做的初步的分析、讨论,能够较快的进入状态,非常高兴。这和他的勤奋、努力、积极、主动深入学习相关理论知识,并认真思考是分不开的。但在和欧阳的进一步的,就细节问题进行讨论的过程中,还是发现一些问题。感觉还是很有代表性的,所以想就此提醒一下大家。

最好的程序是你真正理解的程序

这是我在德国Fritz-Haber研究所做博士后是合作导师M. Scheffler教授的一句给我留下印象极为深刻的话。

我希望大家能清醒地理解这句话的含义。一个程序里有很多功能和参数,你需要去了解每一个参数的含义。在不清楚的情况下,要慎重使用,一定要做一些相关的测试,读一些相关的理论,理解这些参数的具体含义和可能的影响。千万不要想当然,或过度地依赖于自己的一些没有经过深入考察、测试的经验。否则等你发现时,肠子悔青了也无济于事。

其实这句话代表的逻辑可以套用到很多不同的地方和场合里,大家可以尝试着把程序这个词字换成其它不同的词,看看这一逻辑所代表的背后的含义。

还有一点,我想提醒大家的是,我们每天在计算机上计算的东西,都是模型。你得到的所有结果,都是你具体搭建的模型的直接反应。因此,搭建模型后,得到了相关的结果后,首先要理解这些结果本身是否正确、合理,是否可以和搭建的模型直接连接起来,以及结果的具体含义。模型和实际的问题有很大的差异,有很多近似、简化在里面。所以不要直接拿你的模型结果直接去定量地解释、判断模型你所关心的实际问题。

模型和实际问题之间的关系,如何根据实际问题抽象相应的模型,以及如何根据所建立的模型得到的结果,反馈到实际的问题中去,是一个复杂的方法学上的问题,不易简单说清楚。上次来访的Munich工大的Rosech教授就此在我们组里做的报告,对此进行了很好地总结,希望大家还有印象。我也希望大家在平时能够积极思考这些问题,我们在适当时间可以就此展开相应的讨论。

 


Copyright © 2007  DICP Theoretical Catalysis Group All rights reserved. 

Tel:86-411-84379997  E-mail:wuchending@dicp.ac.cn