RSTSR 第二次报告
RSTSR 第二次报告:对电子结构程序的理解与需求:NumPy+Rust 视角
1. 前言
电子结构程序的程序开发是为了解决或发现化学、物质结构的科学问题;但其技术挑战经常与化学本身无关。电子结构程序需要同时兼顾 1) 开发效率与降低沟通成本 2) 程序效率与资源控制;这些也是其他学科的科学计算、甚至一般程序开发任务所需要解决的问题。
Rust 语言在部分计算机或其应用的领域中,有比较好的使用反响。但对于科学计算,Rust 鲜有出彩的工作;对于 Rust 是否适合科学计算,相信现在也没有可以达成统一共识的认识。
先前的 showcase_rust_riccsd 工作,相信可以表明,对于以 MP、CC 为代表的电子结构所关心的问题,在合适的工具下,是可能达到比较好的开发效率和程序效率的平衡。为了表明这种可能性,我发展了 RSTSR 作为张量计算的程序工具。受制于眼界、能力、精力,这个工具未必是理想的;但我希望能借此工具,展示我对 Rust 科学计算程序的理解和期望,为满足电子结构的张量工具的开发提供一些思路。
本文档希望用简问简答的方式,展示我对电子结构程序开发和其所关心的程序问题的理解、以及对 Rust 语言的理解。本文档的后半部分会介绍 RSTSR 程序的开发思路。
一个好的程序工具,应该要能让用户一定程度地脱离繁琐的技术细节,而专注于用户自己的目标;这也是发展数学库工具的初衷。RSTSR 强烈地受 NumPy 的影响。我们有必要表明 NumPy 或者类似的数学库工具,是如何具体地在电子结构中使用的,它们的优劣在哪里,以及我们改进这些问题的思路。
本文档假设不考虑 GPU 异构或 MPI 规模并行。一些结论可能不适合这两类情形。
