国产密度泛函软件ABACUS完成鲲鹏920全指令集适配, 在10种材料体系测试中, 矩阵运算版的最高提速达到10.7倍, 并且超过了同配置的x86。对于长期受算力瓶颈制约的材料模拟团队来说, 计算周期和硬件成本有望同时下降。

01.软件背景与用户规模

ABACUS适配鲲鹏920,国产DFT软件性能大幅优化(图1)

ABACUS(原子算筹)是由国内多家单位联合开发的软件程序, 它是一个基于密度泛函理论的开源第一性原理计算工具, 主要就是用来研究半导体、金属等关键性质的材料。截止到当前阶段, 国内和国际上的注册用户数量已经超过一千人, 而实际应用的单位也达到了过百家的规模。

IT之家在十一月一日获得消息, 这个团队已经把鲲鹏920的三种不同型号的完整编译和适配工作都做完了。这三种型号分别覆盖了NEON、SVE、SVE512这几种向量指令集。另外还有一款型号, 是内置了矩阵运算单元的型号。

02.编译链打通的三个坑

在适配过程中, 有一个容易被忽视的难点是同一系列的芯片其指令集并不完全一致。如果直接沿用通用的编译选项来运行程序, 代码只会执行最基础的路径, 这时候向量和矩阵加速的能力根本没办法发挥出来。所以, 这样测出来的成绩, 实际上只是软件没有进行优化调整时的开箱即用水平。

团队按照顺序, 分别为三款不同的芯片配置了使用clang-hmpi-kblas这种编译链的方式。通过新增一个叫做USE_KML的编译选项, 把鲲鹏数学库里的KML部分接入到ABACUS这个程序里面。这样做之后, 能够使程序正确地调用对应型号所具备的硬件加速能力。

03.接口层面的细节调整

KFFT跟开源的那款被称为fftw3的东西, 还有那个KScaLAPACK跟ScaLAPACK, 它们在函数的签名以及默认的这种行为方面, 确实存在着一些差别, 团队对FFT这个接口里面关于OMP线程的配置进行了修改动作, 同时把名为abstol的这个数值和名为orfac的那个数值所对应的默认值也都作出了调整, 直到把这些工作做完之后, 第三款芯片才可以完成整体的适配过程。

在适配工作完成以后, 这三个版本都通过了集成测试, 这些测试包括用平面波DFT进行的测试、用LCAO-DFT进行的测试、用随机波函数DFT进行的测试, 以及用深度学习泛函DeePKS进行的测试, 数值结果和业界主流的实现在数值方面保持一致。

04.十种材料实测性能

在此次测试之中, 我们一共选取了十种不同的体系来展开工作, 这些体系分别涵盖了GaAs、C2H6O、MoS2、Pt(111)、BaTiO3、Na、Fe、H2O、Li27Ni9O54Mn9Co9以及Si等化学组成。

关于体系的具体规模方面, 其包含的原子数量分布在8到216个之间。在计算设置方面, 所有情形均采用了周期性边界条件这一处理方式。此外, 参与双方对于计算资源配置达成了统一意见, 最终选定使用28核与28进程的硬件环境来进行操作。

SVE版本的标准测试集, 计算速度会加快1.3到3.9倍。当单个节点启用全部核心, 并且启动矩阵运算单元后, 最高速度能提升达到10.7倍之多。在涉及随机轨道的DFT算例里, 使用了矩阵运算的版本, 其运行速度快了6.1到20.1倍, 这种性能上的差距表现得格外突出明显。

05.算法层重写与自动优化

团队把十九种高频核心算子一个一个地进行了重写, 拉盖尔多项式从递归方法改成了迭代方法, 在调用一百万次的时候速度大约变得快了八倍, 多项式插值使用了二分查找的方法, 当有一百项表存在的时候比较次数会从大约两百次降低到了九次, 三角函数还有循环不变量这些也做了简化操作。

借助DevKit一站式开发套件, 可以自动识别瓶颈并生成优化代码, 在8原子温稠密碳sDFT算例中实现了2.28倍的速度提升, 在512个Si原子的LCAO算例中实现了2.66倍的速度提升, 所有算子的数值结果都经过了复核, 确认无误。

算力的门槛现在又往下降了一个档位, 你最想要重新进行计算分析的那个已经搁置了很长时间的材料体系是哪一个呢, 欢迎您通过在留言区发表观点的方式来进行交流,如果觉得这个内容对您有实际的价值, 请您顺手点击一个赞并把这篇文章分享出去。