前言
數學計算庫是使能處理器在數值計算領域的基礎軟件庫,是工程計算、科學計算、AI 計算的基石。大部分物理、工程問題都能轉化成線性方程組求解問題,而高效的數學計算庫是發揮硬件算力的基石。 以 BLAS(Basic Linear Algebra Subprograms,基本線性代數運算函數庫的標準)為例。BLAS 最早是由美國能源部(Department of Energy)于 1979 年發布的。在此之前,每個應用程序都需要手動實現線性代數算法,而這些算法又需要不同的數據結構和運算方式。 為了解決這個問題,美國能源部創建了 BLAS 標準,通過為常見操作(如向量乘法、矩陣乘法、向量加法等)定義通用接口,使得用戶可以在不同的平臺和計算機架構上重用相同的代碼。最初的 BLAS 標準包含 40 個 Fortran 語言函數,用于執行常見的線性代數運算。 隨著時間的推移,標準還進行了更新和擴充,增加了更多的函數和特性。BLAS 已經成為一個廣泛使用的標準,能夠提供高效的線性代數運算,同時也是很多高性能庫的基礎,如 OpenBLAS、MKL 等。 隨著計算機技術的發展和日益廣泛的應用,數學計算庫也不斷演進,常用函數已經達到一萬個,版本多種多樣,也成為國際巨頭掌控軟件生態的關鍵手段。
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、MATLAB、Java 等編程語言。
支持的操作系統存在差異。Intel MKL 支持 Windows、Linux、macOS;OpenBLAS 支持 Linux,macOS,Windows,BSD,Android/iOS;華為 KML 主要支持 Linux 相關操作系統。
發達國家都將并行化的數學計算庫作為其基礎軟件的長期發展重點。例如:1993 年,受到高性能計算機系統上的并行計算需求的推動,PETSc(Portable, Extensible Toolkit for Scientific Computation)項目正式啟動,由美國加州大學圣巴巴拉分校計算科學研究所的數學和計算科學研究組(Mathematics and Computer Science group of the Institute for Computational Sciences)發起和開發,目的是為了提供一套并行的數學軟件庫,用于高效地解決大規??茖W計算的問題。 現在,PETSc 被廣泛地應用于渦流,油藏模擬,光電學,電磁學,地震學,心臟模擬,碰撞模擬,天文學,機器學習等研究領域。 數學計算庫的研發與發展,對一個國家在芯片設計、算法開發和應用場景多產生著非常積極的意義和重要的作用。 軟硬融合發展示意圖
高性能數學計算庫的應用
高性能數學計算庫對 EDA、CAE、微電子工程等工程計算領域,發揮著重要的作用,支持并行計算和異構計算的數學計算庫也是近年來的研究重點,如:
利用 CPU 的加速指令集進行算法加速。
GPU 并行算法加速
大規模集群并行計算
長期以來,國外為了控制我國高科技領域的發展,限制高性能的計算軟件向中國用戶提供。高性能數學計算庫推動著科學研究的進步,也制約工程應用的效率。以下以幾個典型的領域,介紹高性能數學計算庫對應用的重要意義。 【CFD 軟件】線性代數庫:用于解方程組,如求解矩陣方程和求解特征值和特征向量。最優化庫:用于優化 CFD 模擬計算的效率和準確度。數值積分庫:用于對數學函數進行數值積分,如有限差分方法。隨機數生成庫:用于產生隨機數,這在許多 CFD 應用中是必要的。偏微分方程(PDE)求解庫:用于求解一些非線性 PDEs,如 Navier-Stokes 方程和熱傳遞方程等。 【CAE 軟件】建模和仿真:數學計算庫能夠提供各種模擬算法和數值方法,如有限元法、有限差分法等,用于建模和仿真機械、電氣、力學、熱力學等領域的物理現象。優化設計:數學計算庫提供各種優化算法,如遺傳算法、模擬退火算法等,用于對 CAE 仿真模型進行設計和優化,以獲得更好的性能和效率。數據分析:數學計算庫提供各種數學函數和統計算法,用于分析和處理模擬數據,以獲得有用的信息和洞見。機器學習:數學計算庫中還提供了機器學習和數據挖掘的算法和工具,這些技術可以用于優化 CAE 仿真模型、識別模擬數據中的模式和異常,從而幫助工程師更好地理解和改進設計。 【微電子工程】計算光刻方法是一種通過計算機控制產生高分辨率圖案的加工工藝,使用光刻***將外源干涉光柵(如二極管激光器)的輸出通過透鏡等光學元件照射到硅晶圓表面上,然后進行化學及物理反應生成微電子芯片的微電路。數學計算庫發揮著重要的作用。
模型建立:計算光刻涉及到光學、物理、化學等多個領域的知識,需要使用數學模型進行問題的數值求解。數學計算庫可以提供各種數值計算算法和快速計算技術,如有限差分法、有限元法等,以建立可靠的計算模型。
仿真計算:數學計算庫可以處理大量的數據和復雜的計算任務,可以在短時間內對整個光刻過程進行仿真計算,從而預測和優化光刻過程的各個環節。
優化設計:計算光刻涉及到的問題非常復雜,需要通過優化設計來提高制造效率和芯片質量。數學計算庫可以提供各種優化算法,如遺傳算法、粒子群算法等,以提高光刻制造的效率和芯片質量。
【EDA 領域】在電路仿真中 Sparse LU Factorize(稀疏 LU 分解)占到仿真時間的 70%,小規模矩陣計算的優化可以提升計算效率。 【AI 領域】以語音識別的 DNN 推理為例,推理過程調用 GEMM 占比 80% 以上。通過對 OpenBLAS 的 GEMM 部分優化,發揮 SIMD、多核并發,計算性能提高 26% 以上。
國產高性能數學計算庫 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(圖像處理等)等計算庫。 PerfMPL 基于澎峰科技擁有自主知識產權的統一數學函數庫技術積累,通過針對性優化、完善、裁剪等方式,發展出兩大分支版本:
PerfMPL for 通用算力,主要面向 CPU 指令集。重點支持 x86、ARM 和 RISC-V 高性能通用處理器平臺。
PerfMPL for 專用算力,主要面向 GPU、NPU、ASIC、FPGA 和各類 DSA。
自主研發的源代碼,也使得澎峰科技可以為特定領域提供加速計算服務和領域數學計算庫,并重點支持國產的 CAE、EDA、信號處理、計算光刻等領域。 澎峰科技的軟件加速計算理論體系是:模型制導、算法支撐、優化支持、性能為王,具體到 PerfMPL 而言: PerfMPL 主要優化策略如下
性能驅動的優化模型構建技術
面向復雜體系結構的新型并行算法設計
基于模板的高性能匯編代碼自動生成技術
場景和應用感知兼顧的性能自適應優化技術
結束語
總的來說,高性能數學庫已經經歷了多個階段的發展和演變,并且隨著計算機硬件技術的不斷提升,數學庫的功能和效率也在不斷地提高。從最初的基礎數學函數庫到現在能夠進行復雜科學計算的數值計算庫,高性能數學庫的發展為科學計算和工程應用提供了強大的支持。 未來,我們可以期待更高效、更智能的數學庫的誕生,這將會為解決更為復雜的問題提供更好的工具和支持。此外,高性能數學庫的發展也在國家自主可控戰略方針中扮演著重要的角色。 在當前全球科技創新競爭日益激烈的背景下,高性能數學庫的自主研發和掌握,對于保障國家信息安全、提高關鍵技術自主可控能力和推動經濟發展具有十分重要的戰略意義。
-
處理器
+關注
關注
68文章
19436瀏覽量
231306 -
軟件
+關注
關注
69文章
5027瀏覽量
88133 -
數學函數
+關注
關注
0文章
9瀏覽量
6371
原文標題:PerfMPL國產高性能數學計算庫的進展
文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論