前言
數(shù)學(xué)計(jì)算庫是使能處理器在數(shù)值計(jì)算領(lǐng)域的基礎(chǔ)軟件庫,是工程計(jì)算、科學(xué)計(jì)算、AI 計(jì)算的基石。大部分物理、工程問題都能轉(zhuǎn)化成線性方程組求解問題,而高效的數(shù)學(xué)計(jì)算庫是發(fā)揮硬件算力的基石。 以 BLAS(Basic Linear Algebra Subprograms,基本線性代數(shù)運(yùn)算函數(shù)庫的標(biāo)準(zhǔn))為例。BLAS 最早是由美國能源部(Department of Energy)于 1979 年發(fā)布的。在此之前,每個(gè)應(yīng)用程序都需要手動實(shí)現(xiàn)線性代數(shù)算法,而這些算法又需要不同的數(shù)據(jù)結(jié)構(gòu)和運(yùn)算方式。 為了解決這個(gè)問題,美國能源部創(chuàng)建了 BLAS 標(biāo)準(zhǔn),通過為常見操作(如向量乘法、矩陣乘法、向量加法等)定義通用接口,使得用戶可以在不同的平臺和計(jì)算機(jī)架構(gòu)上重用相同的代碼。最初的 BLAS 標(biāo)準(zhǔn)包含 40 個(gè) Fortran 語言函數(shù),用于執(zhí)行常見的線性代數(shù)運(yùn)算。 隨著時(shí)間的推移,標(biāo)準(zhǔn)還進(jìn)行了更新和擴(kuò)充,增加了更多的函數(shù)和特性。BLAS 已經(jīng)成為一個(gè)廣泛使用的標(biāo)準(zhǔn),能夠提供高效的線性代數(shù)運(yùn)算,同時(shí)也是很多高性能庫的基礎(chǔ),如 OpenBLAS、MKL 等。 隨著計(jì)算機(jī)技術(shù)的發(fā)展和日益廣泛的應(yīng)用,數(shù)學(xué)計(jì)算庫也不斷演進(jìn),常用函數(shù)已經(jīng)達(dá)到一萬個(gè),版本多種多樣,也成為國際巨頭掌控軟件生態(tài)的關(guān)鍵手段。 Intel MKL 數(shù)學(xué)計(jì)算庫發(fā)展時(shí)間軸
高性能數(shù)學(xué)計(jì)算庫的現(xiàn)狀
數(shù)學(xué)計(jì)算庫主要包括線性代數(shù)庫、信號處理、向量數(shù)學(xué)庫、基本數(shù)學(xué)函數(shù)庫(Libm)、PDE 各種 Solver,其大致范圍參見 “附件 1”。 軟件版本也多種多樣,有專注于領(lǐng)域的數(shù)學(xué)計(jì)算軟件,也有服務(wù)于某類處理器的數(shù)學(xué)計(jì)算軟件,其他差異性還表現(xiàn)在以下幾個(gè)方面:
服務(wù)于處理器的基礎(chǔ)數(shù)學(xué)計(jì)算庫版本。Intel 的 MKL 數(shù)學(xué)計(jì)算庫,只支持 x86,源代碼不開源,并優(yōu)先支持 Intel 處理器,同時(shí)在 x86 生態(tài),MKL 庫的使用也最為廣泛,原因主要是發(fā)展早,以及 Intel 處理器在高性能計(jì)算領(lǐng)域的市場占有率極高有關(guān)。華為的 KML 數(shù)學(xué)計(jì)算庫支持華為鯤鵬 ARM 處理器,不開源,按照 “鯤鵬應(yīng)用使能套件 BoostKit 許可協(xié)議” 描述,僅面向簽署該協(xié)議或者在鯤鵬硬件授權(quán)使用該軟件包。澎峰科技的 PerfMPL 已經(jīng)支持了多種主流指令集,如 RISC-V、x86、ARM、RISC-V 等指令集,并面向領(lǐng)域提供定向優(yōu)化版本,商業(yè)版本不開源。還有 CUDA 這類的 GPU 并行數(shù)學(xué)計(jì)算庫(cuBLAS、cuFFT 等),用于 NVIDA 的 GPU 卡編程,其他公司是否可以使用 CUDA 計(jì)算庫,法律授權(quán)存疑。
服務(wù)于領(lǐng)域的數(shù)學(xué)計(jì)算軟件。例如,世界知名的開源項(xiàng)目 OpenBLAS 提供 BLAS 運(yùn)算能力;FFTW 實(shí)現(xiàn)快速傅里葉變換(Fast Fourier Transform);LAPACK(Linear Algebra Package)提供高級線性代數(shù)算法,如矩陣分解、特征值和特征向量計(jì)算等;VSIPL 主要用于向量、信號和圖像處理庫;PETSc 則提供更豐富一些的功能,如非線性求解、最優(yōu)化、離散事件模擬和信號處理等。實(shí)際上,可以稱之為數(shù)學(xué)計(jì)算庫或者計(jì)算中間件的軟件還有許多。
其他需要關(guān)注的差異性:
各種數(shù)學(xué)計(jì)算庫軟件存在開源、閉源的差異性。處理器公司自主開發(fā)的數(shù)學(xué)計(jì)算庫通常是閉源,即使是可以使用,也隨時(shí)面臨版權(quán)擁有方授權(quán)協(xié)議的變化和制約。某些開源庫協(xié)議商用不友好(例如 FFTW 是 GPL 協(xié)議,使用會導(dǎo)致產(chǎn)品所有代碼被感染,將面臨被迫開源)。
計(jì)算性能和計(jì)算精度問題,這兩點(diǎn)在高性能計(jì)算領(lǐng)域尤其關(guān)注。所以,在使用開源軟件作為商業(yè)服務(wù)的一部分時(shí),需要重視。
支持的編程語言存在差異。OpenBLAS 除支持 C 和 C++ 以外,還支持 Fortran、Python、R、Julia、MATLAB、Java 等編程語言。
支持的操作系統(tǒng)存在差異。Intel MKL 支持 Windows、Linux、macOS;OpenBLAS 支持 Linux,macOS,Windows,BSD,Android/iOS;華為 KML 主要支持 Linux 相關(guān)操作系統(tǒng)。
發(fā)達(dá)國家都將并行化的數(shù)學(xué)計(jì)算庫作為其基礎(chǔ)軟件的長期發(fā)展重點(diǎn)。例如:1993 年,受到高性能計(jì)算機(jī)系統(tǒng)上的并行計(jì)算需求的推動,PETSc(Portable, Extensible Toolkit for Scientific Computation)項(xiàng)目正式啟動,由美國加州大學(xué)圣巴巴拉分校計(jì)算科學(xué)研究所的數(shù)學(xué)和計(jì)算科學(xué)研究組(Mathematics and Computer Science group of the Institute for Computational Sciences)發(fā)起和開發(fā),目的是為了提供一套并行的數(shù)學(xué)軟件庫,用于高效地解決大規(guī)模科學(xué)計(jì)算的問題。 現(xiàn)在,PETSc 被廣泛地應(yīng)用于渦流,油藏模擬,光電學(xué),電磁學(xué),地震學(xué),心臟模擬,碰撞模擬,天文學(xué),機(jī)器學(xué)習(xí)等研究領(lǐng)域。 數(shù)學(xué)計(jì)算庫的研發(fā)與發(fā)展,對一個(gè)國家在芯片設(shè)計(jì)、算法開發(fā)和應(yīng)用場景多產(chǎn)生著非常積極的意義和重要的作用。 軟硬融合發(fā)展示意圖
高性能數(shù)學(xué)計(jì)算庫的應(yīng)用
高性能數(shù)學(xué)計(jì)算庫對 EDA、CAE、微電子工程等工程計(jì)算領(lǐng)域,發(fā)揮著重要的作用,支持并行計(jì)算和異構(gòu)計(jì)算的數(shù)學(xué)計(jì)算庫也是近年來的研究重點(diǎn),如:
利用 CPU 的加速指令集進(jìn)行算法加速。
GPU 并行算法加速
大規(guī)模集群并行計(jì)算
長期以來,國外為了控制我國高科技領(lǐng)域的發(fā)展,限制高性能的計(jì)算軟件向中國用戶提供。高性能數(shù)學(xué)計(jì)算庫推動著科學(xué)研究的進(jìn)步,也制約工程應(yīng)用的效率。以下以幾個(gè)典型的領(lǐng)域,介紹高性能數(shù)學(xué)計(jì)算庫對應(yīng)用的重要意義。 【CFD 軟件】線性代數(shù)庫:用于解方程組,如求解矩陣方程和求解特征值和特征向量。最優(yōu)化庫:用于優(yōu)化 CFD 模擬計(jì)算的效率和準(zhǔn)確度。數(shù)值積分庫:用于對數(shù)學(xué)函數(shù)進(jìn)行數(shù)值積分,如有限差分方法。隨機(jī)數(shù)生成庫:用于產(chǎn)生隨機(jī)數(shù),這在許多 CFD 應(yīng)用中是必要的。偏微分方程(PDE)求解庫:用于求解一些非線性 PDEs,如 Navier-Stokes 方程和熱傳遞方程等。 【CAE 軟件】建模和仿真:數(shù)學(xué)計(jì)算庫能夠提供各種模擬算法和數(shù)值方法,如有限元法、有限差分法等,用于建模和仿真機(jī)械、電氣、力學(xué)、熱力學(xué)等領(lǐng)域的物理現(xiàn)象。優(yōu)化設(shè)計(jì):數(shù)學(xué)計(jì)算庫提供各種優(yōu)化算法,如遺傳算法、模擬退火算法等,用于對 CAE 仿真模型進(jìn)行設(shè)計(jì)和優(yōu)化,以獲得更好的性能和效率。數(shù)據(jù)分析:數(shù)學(xué)計(jì)算庫提供各種數(shù)學(xué)函數(shù)和統(tǒng)計(jì)算法,用于分析和處理模擬數(shù)據(jù),以獲得有用的信息和洞見。機(jī)器學(xué)習(xí):數(shù)學(xué)計(jì)算庫中還提供了機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘的算法和工具,這些技術(shù)可以用于優(yōu)化 CAE 仿真模型、識別模擬數(shù)據(jù)中的模式和異常,從而幫助工程師更好地理解和改進(jìn)設(shè)計(jì)。 【微電子工程】計(jì)算光刻方法是一種通過計(jì)算機(jī)控制產(chǎn)生高分辨率圖案的加工工藝,使用光刻***將外源干涉光柵(如二極管激光器)的輸出通過透鏡等光學(xué)元件照射到硅晶圓表面上,然后進(jìn)行化學(xué)及物理反應(yīng)生成微電子芯片的微電路。數(shù)學(xué)計(jì)算庫發(fā)揮著重要的作用。
模型建立:計(jì)算光刻涉及到光學(xué)、物理、化學(xué)等多個(gè)領(lǐng)域的知識,需要使用數(shù)學(xué)模型進(jìn)行問題的數(shù)值求解。數(shù)學(xué)計(jì)算庫可以提供各種數(shù)值計(jì)算算法和快速計(jì)算技術(shù),如有限差分法、有限元法等,以建立可靠的計(jì)算模型。
仿真計(jì)算:數(shù)學(xué)計(jì)算庫可以處理大量的數(shù)據(jù)和復(fù)雜的計(jì)算任務(wù),可以在短時(shí)間內(nèi)對整個(gè)光刻過程進(jìn)行仿真計(jì)算,從而預(yù)測和優(yōu)化光刻過程的各個(gè)環(huán)節(jié)。
優(yōu)化設(shè)計(jì):計(jì)算光刻涉及到的問題非常復(fù)雜,需要通過優(yōu)化設(shè)計(jì)來提高制造效率和芯片質(zhì)量。數(shù)學(xué)計(jì)算庫可以提供各種優(yōu)化算法,如遺傳算法、粒子群算法等,以提高光刻制造的效率和芯片質(zhì)量。
【EDA 領(lǐng)域】在電路仿真中 Sparse LU Factorize(稀疏 LU 分解)占到仿真時(shí)間的 70%,小規(guī)模矩陣計(jì)算的優(yōu)化可以提升計(jì)算效率。 【AI 領(lǐng)域】以語音識別的 DNN 推理為例,推理過程調(diào)用 GEMM 占比 80% 以上。通過對 OpenBLAS 的 GEMM 部分優(yōu)化,發(fā)揮 SIMD、多核并發(fā),計(jì)算性能提高 26% 以上。
國產(chǎn)高性能數(shù)學(xué)計(jì)算庫 PerfMPL
張先軼(中科院博士)于 2011 年發(fā)起 OpenBLAS 開源項(xiàng)目,OpenBLAS 是一個(gè)優(yōu)化的 BLAS 庫(http://www.openblas.net),被廣泛應(yīng)用于科學(xué)計(jì)算、數(shù)據(jù)分析、深度學(xué)習(xí)算法、人工智能等領(lǐng)域,被 Caffe、MXNet、Julia、Ubuntu、Debian、openSUSE、GNU Octave 等知名項(xiàng)目集成;OpenBLAS 也被用作為各種處理器系統(tǒng)開發(fā)包的基礎(chǔ)軟件之一。 PerfMPL 是以 OpenBLAS 為發(fā)展基礎(chǔ),經(jīng)過多年發(fā)展逐步覆蓋至 FFT(快速傅立葉變換)、SPARSE (稀疏矩陣計(jì)算庫)、MATH(基礎(chǔ)數(shù)學(xué)庫)、VML(Vector Math Library 向量數(shù)學(xué)庫)、DNN(Deep Neural Networks 深度神經(jīng)網(wǎng)絡(luò))、PerfIPP(圖像處理等)等計(jì)算庫。 PerfMPL 基于澎峰科技擁有自主知識產(chǎn)權(quán)的統(tǒng)一數(shù)學(xué)函數(shù)庫技術(shù)積累,通過針對性優(yōu)化、完善、裁剪等方式,發(fā)展出兩大分支版本:
PerfMPL for 通用算力,主要面向 CPU 指令集。重點(diǎn)支持 x86、ARM 和 RISC-V 高性能通用處理器平臺。
PerfMPL for 專用算力,主要面向 GPU、NPU、ASIC、FPGA 和各類 DSA。
自主研發(fā)的源代碼,也使得澎峰科技可以為特定領(lǐng)域提供加速計(jì)算服務(wù)和領(lǐng)域數(shù)學(xué)計(jì)算庫,并重點(diǎn)支持國產(chǎn)的 CAE、EDA、信號處理、計(jì)算光刻等領(lǐng)域。 澎峰科技的軟件加速計(jì)算理論體系是:模型制導(dǎo)、算法支撐、優(yōu)化支持、性能為王,具體到 PerfMPL 而言: PerfMPL 主要優(yōu)化策略如下
性能驅(qū)動的優(yōu)化模型構(gòu)建技術(shù)
面向復(fù)雜體系結(jié)構(gòu)的新型并行算法設(shè)計(jì)
基于模板的高性能匯編代碼自動生成技術(shù)
場景和應(yīng)用感知兼顧的性能自適應(yīng)優(yōu)化技術(shù)
結(jié)束語
總的來說,高性能數(shù)學(xué)庫已經(jīng)經(jīng)歷了多個(gè)階段的發(fā)展和演變,并且隨著計(jì)算機(jī)硬件技術(shù)的不斷提升,數(shù)學(xué)庫的功能和效率也在不斷地提高。從最初的基礎(chǔ)數(shù)學(xué)函數(shù)庫到現(xiàn)在能夠進(jìn)行復(fù)雜科學(xué)計(jì)算的數(shù)值計(jì)算庫,高性能數(shù)學(xué)庫的發(fā)展為科學(xué)計(jì)算和工程應(yīng)用提供了強(qiáng)大的支持。 未來,我們可以期待更高效、更智能的數(shù)學(xué)庫的誕生,這將會為解決更為復(fù)雜的問題提供更好的工具和支持。此外,高性能數(shù)學(xué)庫的發(fā)展也在國家自主可控戰(zhàn)略方針中扮演著重要的角色。 在當(dāng)前全球科技創(chuàng)新競爭日益激烈的背景下,高性能數(shù)學(xué)庫的自主研發(fā)和掌握,對于保障國家信息安全、提高關(guān)鍵技術(shù)自主可控能力和推動經(jīng)濟(jì)發(fā)展具有十分重要的戰(zhàn)略意義。
-
處理器
+關(guān)注
關(guān)注
68文章
19336瀏覽量
230197 -
軟件
+關(guān)注
關(guān)注
69文章
4968瀏覽量
87682 -
數(shù)學(xué)函數(shù)
+關(guān)注
關(guān)注
0文章
9瀏覽量
6362
原文標(biāo)題:PerfMPL國產(chǎn)高性能數(shù)學(xué)計(jì)算庫的進(jìn)展
文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論