作者:Arm 工程部主任软件工程师 Nick Dingle
Arm Performance Libraries(Arm 性能库)为运行在 64 位 Arm 架构 (AArch64) 处理器上的数值计算应用提供经过优化的标准核心数学库。该库包含对稀疏与稠密线性代数函数的优化实现,涵盖 BLAS 和 LAPACK、快速傅里叶变换 (FFT) 以及随机数生成 (RNG) 函数。这些实现均基于 OpenMP 并行机制构建,可在多处理器环境中充分释放性能。此外,Arm Performance Libraries 还通过 libamath 库提供高性能的标量和向量 math.h 例程。
Arm Performance Libraries 26.01 新增了稀疏三角求解功能,扩展了 RNG 分布类型,在 libamath 中新增可复现的数学计算选项,同时全面提升 BLAS、LAPACK 及稀疏计算例程的运行性能。如需查看完整更新内容(含 LAPACK 3.12.1 支持详情),请查阅完整发布说明。
发布说明:https://developer.arm.com/documentation/109681/latest
你可以通过包管理器安装,或下载相应的安装程序,开始使用 Arm Performance Libraries 26.01。
包管理器:https://learn.arm.com/install-guides/armpl
安装程序:
https://developer.arm.com/Tools%20and%20Software/Arm%20Performance%20Libraries#Downloads
矩阵乘法性能提升
在搭载 M 系列芯片的 macOS 设备上,通过采用 SME 指令替代 Neon 指令,显著提升了单精度和双精度实数矩阵乘法的性能(例如 BLAS SGEMM 和 DGEMM 调用)。下方图表对比了 Arm Performance Libraries 26.01 与 25.07 版本在不同方阵尺寸下的 DGEMM 性能表现。结果显示,速度提升最高可达七倍。

用于超节点矩阵的稀疏三角求解
Arm Performance Libraries 26.01 新增了对采用超节点矩阵格式的稀疏三角系统求解的支持,推出了全新、完全并行化的 armpl_spsv_exec_* 系列函数。同时,我们还提供了新的 C 函数,用于创建超节点矩阵 (armpl_spmat_create_supernodal_*)。有关超节点格式的说明以及这些新例程的完整文档,可参见在线参考指南。还可查看 Arm Performance Libraries 26.01 随附的示例程序,进一步了解如何在上三角和下三角输入矩阵的场景下使用这些函数。
参考指南:
https://developer.arm.com/documentation/101004/2601/Sparse-Linear-Algebra
下图展示了四种问题规模、不同线程配置下,Arm Performance Libraries 26.01 中 armpl_spsv_exec_d 相较于 25.07 版本的性能提升幅度。每个问题都是在 LDLᵀ 分解过程中求解的一个方阵系统,其中矩阵维度 n 等于 Grid 的平方(例如,Grid 为 1024 时,对应 n = 1024²)。

该类矩阵均具备典型超节点结构。Arm Performance Libraries 26.01 采用全新超节点接口 armpl_spmat_create_supernodal_d 初始化稀疏矩阵,替代 25.07 版本的 CSC 稀疏矩阵构建接口 armpl_spmat_create_csc_d。超节点格式可实现扩展性更强的多线程三角求解运算,性能最高提升七倍。目前,Arm 系统上的 Panua-Pardiso 已采用该全新超节点稀疏矩阵格式,来加速大规模稀疏线性方程组求解。
随机数生成功能扩展
Arm Performance Libraries 26.01新增多项分布整数随机变量生成接口 viRngMultinomial;新增伽马分布随机数接口,分别通过 vsRngGamma、vdRngGamma 实现单精度、双精度数值生成。泊松分布计算接口 viRngPoisson 新增 POISNORM 算法支持,可通过反演法或基于正态分布数值换算两种方式求解泊松分布。这些新增功能的源代码可在 Arm GitLab 上的 OpenRNG 26.01 中获取。
Arm GitLab: https://gitlab.arm.com/libraries/openrng
可复现的 libamath
Arm Performance Libraries 26.01 新增了仅适用于 Linux 平台的可复现版 libamath,可一定程度直接替换默认 3.5 ULP 精度标准库。对于已适配函数,该版本可确保标量运算与 Neon、SVE 向量化运算输出结果完全一致,适用于要求在不同向量化路径下具有确定性数值计算需求的应用。需注意:并非全部 libamath 函数都提供可复现版本,且该库不提供 GNU ABI 标准符号,详见在线参考指南。
参考指南:https://developer.arm.com/documentation/101004/2601/Arm-Performance-Libraries-Math-Functions
Arm Performance Libraries 26.01 最新版本现已正式发布。如有疑问或建议,欢迎前往论坛留言反馈。
全部0条评论
快来发表一下你的评论吧 !