华为鲲鹏 920 上跑出超越同代主流硬件的性能:北大团队完成 ABACUS 原子算筹软件深度优化,优化 19 类材料核心算子
IT之家 11 月 1 日消息,密度泛函理论(Density Functional Theory,DFT)是研究半导体、金属等关键材料性质的主流第一性原理方法。ABACUS(原子算筹)是国内自主研发的密度泛函开源软件,由多家单位联合开发,国内外用户超过一千人,应用单位过百家。 华为计算昨晚发文,在北京大学鲲鹏昇腾科教创新卓越中心支持下, 北京大学力学与工程科学学院陈默涵研究员团队完成了 ABACUS 在鲲鹏 920 全系列平台上的适配 ,并把 19 类材料领域核心算子抽出来逐项优化。 据介绍,在和业界主流 CPU 相同的 28 核、28 进程 ×1 线程配置下,采用 SVE 指令集的版本在标准测试集上 快 1.3 至 3.9 倍 ;放到单节点满核、启用矩阵运算单元的配置, 最高快 10.7 倍 。相关代码已经推送到 GitHub 开源社区。 ▲ 10 种典型材料体系总计算耗时对比(同为 28 核、28 进程 ×1 线程,绿色为业界主流 x86,蓝色为鲲鹏 920 新型号) IT之家附技术内容如下: 要让 ABACUS 先跑起来,第一步是把编译链和数学库依赖打通。这里遇到的第一个问题比较隐蔽:鲲鹏 920 的几个型号支持的向量指令集并不一样,分别是 NEON、SVE 和 SVE512,还内置一个专门做矩阵运算的单元。如果沿用通用编译选项,程序只会走最基础的那条代码路径,这些硬件能力实际上一直闲着,测出来的只是没调过的“开箱”成绩。 团队因此给三款芯片各自适配了一条路径。其中两款用 gcc-openmpi-openblas,分别编译出 NEON 和 SVE 版本;第三款换成 clang-hmpi-kblas,编译 SVE512 和矩阵运算指令集版本。另一个改动是新增 USE_KML 编译选项,把鲲鹏数学库(KML)接进 ABACUS。接口层面也得跟着调:KFFT 和开源 fftw3、KScaLAPACK 和开源 ScaLAPACK 在函数签名与默认行为上不完全一致,团队改掉了 FFT 接口的 OMP 配置,也调整了 abstol 和 orfac 两个默认值,第三款芯片才算整体适配完成。 第一步得保证算得对。NEON、SVE 和矩阵运算三个版本的 ABACUS 都跑通了自带的平面波基组求解 Kohn-Sham DFT、线性组合原子轨道(LCAO)求解 Kohn-Sham DFT、随机波函数 DFT(sDFT)、深度学习泛函 DeePKS 等集成测试,数值结果与业界主流实现一致。性能测试用了 10 个典型材料体系(GaAs、C2H6O、MoS2、Pt (111)、BaTiO3、Na、Fe、H2O、Li27Ni9O54Mn9Co9、Si),体系规模覆盖 8 至 216 原子并采用周期性边界条件,双方都取 28 核、28 进程 ×1 线程。SVE 版本比业界主流 x86
说明:本站展示中文整理摘要,便于快速阅读;完整内容和版权归原站所有。