0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

高性能数学计算库的现状

OSC开源社区 来源:OSC开源社区 2023-05-19 11:49 次阅读

前言

数学计算库是使能处理器在数值计算领域的基础软件库,是工程计算、科学计算、AI 计算的基石。大部分物理、工程问题都能转化成线性方程组求解问题,而高效的数学计算库是发挥硬件算力的基石。 1367df42-f59c-11ed-90ce-dac502259ad0.png 以 BLAS(Basic Linear Algebra Subprograms,基本线性代数运算函数库的标准)为例。BLAS 最早是由美国能源部(Department of Energy)于 1979 年发布的。在此之前,每个应用程序都需要手动实现线性代数算法,而这些算法又需要不同的数据结构和运算方式。 为了解决这个问题,美国能源部创建了 BLAS 标准,通过为常见操作(如向量乘法、矩阵乘法、向量加法等)定义通用接口,使得用户可以在不同的平台和计算机架构上重用相同的代码。最初的 BLAS 标准包含 40 个 Fortran 语言函数,用于执行常见的线性代数运算。 随着时间的推移,标准还进行了更新和扩充,增加了更多的函数和特性。BLAS 已经成为一个广泛使用的标准,能够提供高效的线性代数运算,同时也是很多高性能库的基础,如 OpenBLAS、MKL 等。 随着计算机技术的发展和日益广泛的应用,数学计算库也不断演进,常用函数已经达到一万个,版本多种多样,也成为国际巨头掌控软件生态的关键手段。 137f5992-f59c-11ed-90ce-dac502259ad0.png Intel MKL 数学计算库发展时间轴

高性能数学计算库的现状

数学计算库主要包括线性代数库、信号处理、向量数学库、基本数学函数库(Libm)、PDE 各种 Solver,其大致范围参见 “附件 1”。 软件版本也多种多样,有专注于领域的数学计算软件,也有服务于某类处理器的数学计算软件,其他差异性还表现在以下几个方面:

服务于处理器的基础数学计算库版本。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、MATLABJava 等编程语言。

支持的操作系统存在差异。Intel MKL 支持 Windows、Linux、macOS;OpenBLAS 支持 Linux,macOS,Windows,BSDAndroid/iOS;华为 KML 主要支持 Linux 相关操作系统。

发达国家都将并行化的数学计算库作为其基础软件的长期发展重点。例如:1993 年,受到高性能计算机系统上的并行计算需求的推动,PETSc(Portable, Extensible Toolkit for Scientific Computation)项目正式启动,由美国加州大学圣巴巴拉分校计算科学研究所的数学和计算科学研究组(Mathematics and Computer Science group of the Institute for Computational Sciences)发起和开发,目的是为了提供一套并行的数学软件库,用于高效地解决大规模科学计算的问题。 现在,PETSc 被广泛地应用于涡流,油藏模拟,光电学,电磁学,地震学,心脏模拟,碰撞模拟,天文学,机器学习等研究领域。 数学计算库的研发与发展,对一个国家在芯片设计、算法开发和应用场景多产生着非常积极的意义和重要的作用。 139bdb6c-f59c-11ed-90ce-dac502259ad0.png 软硬融合发展示意图

高性能数学计算库的应用

高性能数学计算库对 EDA、CAE、微电子工程等工程计算领域,发挥着重要的作用,支持并行计算和异构计算的数学计算库也是近年来的研究重点,如:

利用 CPU 的加速指令集进行算法加速。

GPU 并行算法加速

大规模集群并行计算

长期以来,国外为了控制我国高科技领域的发展,限制高性能的计算软件向中国用户提供。高性能数学计算库推动着科学研究的进步,也制约工程应用的效率。以下以几个典型的领域,介绍高性能数学计算库对应用的重要意义。 【CFD 软件】线性代数库:用于解方程组,如求解矩阵方程和求解特征值和特征向量。最优化库:用于优化 CFD 模拟计算的效率和准确度。数值积分库:用于对数学函数进行数值积分,如有限差分方法。随机数生成库:用于产生随机数,这在许多 CFD 应用中是必要的。偏微分方程(PDE)求解库:用于求解一些非线性 PDEs,如 Navier-Stokes 方程和热传递方程等。 【CAE 软件】建模和仿真:数学计算库能够提供各种模拟算法和数值方法,如有限元法、有限差分法等,用于建模和仿真机械、电气、力学、热力学等领域的物理现象。优化设计:数学计算库提供各种优化算法,如遗传算法、模拟退火算法等,用于对 CAE 仿真模型进行设计和优化,以获得更好的性能和效率。数据分析:数学计算库提供各种数学函数和统计算法,用于分析和处理模拟数据,以获得有用的信息和洞见。机器学习:数学计算库中还提供了机器学习和数据挖掘的算法和工具,这些技术可以用于优化 CAE 仿真模型、识别模拟数据中的模式和异常,从而帮助工程师更好地理解和改进设计。 【微电子工程】计算光刻方法是一种通过计算机控制产生高分辨率图案的加工工艺,使用光刻***将外源干涉光栅(如二极管激光器)的输出通过透镜等光学元件照射到硅晶圆表面上,然后进行化学及物理反应生成微电子芯片的微电路。数学计算库发挥着重要的作用。

