PerfMPL国产高性能数学计算库的进展
前言
高性能数学计算库的现状
服务于处理器的基础数学计算库版本。Intel 的 MKL 数学计算库,只支持 x86,源代码不开源,并优先支持 Intel 处理器,同时在 x86 生态,MKL 库的使用也最为广泛,原因主要是发展早,以及 Intel 处理器在高性能计算领域的市场占有率极高有关。华为的 KML 数学计算库支持华为鲲鹏 ARM 处理器,不开源,按照 “鲲鹏应用使能套件 BoostKit 许可协议” 描述,仅面向签署该协议或者在鲲鹏硬件授权使用该软件包。澎峰科技的 PerfMPL 已经支持了多种主流指令集,如 RISC-V、x86、ARM、RISC-V 等指令集,并面向领域提供定向优化版本,商业版本不开源。还有 CUDA 这类的 GPU 并行数学计算库(cuBLAS、cuFFT 等),用于 NVIDA 的 GPU 卡编程,其他公司是否可以使用 CUDA 计算库,法律授权存疑。
服务于领域的数学计算软件。例如,世界知名的开源项目 OpenBLAS 提供 BLAS 运算能力;FFTW 实现快速傅里叶变换(Fast Fourier Transform);LAPACK(Linear Algebra Package)提供高级线性代数算法,如矩阵分解、特征值和特征向量计算等;VSIPL 主要用于向量、信号和图像处理库;PETSc 则提供更丰富一些的功能,如非线性求解、最优化、离散事件模拟和信号处理等。实际上,可以称之为数学计算库或者计算中间件的软件还有许多。
其他需要关注的差异性:
各种数学计算库软件存在开源、闭源的差异性。处理器公司自主开发的数学计算库通常是闭源,即使是可以使用,也随时面临版权拥有方授权协议的变化和制约。某些开源库协议商用不友好(例如 FFTW 是 GPL 协议,使用会导致产品所有代码被感染,将面临被迫开源)。
计算性能和计算精度问题,这两点在高性能计算领域尤其关注。所以,在使用开源软件作为商业服务的一部分时,需要重视。
支持的编程语言存在差异。OpenBLAS 除支持 C 和 C++ 以外,还支持 Fortran、Python、R、Julia、MATLAB、Java 等编程语言。
支持的操作系统存在差异。Intel MKL 支持 Windows、Linux、macOS;OpenBLAS 支持 Linux,macOS,Windows,BSD,Android/iOS;华为 KML 主要支持 Linux 相关操作系统。
高性能数学计算库的应用
利用 CPU 的加速指令集进行算法加速。
GPU 并行算法加速
大规模集群并行计算
模型建立:计算光刻涉及到光学、物理、化学等多个领域的知识,需要使用数学模型进行问题的数值求解。数学计算库可以提供各种数值计算算法和快速计算技术,如有限差分法、有限元法等,以建立可靠的计算模型。
仿真计算:数学计算库可以处理大量的数据和复杂的计算任务,可以在短时间内对整个光刻过程进行仿真计算,从而预测和优化光刻过程的各个环节。
优化设计:计算光刻涉及到的问题非常复杂,需要通过优化设计来提高制造效率和芯片质量。数学计算库可以提供各种优化算法,如遗传算法、粒子群算法等,以提高光刻制造的效率和芯片质量。
国产高性能数学计算库 PerfMPL
PerfMPL for 通用算力,主要面向 CPU 指令集。重点支持 x86、ARM 和 RISC-V 高性能通用处理器平台。
PerfMPL for 专用算力,主要面向 GPU、NPU、ASIC、FPGA 和各类 DSA。
性能驱动的优化模型构建技术
面向复杂体系结构的新型并行算法设计
基于模板的高性能汇编代码自动生成技术
场景和应用感知兼顾的性能自适应优化技术
结束语
往期推荐
X.Org已死,Wayland长存
微信扫码关注该文公众号作者