涓流汇沧海,积篑成丘山:一位科学家与ABACUS的十五年
ABACUS是由何力新教授、任新国研究员和陈默涵助理教授主导开发的,拥有完全自主知识产权的一款DFT软件,主要针对凝聚态材料模拟计算,通过求解Kohn-Sham方程得到材料基态电荷密度分布,并由此计算目标材料的各项物理性质。与当前流行的其他DFT软件相比,ABACUS同时支持平面波和数值原子轨道两种基矢量,并创新性地利用溢出函数来构造数值原子轨道,有效地提高了计算的精度和可移植性,并在复杂大体系的模拟中表现出高精度和高效率。
2021年,ABACUS加入DeepModeling开源社区,以开源、开放的格局期待每一个DFT软件的开发者与使用者交流贡献。
时间回溯到十五年前,在2006年的中科大,还是大三本科生的陈默涵第一次听到何力新老师做一款国产DFT软件的想法,而这正是ABACUS十五年故事的开始。
中科大本科期间开始从事科研
中国科学技术大学有11所国家级科研平台,包括微尺度物质科学国家研究中心和中国科学院量子信息与量子科技创新研究院。ABACUS就诞生在中国科学院量子信息重点实验室。ABACUS是传统第一性原理计算软件,跟量信没有直接关系。这在科研圈原属平常,恰可作聊天的谈资,偶尔被打趣几句:“你们薅量信的羊毛。”
2006年,在中科大物理系大三读光学专业的陈默涵原本打定主意要去量信实验室做量子光学实验,却被郭光灿老师建议到刚回国的何力新老师组里做本科生科研。第一次见面,何老师就说打算做一款国产的密度泛函理论第一性原理软件,因为国内还没什么人做,而这件事情何老师觉得很重要。但同时,何老师说,做这款软件可能花的时间比较长,估计要等到博士毕业才能有点眉目。虽然凝聚态的专业课一门都没上过,但是陈默涵还是欣然答应,心里想着能读个博士就算是很光荣了,其它的也没想那么多。
五年博士科研经历
当时一起和陈默涵进何老师组的还有他的室友王晨杰(大家都叫他小杰,现在是香港大学物理系教授),小杰在本科毕业的时候在何老师组里发了一篇一作的PRL文章,然后去美国读博了。后来组里的同学都陆续有文章发表,只有天天沉浸在C++里和段错误斗智斗勇的故事主人公没有文章,并不是他不在乎,只是觉得在乎也没用,别人都在用密度泛函的程序,自己则是在重复编写别人已经写过还用得很好的程序。生活曾有一段时间很灰暗,暗无天日那种,天天看美剧度日或者和几位本科同学一起打一天篮球,大洋彼岸留学的同学似乎活得很精彩,心生羡慕之余也逐渐发展了自己的躺平心态,偶尔一点生活的亮光来自程序又调通了一个bug或者多完成了一个功能。
博士期间,他逐渐养成了习惯,一段程序不写到自己彻底舒服就不甘心,例如程序的bug找不到就会连着好几天睡不好吃不好,代码输出格式偏差一个空格没对齐都不行,别人新加的代码一定要自己一行行看过并运行完才放心。就这样,在没有使用任何版本管理软件的情况下,他手动备份了ABACUS程序四百多个版本,每个版本实现了什么功能解决了什么bug都被一一详细记录了下来。
博士期间也有一些比较令人难忘或激动的科研瞬间,例如他虽然是个C++门外汉,刚开始写的时候老是忘记类的大括号之后要加分号之类的问题,编译怎么也过不了(还得靠小杰帮忙)。之后慢慢他感觉自学C++语法像读小说一样有趣,第一次因在ABACUS里加入一个文件编译成功而获得满足感;和计算机系老师同学合作学到了MPI并行方法,觉得甚是有趣,后来尝试并行了平面波,当多核运算和单核运算的结果一致时也获得了很大的成就感。另外,组里不时会来一些本科生参与科研,在ABACUS发展早期,陈默涵先后带过10多位本科生一起发展了一些关键功能,虽然这些人都先后奔赴了自己的前程,但还是一起度过了一段难忘的并肩作战的岁月。
2009年他的第一篇论文发表在PRB上,研究的内容是把Wannier函数分解到多个近邻中心来形成基矢量,这样得到的计算精度会比直接使用Wannier函数做基矢量来得更精准。文章发表之后,导师让他去了趟柏林,说是有个软件FHI-aims要发布了,可以去学习一下。在FHI-aims的hands-on workshop上,主办方临时发现给上机学生的脚本有问题没办法得到正确结果,他自己当晚就写了个脚本纠正了问题,第二天主办方把他的脚本发给其他人使用,大家纷纷向他道谢,第一次觉得做中国人挺自豪。另外一个小插曲是,他在workshop的路上碰到了几位大佬要了合照,想着将来离开学术圈了至少还能跟别人吹牛一下出过国。没想到的是,里面的某些人成了10年后他发文章和拿戈登·贝尔奖的重要合作者。
2009年德国的Fritz Haber研究所
从左到右依次是陈默涵,Roberto Car, Michele Parrinello, Annabella Selloni, 和Matthias Scheffler
文章发表一两年后,当他发现自己的文章几乎没有引用次数的时候,才意识到自己不仅仅是文章少,而且研究方向也和主流凝聚态物理相去甚远。换句话说,哪怕再多发几篇文章,只要沿着这个方向,其学术影响力也远不如他人,没有学术竞争力,就很难在学术圈生存下来。读到博士高年级的时候,他愈发清晰地意识到自己在文章上毫无竞争力,也在考虑着读博后转行。但躺平之前他给自己立下了个目标,文章可以没有,凝聚态知识可以欠缺,学术前途可以不想,但无论如何这个代码要尽力写完,自己把九年的青春留在了中科大,需要给自己以及博士学位一个交代。交代好了,可以不留遗憾地离开科大,也就足够了。
一次访问美国的机会
2010年,陈默涵参加了个国内超算会议,介绍了ABACUS的相关进展。会议上有人提到汪林望老师要回国访问做报告,和第一性软件开发有关系,问他有没有兴趣到北京听一听。他到北京参加了汪老师的报告,汪老师讲完关于密度泛函理论算法的报告后,满屋沉寂。但他第一次觉得自己日思夜想的许多程序细节终于能找到人交流了,兴奋的把这几年憋在心里的问题都问了,把汪老师的眼睛都问亮了。报告结束后,他问汪老师是否可以去他研究组里交流一段时间,汪老师爽快地答应了,日后回想起来,这次交流也成了他人生的一个重要转折点。在去汪老师组里访问之前,陈默涵在一次会议上遇到了回国访问的林霖,并且得知林霖从普林斯顿毕业后将去劳伦斯伯克利实验室就职,两人相约在美国见面再聊。
2011年夏天,带着对未知未来的期待,陈默涵独自一人来到了旧金山,在湾区四季如春的气候中,他快速地投入到了科研工作之中。很快地,他沉浸在把量子力学的规律通过计算机编程之后的实现,感慨于一个脚本提交之后,可以在数万个CPU上同时运行所带来的震撼。劳伦斯伯克利实验室就坐落在伯克利大学后山上,透过办公室的巨大玻璃窗就能眺望到金门大桥,然而这种超大规模并行给他带来的震撼一点也不亚于窗外的景色。
同时,他也和林霖有了一次非常愉快的合作经历,在短时间内把林霖发展的Selected Inversion求逆算法结合到了ABACUS里面。访问的三个月里,他在汪老师发展的LS3DF方法里成功验证了对原子求力的可行性,并且第一次被普林斯顿大学Emily Carter教授发展的orbital-free(无轨道)密度泛函理论所吸引。在汪老师的极力推荐下,他拿到了Carter教授组的博士后面试机会,并且在访问普林斯顿之后拿到了博士后的offer。这段经历也为他后来在2020年和林霖团队等合作者一起获得戈登·贝尔奖埋下了伏笔。
六年博后生涯
2012年博士毕业后,陈默涵来到普林斯顿大学从事博士后研究,研究的课题就是orbital-free密度泛函理论,但这个领域关注的人比较少。该理论主要通过电荷密度的泛函而不是电子波函数来计算电子动能项。好处就是不需要对电子波函数做正交归一操作,所以比普通的Kohn-Sham密度泛函理论要快几个数量级。
在普林斯顿大学期间,他花了两年半的时间实现了一个密度泛函理论的超大规模并行算法,把原来最多能并行到几百个CPU的程序并行到了几万个CPU,和很多基于平面波的密度泛函理论软件不同。在这个新的算法里,需要同时生成四组不同大小的平面波,来处理实空间不同大小的格子,而且每组平面波要有自己的并行通讯域,因此在算法和实现上都极为复杂。为了实现这个方法,他把Carter组里发展的orbtial-free软件PROFESS(Fortran语言编写)重写了一遍,写到一半卡住了,他觉得程序框架设计得不好,又推翻重写一遍,还是不好,再推翻重写第三遍。美国的圣诞节会放长假,对于他来说,终于可以连续好几天专注在调程序一件事情上,有时有思路了,就半夜爬起来调程序。
于是在一个寒风呼啸的圣诞夜凌晨四点,在经历了两年里无数次的失败之后,他发现1024个CPU核的测试结果居然跑对了,新算法下的电子迭代可以顺利收敛,每一项能量都是完全正确的,然后再尝试2048,4096以及2万多个CPU核也都对了。
他一个人久久坐在凌晨五点的书房里,意识到现在全世界只有他一个人知道这件事情是可以做成功的,顿时觉得很幸福。这个算法做好了之后总算可以给Carter教授一个交代,哪怕不留学术圈,普林斯顿的博后也可以不留遗憾的结束了。当然,积攒了这么多年的密度泛函程序发展经验,他也深刻地意识到了把密度泛函理论算法做到超大规模并行是有本质困难的。
很快三年多的时间就过去了,这三年的科研劳动并没有给他的文章数带来什么本质的变化,找科研岗位依然很困难。摆在眼前的似乎只有两条路,留在美国转行或继续坚持科研。试了试往国内国外的科研机构投递简历,也面试了一些公司,但都没有太想去的地方。
最终他决定搏一把,转到做应用上,希望能摆脱程序员的标签,做点有影响力的应用工作。就这样,他来到了费城的天普大学开启了第二次博后经历。在这里,他用第一性原理分子动力学方法研究液态水,两年多的时间里发了两篇较好的研究工作。值得一提的是,2017年他去普林斯顿开电子结构会议的时候,遇到了站在门口发传单的博士张林峰,他俩第一次站在张林峰的墙报前讨论了很久,DeePMD这个工具解开了这么久以来困扰陈默涵的一个心结:第一性原理方法到底应该如何应用到大系统中,甚至进行长时间的分子动力学模拟。
回国
对回国这件事情认真起来是源于一次APS meeting,陈默涵遇到了北大老师,聊起了回国面试的可能性。同时,也得知在一些新领域,例如高能量密度物理,当电子和离子的温度很高时,常规密度泛函理论面临精度和效率的双重困难,可能需要发展一些突破常规的电子结构计算方法,骤觉跃跃欲试。经过一系列面试,2018年11月,陈默涵终于拿到北京大学的助理教授职位,返回国内。
回国后遇到了王涵,决定一起把DeePMD移植到GPU上,但一直没有合适的人来做。2019年4月,陈默涵恰巧在北大工学院招来了考研调剂的学生路登辉,6月份,又遇到了回国探亲的张林峰和贾伟乐(林霖的博后),DeePMD的GPU工作随即快速的开展起来。虽然疫情爆发团队成员见面经历了一段困难的时间,但计算机世界里的工作推进顺利,运气又足够好,2020年,陈默涵和DP团队(贾伟乐,王涵,路登辉,林霖,张林峰和他的导师鄂维南教授、Roberto Car教授)一起获得了戈登·贝尔奖,将第一性原理精度的分子动力学模拟扩展到了上亿原子的规模。
然而,让他没想到的是,随着DeepModeling社区的建立,这个社区呼唤着科学计算软件的发展,他居然又迎来了一个继续发展ABACUS的机会。
2021年,36岁的他,回首再看那个20岁的自己,当年的自己是踌躇满志也好,年少轻狂也罢,本以为都已过去,哪知还有能继续发展这个软件的一天。2021年的春节,他自己一个人仔细地把所有ABACUS中的代码又梳理了一遍,在Github上提交了一百多次commit,构思了在DeepModeling开源社区里ABACUS的未来。在写代码的时候,他脑海里经常回响起一句歌词:“我曾经跨过山和大海,也穿过人山人海。”多年后转身归来,往事已如烟,但那一行行代码的风格,复杂的程序框架,乃至代码注释的日期,依然是那么熟悉。
十五年来见过的人遇到的事,几件事情在他脑海里愈发清晰,在新硬件和机器学习快速发展的背景下,电子结构计算软件必将迎来变革,next-generation的电子结构软件也许就在不远的将来出现,希望到时候有来自中国的声音。另外,这个国家需要基础软件设施,一刻也不能等待,需要让更多的人更好的参与到科学软件的开发中来,next-generation的科学软件需要培养next-generation的人才。而以上的事情不是一个人一个科研小组可以就做好的,我们要尽可能的召唤和团结更多的同行,一起打造一个更好的科学软件生态。开源社区DeepModeling的建立则提供了这样一个可以看见的未来。
时间来到21年的9月,ABACUS开发者团队已接近二十人。回想起来,他说ABACUS加入DeepModeling社区是极其偶然的。抛开别的不说,如果当初博士期间没有坚持解决每一个bug,ABACUS程序可能就不会有人接手;如果不是何老师和任老师的努力,可能ABACUS项目也早已中断;如果没有那年圣诞节晚上的调试成功,自己在普林没做成什么像样的工作,也不一定还会继续走学术道路。如果不是那年开会偶然遇到张林峰。如果不是回国遇到一系列合作者,GB奖也可能没有发生。但是,这一切偏偏发生了,他和ABACUS都颤颤巍巍地从这15年里走过来了。当然,有没有可能再次发展不好、再次倒下?他说:“当然有可能,只是如果倒下了,那就找机会再爬起来接着走,我们希望ABACUS软件最终可以成为源自中国、开源开放的先进电子结构计算软件。”
如何加入
作为一款开源DFT软件,ABACUS欢迎任何对DFT软件的使用或开发感兴趣的朋友加入共同开发。
欢迎加入ABACUS用户支持群!如二维码过期,可在深度势能公众号回复关键词“ABACUS入群”获取最新二维码。
不管是反馈使用中遇到的困难还是提出对新功能的开发诉求我们都非常欢迎,可以在Github的ISSUE中向我们提出宝贵的建议,或者直接通过Pull Request提交代码。
ABACUS在DeepModeling社区中的Github仓库地址为:
https://github.com/deepmodeling/abacus-develop
相关阅读