模型建立:计算光刻涉及到光学、物理、化学等多个领域的知识,需要使用数学模型进行问题的数值求解。数学计算库可以提供各种数值计算算法和快速计算技术,如有限差分法、有限元法等,以建立可靠的计算模型。

仿真计算:数学计算库可以处理大量的数据和复杂的计算任务,可以在短时间内对整个光刻过程进行仿真计算,从而预测和优化光刻过程的各个环节。

优化设计:计算光刻涉及到的问题非常复杂,需要通过优化设计来提高制造效率和芯片质量。数学计算库可以提供各种优化算法,如遗传算法、粒子群算法等,以提高光刻制造的效率和芯片质量。

【EDA 领域】在电路仿真中 Sparse LU Factorize(稀疏 LU 分解)占到仿真时间的 70%,小规模矩阵计算的优化可以提升计算效率。 13acd1b0-f59c-11ed-90ce-dac502259ad0.png 【AI 领域】以语音识别的 DNN 推理为例,推理过程调用 GEMM 占比 80% 以上。通过对 OpenBLAS 的 GEMM 部分优化,发挥 SIMD、多核并发,计算性能提高 26% 以上。 13c82b40-f59c-11ed-90ce-dac502259ad0.png

国产高性能数学计算库 PerfMPL

张先轶(中科院博士)于 2011 年发起 OpenBLAS 开源项目,OpenBLAS 是一个优化的 BLAS 库(http://www.openblas.net),被广泛应用于科学计算、数据分析、深度学习算法、人工智能等领域,被 Caffe、MXNet、Julia、Ubuntu、Debian、openSUSE、GNU Octave 等知名项目集成;OpenBLAS 也被用作为各种处理器系统开发包的基础软件之一。 PerfMPL 是以 OpenBLAS 为发展基础,经过多年发展逐步覆盖至 FFT(快速傅立叶变换)、SPARSE (稀疏矩阵计算库)、MATH(基础数学库)、VML(Vector Math Library 向量数学库)、DNN(Deep Neural Networks 深度神经网络)、PerfIPP(图像处理等)等计算库。 14101d7e-f59c-11ed-90ce-dac502259ad0.png PerfMPL 基于澎峰科技拥有自主知识产权的统一数学函数库技术积累,通过针对性优化、完善、裁剪等方式,发展出两大分支版本:

PerfMPL for 通用算力,主要面向 CPU 指令集。重点支持 x86、ARM 和 RISC-V 高性能通用处理器平台。

PerfMPL for 专用算力,主要面向 GPU、NPU、ASICFPGA 和各类 DSA。

自主研发的源代码,也使得澎峰科技可以为特定领域提供加速计算服务和领域数学计算库,并重点支持国产的 CAE、EDA、信号处理、计算光刻等领域。 澎峰科技的软件加速计算理论体系是:模型制导、算法支撑、优化支持、性能为王,具体到 PerfMPL 而言: PerfMPL 主要优化策略如下

性能驱动的优化模型构建技术

面向复杂体系结构的新型并行算法设计

基于模板的高性能汇编代码自动生成技术

场景和应用感知兼顾的性能自适应优化技术

结束语

总的来说,高性能数学库已经经历了多个阶段的发展和演变,并且随着计算机硬件技术的不断提升,数学库的功能和效率也在不断地提高。从最初的基础数学函数库到现在能够进行复杂科学计算的数值计算库,高性能数学库的发展为科学计算和工程应用提供了强大的支持。 未来,我们可以期待更高效、更智能的数学库的诞生,这将会为解决更为复杂的问题提供更好的工具和支持。此外,高性能数学库的发展也在国家自主可控战略方针中扮演着重要的角色。 在当前全球科技创新竞争日益激烈的背景下,高性能数学库的自主研发和掌握,对于保障国家信息安全、提高关键技术自主可控能力和推动经济发展具有十分重要的战略意义。

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    19155

    浏览量

    229040
  • 软件
    +关注

    关注

    69

    文章

    4762

    浏览量

    87144
  • 数学函数
    +关注

    关注

    0

    文章

    9

    浏览量

    6331

原文标题:PerfMPL国产高性能数学计算库的进展

文章出处:【微信号:OSC开源社区,微信公众号:OSC开源社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Python高性能计算—Numba

    本文介绍一个新的Python——Numba,在计算性能方面,它表现的更加友好。1. Numba是什么?Numba是一个,可以在运行时将Python代码编译为本地机器指令,而不会强制
    发表于 03-14 15:24

    高性能计算机的发展历史是怎样的?

    高性能计算机的发展史高性能计算机的内容高性能计算机的应用高性能计算机的现状高性能计算机的应用领
    发表于 09-10 10:42

    HPC高性能计算知识介绍

    HPC高性能计算知识 异构并行计算
    发表于 05-29 17:45

    高性能计算软件具有哪些缺陷?

    谈到高性能计算,很多人都会想到那些每秒可以运行百万亿次、千万亿次计算的超级计算机,如最近炒得很火爆的“天河一号”、“曙光6000“等,但很少有人会想到上面跑的软件。其实,硬件只是基础,
    发表于 08-30 06:35

    AutoKernel高性能算子自动优化工具

    1. 简介随着人工智能的普及,深度学习网络的不断涌现,为了让各硬件(CPU, GPU, NPU,…)能够支持深度学习应用,各硬件芯片需要软件去支持高性能的深度学习张量运算。目前,这些高性能
    发表于 12-14 06:18

    如何使用Keil M4 DSP图书馆的基本数学功能帮助用户获得DSP高性能优势

    DSP 高性能优势 。 BSP 版本: M480系列 BSP CMSIS v3.03.000 硬件: NuMaker-ETM-M487 v1.1 用户使用 Keil M4 DSP 的所有功能来实施
    发表于 08-22 06:53

    ARM性能入门(单机版)

    ARM性能为ARM处理器上的高性能计算应用程序提供优化的标准核心数学。 可通过Fortran
    发表于 08-25 06:36

    什么是高性能计算

    什么是高性能计算 高性能计算(HighPerformanceComputing)是计算机科学的一个分支,主要是指从体系结构、并行算法和软件
    发表于 05-24 23:29 4551次阅读

    高性能计算机研究的现状与展望

    高性能计算机的研制受永无止境的探求复杂的物理世界与人类社会本身的应用计算需求的驱动及研制者所处环境及当时的可选择的实现使能技术的影响。
    发表于 11-03 22:21 24次下载

    高性能计算发展与应用

    高性能计算发展与应用,感兴趣的可以看看。
    发表于 03-24 17:12 0次下载

    计算高性能计算的区别及联系

    近年来,随着人工智能、AI智药等科技领域的火热,以及阿里云、腾讯云、华为云等互联网大厂在各种场景下的成功应用。高性能计算、云计算这类科技领域的词汇也也逐渐进入人们的日常生活。那么,什么是云计算
    发表于 06-26 14:30 3399次阅读

    什么是HPC(高性能计算)?

    高性能计算 (High Performance Computing,又叫HPC、超级计算) 是指比传统计算机和服务器提供更高马力聚合计算能力
    的头像 发表于 11-01 11:47 2.8w次阅读

    SymPy: 符号计算是什么

    SymPy 是一个用 Python 编写的符号计算,它可以用来进行符号计算,包括初等数学和高等数学,甚至研究生
    的头像 发表于 03-03 14:31 1468次阅读
    SymPy: 符号<b class='flag-5'>计算</b><b class='flag-5'>库</b>是什么

    高性能计算集群的能耗优化

    高性能计算(HighPerformanceComputing,HPC)是指利用大规模并行计算机集群来解决复杂的科学和工程问题的技术。高性能计算
    的头像 发表于 05-25 08:27 374次阅读
    <b class='flag-5'>高性能</b><b class='flag-5'>计算</b>集群的能耗优化

    AI高性能计算平台是什么

    AI高性能计算平台不仅是AI技术发展的基石,更是推动AI应用落地、加速产业升级的重要工具。以下,是对AI高性能计算平台的介绍,由AI部落小编为您整理分享。
    的头像 发表于 11-11 09:56 115次阅读