華為北冥多樣性計算融合架構基礎軟體使能助力開發者乘風破浪

近年來,人工智慧、雲計算等新興技術應用非常迅速。伴隨著摩爾定律正處在失速的當下,通用算力已經難以滿足行業客戶的新興計算需求。在這一背景下,對於開發者而言如何將自己的程式設計專案快速部署在不同架構的算力基礎設施上,成為了一個讓人頭疼的問題。

具體而言,可以總結為以下三點:第一,多樣性算力的開發,往往需要使用多種程式語言和工具,開發生態碎片化;第二,同一應用在不同架構的處理器上部署,程式碼難以重用,帶來較高的開發成本;第三,多種算力間缺乏協同最佳化手段,無法充分發揮系統的整體效能。

北冥多樣性計算融合架構橫空出世

為了幫助開發者應對上述挑戰,解決在多樣算力面前出現的問題,華為在不久前結束的“華為全聯接2021大會”上正式釋出了北冥多樣性計算融合架構。北冥架構是為多樣性計算硬體及叢集打造的完整軟體棧,可幫助開發者在多樣算力環境下,實現與單機相同的應用開發和部署體驗,並獲得遠超單一算力的應用效能。

華為北冥多樣性計算融合架構基礎軟體使能助力開發者乘風破浪

北冥多樣性計算融合架構

作為北冥多樣性計算融合架構的根基,北冥基礎使能軟體透過畢昇C++語言、畢昇編譯器和北冥融合加速庫為多樣性計算系統提供通用、高效、高效能的開發能力,助力開發者更好地應對上述挑戰。

三大基礎使能法寶解決業界難題

我們先來看一下畢昇C++語言。畢昇C++多樣性計算程式語言以C++為基礎,支援SYCL異構程式設計標準。一種語言即可對鯤鵬、昇騰及業界主流算力進行程式設計,大大降低學習成本。

該程式語言對不同算力的共性特徵進行了抽象,提供向量計算、矩陣計算、平行計算的通用介面。

它可以為多種處理器上的不同矩陣計算單元提供統一的矩陣程式設計介面UMMI,面向AI領域提供張量抽象,實現一套原始碼在多樣算力上的重用,降低了程式碼遷移成本。畢昇C++支援SIMD、SIMT等多種並行模式,可實現單一原始碼的跨算力程式設計,方便多樣算力協同。最後,畢昇C++語言透過單語言、單原始碼的開發方式,為開發者避免了多樣性計算系統的程式設計複雜性。

華為北冥多樣性計算融合架構基礎軟體使能助力開發者乘風破浪

在畢昇編譯器層面,作為一款優秀的產品,其能夠提供跨多樣算力統一編譯及融合最佳化能力。畢昇編譯器提供多指令集支援,實現了對鯤鵬、昇騰等算力的統一編譯。配合畢昇C++,可直接生成融合多種算力程式碼的fatbin可執行程式,方便地在多樣性計算系統上部署執行。

透過編譯演算法最佳化以及與處理器架構的深度協同,畢昇編譯器加強了預取最佳化、自動向量化、迴圈最佳化和多面體最佳化等能力。同一套原始碼在鯤鵬上進行基準效能測試,相比GCC效能提升了25%以上。此外,畢昇編譯器實現了多樣算力融合最佳化技術,如跨算力的資料流分析、控制流分析、傳播最佳化和資料佈局最佳化,打破了編譯器只能對單算力進行編譯最佳化的限制。畢昇編譯器在SPECACCEL基準測試中效能提升了30%以上。

最後再來看看具有統一API介面、具備多算力協同能力以及高效能的北冥融合加速庫。北冥融合加速庫相容主流應用框架,實現已有應用生態的良好對接。透過AI加速特徵空間搜尋、AI求解偏微分方程、高精度取樣等技術,新增了對AI+大資料、HPC+AI、HPDA等融合應用的支援。

北冥融合加速庫為多算力提供統一的API介面。同時,構建了業界獨有的多算力運算元層,透過多算力協同、異構區域分解技術將計算過程拆解到最適合的算力上,再採用混合並行及演算法等價變換等最佳化方法,實現加速庫效能的進一步提升。以最佳化器運算元為例,精度要求不高但計算量巨大的張量計算被分解到昇騰執行,高精度計算由鯤鵬執行併為梯度計算提供精度補償,從而大幅減少訓練耗時。基於此最佳化器運算元,實現了計算機視覺、自然語言處理等主流模型訓練效率提升1倍以上。

華為北冥多樣性計算融合架構基礎軟體使能助力開發者乘風破浪

結語

華為計算產品線研發總裁熊彥在大會現場展示了北冥多樣性計算融合架構的多種應用。透過實際案例的分享,展示了在該架構下求解時間能夠大幅縮減,體現出了出色的實用效果。在多元算力並行的未來,華為透過北冥多樣性計算融合架構的基礎使能軟體已經完成了生態奠基,幫助開發者在多元算力的軟體開發上乘風破浪。

頂部