论文标题
CECAM电子结构库和模块化软件开发范式
The CECAM Electronic Structure Library and the modular software development paradigm
论文作者
论文摘要
由于可用的许多成功的软件包,第一原理电子结构计算被广泛使用。它们的传统编码范式是单片的,即,无论其内部结构的模块化程度如何,该代码都是独立于其他编译器的独立于编译器的构建的,除了线性 - 代数和通讯库外。数十年来,该模型一直很成功。但是,方法论的快速进步导致这些程序的复杂性越来越不断提高,这意味着编码以及适应不断发展的硬件体系结构所需的经常性重新设计。电子结构文库(\ ESL)是由CECAM(欧洲原子和分子计算中心)启动的,以催化范式从单片模型转移并促进模块化,并雄心勃勃地从电子结构程序中提取共同的任务,并将其重新设计为自由开放式库库。它们包括具有高度并行化的“重型”,并有可能适应其中的新型硬件,从而将性能优化和重新设计的复杂计算机科学方面与科学家实施新想法所做的计算科学相距。这是一项社区努力,由各种成功代码的开发人员进行,现在面临着新模型中产生的挑战。这种模块化范式将提高整体编码效率,并使专家(计算机科学家或计算科学家)能够更有效地使用其技能。这将导致软件的更可持续和动态的演变,以及新开发人员的入境障碍。
First-principles electronic structure calculations are very widely used thanks to the many successful software packages available. Their traditional coding paradigm is monolithic, i.e., regardless of how modular its internal structure may be, the code is built independently from others, from the compiler up, with the exception of linear-algebra and message-passing libraries. This model has been quite successful for decades. The rapid progress in methodology, however, has resulted in an ever increasing complexity of those programs, which implies a growing amount of replication in coding and in the recurrent re-engineering needed to adapt to evolving hardware architecture. The Electronic Structure Library (\esl) was initiated by CECAM (European Centre for Atomic and Molecular Calculations) to catalyze a paradigm shift away from the monolithic model and promote modularization, with the ambition to extract common tasks from electronic structure programs and redesign them as free, open-source libraries. They include "heavy-duty" ones with a high degree of parallelisation, and potential for adaptation to novel hardware within them, thereby separating the sophisticated computer science aspects of performance optimization and re-engineering from the computational science done by scientists when implementing new ideas. It is a community effort, undertaken by developers of various successful codes, now facing the challenges arising in the new model. This modular paradigm will improve overall coding efficiency and enable specialists (computer scientists or computational scientists) to use their skills more effectively. It will lead to a more sustainable and dynamic evolution of software as well as lower barriers to entry for new developers.