AscendNPU IR 係畢昇編譯器底層嘅 MLIR 中間表示基礎,唔係另一種畀終端用戶直接寫程式嘅語言;華為架構師海麗娟喺 2026 年 8 月 1 日嘅 Meet AI Compiler 技術沙龍介紹咗相關進展。[3][7] HFusion 負責相對硬件無關嘅融合、切 tile 同調度;HIVM 就進一步處理 Cube/Vector 核心映射、片上記憶體、同步、流水線及指令生成。[5][11][22] 針對 Ascend 950,編譯器加入 register based SIMD、SIMT 及更直接嘅 Cube–Vector 片上數據交換路徑;開發者亦可以透過 Triton Ascend、AscendNPU IR 社區任...
研究答案

Create a landscape editorial hero image for this Studio Global article: What did Huawei AscendNPU IR architect Hai Lijuan present at HyperAI’s ninth Meet AI Compiler technical salon on August 1, 2026, and how doe. Article summary: Hai Lijuan’s August 1 salon talk, “AscendNPU IR: open compiler foundation supporting multi-language access to Ascend,” presented the newly open-sourced MLIR compiler layer beneath BiSheng and its path for bringing Triton. Topic tags: general, general web, user generated. Style: premium digital editorial illustration, source-backed research mood, clean composition, high detail, modern web publication hero. Use reference image context only for broad subject, composition, and topical grounding; do not copy the exact image. Avoid: logos, brand marks, copyrighted characters, real person likenesses, fake screenshots, UI text, readable text, watermarks, charts with fa
AscendNPU IR 可以理解成一座「編譯橋樑」:上面接住 Triton、TileLang、PyTorch 等前端,下面就將算子逐步變成昇騰 NPU 可以執行嘅裝置指令同二進制檔。佢係畢昇(BiSheng)編譯器嘅 MLIR-based 中間表示基礎,而唔係另一種需要開發者由頭學起嘅終端程式語言。3
4
11
喺 HyperAI 第九期 Meet AI Compiler 技術沙龍上,華為 AscendNPU IR 架構師海麗娟於 2026 年 8 月 1 日介紹咗呢套開源編譯底座,重點係點樣支援 Triton 等算子生態,以及點樣用多層抽象將前端程式接駁到昇騰硬件。3
7
AI 算子要喺專用 NPU 上跑得快,唔係淨係將數學運算翻譯成指令咁簡單。編譯器仲要決定:
如果每一個前端都要自行處理以上細節,Triton、TileLang 或框架整合就會變得成本高、重複多,而且好難跨硬件世代維護。AscendNPU IR 嘅做法係提供一個共用、以 tile 為核心嘅中間表示,將前端嘅張量運算逐步降低到昇騰硬件需要嘅記憶體、核心、通信同指令決定。4
11
簡化流程可以睇成:
Triton、TileLang 或框架 IR
↓
以 MLIR 為基礎嘅 AscendNPU IR
↓
HFusion → HIVM 逐層 lowering
↓
昇騰裝置指令及二進制檔
官方接入文件顯示,開發者可以經 DSL 接入,例如 Triton 同 TileLang;亦可以經多層 IR 接入,包括 Torch IR、Linalg/HFusion IR 及 HIVM IR。較高層嘅路徑可以自動進行算子融合、切分同調度,而 HIVM 就提供更直接嘅硬件控制能力。5
22
實際編譯時,bishengir-compile 可以將 MLIR 編譯成裝置端 object,再透過 CANN runtime 註冊同執行。6
Tile 即係將一大組 Tensor 數據同運算切成較易處理嘅小區塊。對前端開發者嚟講,佢可以先描述「呢一塊數據要做咩運算」,而唔使一開始就逐條指定搬運指令、同步點或者每級記憶體位置。
但呢種抽象唔代表硬件細節永遠被遮蔽。AscendNPU IR 採用多層設計:高層接口重視易用性同可移植性,會隱藏部分計算、搬運及同步指令細節;較低層接口就容許開發者精確控制片上記憶體地址、流水同步位置,以及是否使用乒乓流水優化。4
11
所以佢取嘅係一個折衷方案:Triton 或框架前端可以用較高層語義共用同一套編譯底座;對性能極度敏感嘅算子,開發者亦可以一路落到更貼近硬件嘅 HIVM 表達,針對特定昇騰芯片調校。5
11
22
HFusion 係相對硬件無關嘅一層。佢以較高層嘅 Tensor 運算表達算子,負責 bufferization、算子融合、tiling、切分同調度等工作,盡量喺未落實到具體硬件指令之前,搵出較大範圍嘅優化機會。11
22
例如多個連續運算可以合併,減少中間結果反覆寫入同讀取;一個大運算亦可以切成適合目標執行模型嘅 tiles。呢一層主要保留算子嘅高層語義,同時為之後嘅昇騰專屬 lowering 做準備。
HIVM 就係硬件感知層,會將 tile 表達降低成反映昇騰執行單元、儲存層級同流水行為嘅操作。其工作包括:2
14
換句話講,HFusion 望住嘅係「成個 Tensor 運算圖可以點樣融合同切分」,HIVM 望住嘅就係「每一塊 tile 實際要用邊個核心、邊級記憶體、邊條流水線同邊種指令跑」。
HFusion/HIVM 嘅兩層分工冇變,但 Ascend 950 令硬件感知嗰一層要處理更多執行模式。除咗原有嘅以片上記憶體為主嘅 SIMD 路徑,相關資料亦描述咗 register-based SIMD 同 SIMT 支援。2
喺 register-based SIMD 模式下,數據可以由片上記憶體載入寄存器,喺寄存器內完成計算,再寫返出去。當運算結構容許時,寄存器粒度嘅融合可以令中間結果繼續留喺寄存器,減少重複載入同寫回。2
對需要連續處理多個向量操作嘅算子嚟講,呢種 load–compute–store 流程有機會縮短數據來回搬運距離;不過實際收益仍然要視乎算子形狀、寄存器壓力同編譯器調度結果。
SIMT 就提供另一種處理方式,適合部分訪存模式較唔規則或者存在分支差異嘅工作。編譯器會將較適合 SIMT 嘅部分同密集、適合 SIMD 嘅部分分開處理,再將結果重新接返入較完整嘅向量運算流程。2
呢個做法唔係要 SIMD 同 SIMT 二揀一,而係按算子內不同部分嘅特性,分配到較合適嘅執行模式。
以往 A2/A3 嘅部分 Cube–Vector 交互,需要經過全局記憶體做數據交換。針對 Ascend 950,相關路徑可以將 Cube 嘅結果由 L0C 搬到 Vector 片上記憶體,再將 Vector 結果搬返 Cube 記憶體,形成更直接嘅片上數據通道。2
呢項變化對「先做矩陣運算、再做向量處理」嘅算子尤其重要。不過,當 Cube 同 Vector 操作分布喺唔同控制流分支,編譯器仍然要推導每個 Tensor 實際位於邊個記憶體層級,以及幾時需要搬運,先可以確保功能同性能都正確。
InsertCVLoadStore:跨複雜控制流推導 Cube–Vector 通信InsertCVLoadStore 新版流程唔再只係靠簡單嘅局部 pattern matching 插入搬運指令,而係會跨複雜控制流做全局分析。2
做法係先建立記憶體位置錨點,例如:矩陣輸入放喺 L1、矩陣輸出放喺 L0C、向量數據放喺 UB。之後編譯器將呢啲限制沿住程式向上、向下傳播,推導每個 Tensor 應該屬於邊個記憶體域;如果兩個操作需要嘅域唔一致,就插入轉換或者拷貝操作。2
A2/A3 嘅部分 Cube–Vector crossing 可以經全局記憶體 load/store 完成;Ascend 950 就可以喺支援情況下使用更直接嘅片上路徑。2
MultiBuffer:用多份 Buffer 重疊搬運同計算MultiBuffer 代表同一個 Tensor 保留多份副本,支援 ping-pong buffering。當記憶體預算同調度容許時,編譯器可以一邊搬下一批數據,一邊計算上一批,從而重疊數據搬運同運算。17
18
AutoBlockify 同 DynamicCVPipelineAutoBlockify 同 DynamicCVPipeline 係 Triton-Ascend 編譯器堆疊入面嘅 Ascend 專屬 Pass。前者主要對應將運算切成可執行區塊,後者就負責建立 Cube–Vector 流水線行為。19
相關文件亦列出自動記憶體規劃、同步、調度、CV 融合及流水線等能力,包括 PlanMemory、AutoSync、AutoSchedule 同 CVPipeline。14
24
相關介紹描述咗一種「一個 Cube 對兩個 Vector 核」嘅配置。AutoSubTiling 可以將 Vector 工作切成兩部分,交畀兩個 Vector 核同時處理。2
14
華為今次同時開放 AscendNPU IR 同 Triton-Ascend,方向係希望社區共同開發。Triton-Ascend 保留 Triton 核心語法,同時加入針對 Ascend A2、A3 及 950 系列嘅編譯、調優同部署支援。30
37
對開發者嚟講,開源之後可以直接參與幾類工作:
Ascend 社區亦公布咗同 repository 連結嘅開源實習及任務獎勵計劃。按現有報道,開發者可以一次認領一項列出嘅任務,完成後按計劃規則提交並領取相應獎勵。31
如果手上冇昇騰硬件,據報可以使用 Ascend 社區嘅雲端環境 HiDevLab,登記後獲得 100 小時免費算力。31 不過,現有資料未有交代完整嘅資格、驗證、有效期或者地區適用條件,實際註冊前仍然要以 HiDevLab 當時公布嘅條款為準。
AscendNPU IR 真正想處理嘅問題,唔係單純將 Triton 程式「搬」去另一款 NPU,而係建立一個可以容納多種前端、同時保留硬件調優空間嘅共同編譯底座。5
11
前端可以喺較高層表達算子;HFusion 負責融合、切分同調度;HIVM 再將 tile 具體落到昇騰嘅記憶體層級、Cube/Vector 核心、通信同步及流水線。Ascend 950 加入 register-based SIMD、SIMT 同更緊密嘅 Cube–Vector 片上通道,亦將編譯器對控制流同記憶體位置嘅分析要求推高。2
11
至於實際性能係咪一定更好,就要睇算子形狀、記憶體壓力、控制流、編譯器成熟度同目標芯片,唔可以單靠架構名稱下結論。開源嘅價值,就係令呢啲取捨更容易被檢視,亦畀算子同編譯器開發者有機會一齊將條路行得更遠。
Studio Global AI
此頁麵包含一個有來源支援的答案,您可以在 Studio Global 內繼續。
AscendNPU IR 係畢昇編譯器底層嘅 MLIR 中間表示基礎,唔係另一種畀終端用戶直接寫程式嘅語言;華為架構師海麗娟喺 2026 年 8 月 1 日嘅 Meet AI Compiler 技術沙龍介紹咗相關進展。[3][7]
AscendNPU IR 係畢昇編譯器底層嘅 MLIR 中間表示基礎,唔係另一種畀終端用戶直接寫程式嘅語言;華為架構師海麗娟喺 2026 年 8 月 1 日嘅 Meet AI Compiler 技術沙龍介紹咗相關進展。[3][7] HFusion 負責相對硬件無關嘅融合、切 tile 同調度;HIVM 就進一步處理 Cube/Vector 核心映射、片上記憶體、同步、流水線及指令生成。[5][11][22]
針對 Ascend 950,編譯器加入 register based SIMD、SIMT 及更直接嘅 Cube–Vector 片上數據交換路徑;開發者亦可以透過 Triton Ascend、AscendNPU IR 社區任務及 HiDevLab 參與測試同開發。[2][19][31]