AscendNPU IR là lớp biểu diễn trung gian dựa trên MLIR, nằm dưới trình biên dịch BiSheng và hỗ trợ các DSL như Triton, TileLang cùng nhiều cấp IR của framework. HFusion đảm nhiệm các tối ưu tương đối độc lập với phần cứng như hợp nhất, chia tile và lập lịch; HIVM hạ thấp biểu diễn xuống lõi Cube, Vector, bộ nhớ on c...
Câu trả lời nghiên cứu

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
Tại buổi tọa đàm kỹ thuật Meet AI Compiler lần thứ 9 do HyperAI tổ chức ở Trung Quan Thôn, Bắc Kinh, ngày 1/8/2026, kiến trúc sư Hải Lệ Quyên của Huawei đã trình bày cách AscendNPU IR kết nối Triton và các hệ sinh thái toán tử khác với phần cứng Ascend. 3
7
Điểm đáng chú ý là AscendNPU IR không phải một ngôn ngữ lập trình dành cho người dùng cuối. Đây là nền tảng biên dịch mở dựa trên MLIR, nằm dưới trình biên dịch BiSheng, giúp tách phần mô tả phép toán ở front end khỏi những công việc phụ thuộc sâu vào phần cứng như chia tile, di chuyển dữ liệu, đồng bộ, phân bổ bộ nhớ on-chip và sinh mã thiết bị. 1
4
Có thể hình dung AscendNPU IR như một lớp trung gian chung cho nhiều cách tiếp cận khác nhau. Các DSL như Triton và TileLang có thể hạ xuống AscendNPU IR. Ở cấp framework hoặc compiler, đầu vào có thể đi qua Torch IR, Linalg/HFusion IR hoặc HIVM IR. Những cấp cao hơn ưu tiên khả năng tự động hợp nhất, chia nhỏ và lập lịch toán tử; HIVM cho phép kiểm soát trực tiếp hơn vị trí lưu trữ và pipeline tính toán trên Ascend. 5
22
Luồng biên dịch được đơn giản hóa như sau:
Triton, TileLang hoặc framework IR
↓
AscendNPU IR dựa trên MLIR
↓
Hạ từ HFusion xuống HIVM
↓
Lệnh thiết bị và mã nhị phân Ascend
Theo tài liệu dự án, công cụ bishengir-compile có thể chuyển MLIR thành mã nhị phân phía thiết bị. Mã này sau đó được đăng ký và thực thi thông qua runtime của CANN. 6
Về mặt thiết kế, AscendNPU IR cung cấp nhiều tầng trừu tượng: tầng trên che giấu chi tiết lệnh tính toán, truyền dữ liệu và đồng bộ; tầng dưới mở ra các điểm điều khiển chi tiết cho nhà phát triển cần tối ưu vị trí bộ nhớ on-chip, điểm chèn đồng bộ hoặc pipeline ping-pong. 4
11
Tile là một khối dữ liệu và phép tính có kích thước vừa đủ để xử lý hiệu quả trên phần cứng. Thay vì buộc từng front end phải tự mô tả mọi lần tải dữ liệu, cấp bộ nhớ, điểm đồng bộ và lệnh phần cứng, AscendNPU IR đưa các công việc đó về một biểu diễn chung ở cấp tile.
Cách tiếp cận này tạo ra sự cân bằng giữa tính linh hoạt và khả năng tinh chỉnh. Code viết bằng Triton hoặc IR của framework có thể đi vào compiler ở mức trừu tượng cao hơn, trong khi các toán tử nhạy cảm về hiệu năng vẫn có thể hạ xuống biểu diễn hiểu rõ phần cứng hơn khi cần. 5
11
Các tầng của hệ thống lần lượt mô hình hóa lệnh Ascend, tài nguyên trong lõi, tài nguyên giữa các lõi và tài nguyên ở cấp hệ thống trên chip. Nhờ đó, compiler có thể xử lý những vấn đề mà người viết toán tử thường phải tự giải quyết trên kiến trúc NPU: dữ liệu nằm ở đâu, được di chuyển khi nào và nên dùng đơn vị tính toán nào. 11
HFusion là tầng tương đối độc lập với phần cứng. Tại đây, các phép toán tensor được biểu diễn ở mức cao hơn và trải qua những biến đổi như hợp nhất toán tử, bufferization, chia tile và lập lịch trước khi compiler quyết định cách ánh xạ xuống lệnh NPU cụ thể. 11
22
Nói cách khác, HFusion nhìn vào cấu trúc lớn của phép tính: những toán tử nào có thể kết hợp, vòng lặp nên được chia thành các khối ra sao và lịch thực thi nào phù hợp với mô hình tính toán mục tiêu.
HIVM là tầng hiểu rõ phần cứng Ascend hơn. Tầng này chuyển biểu thức tile thành các thao tác gắn với đơn vị tính toán, phân cấp bộ nhớ và pipeline thực thi của NPU. Các nhiệm vụ chính gồm:
Sự phân chia này cho phép compiler tối ưu ở hai mức. HFusion tìm cơ hội hợp nhất và tổ chức lại toàn bộ phép tính, còn HIVM quyết định các tile thành phẩm sẽ sử dụng bộ nhớ, lõi tính toán, đường truyền và lệnh cụ thể như thế nào.
Mô hình HFusion/HIVM vẫn được giữ lại, nhưng phía HIVM phải bao phủ nhiều kiểu thực thi hơn so với đường SIMD dựa chủ yếu vào bộ nhớ trước đây. Tài liệu tập trung vào Ascend 950 mô tả việc bổ sung SIMD dựa trên thanh ghi và SIMT bên cạnh mô hình thực thi hiện có. 2
Với SIMD dựa trên thanh ghi, dữ liệu được tải từ bộ nhớ on-chip vào các thanh ghi, xử lý tại đó rồi ghi trở lại. Khi điều kiện cho phép, compiler có thể thực hiện hợp nhất ở cấp thanh ghi để giữ các giá trị trung gian trong thanh ghi qua nhiều phép toán, qua đó giảm số lần tải và ghi dữ liệu. 2
SIMT mở ra một lựa chọn khác cho các phần toán tử có truy cập dữ liệu không đều hoặc có sự phân nhánh. Cách tiếp cận được trình bày là tách phần phù hợp với SIMT khỏi phần dày đặc, phù hợp với SIMD; sau đó áp dụng biến đổi thích hợp cho từng phần và ghép kết quả trở lại vào phép tính vector tổng thể. 2
Ở một số luồng A2/A3, dữ liệu trao đổi giữa tính toán Cube và Vector phải đi qua bộ nhớ toàn cục. Với Ascend 950, kết quả Cube từ L0C có thể được chuyển tới bộ nhớ on-chip của Vector, rồi kết quả Vector được đưa trở lại bộ nhớ của Cube trên đường truyền gần hơn. 2
Điều này đặc biệt có ý nghĩa với những toán tử trong đó phần tính ma trận do Cube thực hiện được nối tiếp bởi xử lý vector. Tuy nhiên, compiler vẫn phải xác định chính xác tensor đang nằm ở đâu và thời điểm cần truyền dữ liệu, nhất là khi phần Cube và Vector xuất hiện ở các nhánh điều khiển khác nhau.
Một số pass mang tên cụ thể cho thấy AscendNPU IR chuyển các trừu tượng nói trên thành quyết định về bộ nhớ và lịch thực thi như thế nào.
InsertCVLoadStoreCube–Vector có thể xuất hiện ở các nhánh khác nhau của một luồng điều khiển, vì vậy việc chèn lệnh truyền dữ liệu không thể chỉ dựa vào so khớp mẫu cục bộ. Luồng InsertCVLoadStore được cải tiến để phân tích giao tiếp CV trên các luồng điều khiển phức tạp.
Pass này trước hết tạo ra các mốc xác định vị trí bộ nhớ: đầu vào của phép nhân ma trận có thể được neo tại L1, đầu ra tại L0C, còn dữ liệu vector tại UB. Sau đó, các ràng buộc được lan truyền lên và xuống qua chương trình; khi phát hiện xung đột giữa các miền bộ nhớ, compiler chèn phép chuyển đổi hoặc sao chép cần thiết. 2
Trên A2/A3, một số giao tiếp được mô tả là sử dụng thao tác tải và ghi qua bộ nhớ toàn cục. Trên Ascend 950, các đường truyền on-chip gần hơn có thể được sử dụng khi phần cứng và lịch thực thi cho phép. 2
MultiBufferMultiBuffer biểu diễn nhiều bản sao của một tensor hiện có. Cơ chế này hỗ trợ buffering kiểu ping-pong, giúp chồng lấp việc di chuyển dữ liệu với tính toán nếu ngân sách bộ nhớ và lịch thực thi phù hợp. 17
18
AutoBlockify và DynamicCVPipelineAutoBlockify và DynamicCVPipeline là những pass dành riêng cho Ascend trong ngăn xếp Triton-Ascend. Tên gọi của chúng phản ánh hai nhiệm vụ trọng tâm: chia phép tính thành các khối có thể thực thi và xây dựng pipeline phối hợp giữa Cube với Vector. 19
Bộ tính năng được công bố còn bao gồm lập kế hoạch bộ nhớ, chèn đồng bộ, lập lịch và các tối ưu Cube–Vector tự động. 24
Phần trình bày mô tả cấu hình trong đó một Cube tương ứng với hai lõi Vector. AutoSubTiling có thể chia công việc Vector thành các phần riêng để hai lõi xử lý đồng thời, được gọi là cơ chế chia CV 1:2 trong ngữ cảnh phù hợp. 2
14
Huawei đã mở mã nguồn AscendNPU IR cùng Triton-Ascend để cộng đồng cùng phát triển. Triton-Ascend là framework biên dịch Triton dành cho nền tảng Ascend, giữ lại cú pháp cốt lõi của Triton đồng thời bổ sung khả năng biên dịch và triển khai cho các dòng A2, A3 và 950. 30
37
Với nhà phát triển, điều này tạo ra lối vào trực tiếp hơn để đóng góp vào compiler pass, tích hợp front end, hạ toán tử hoặc tối ưu theo đặc tính phần cứng mà không phải tự xây dựng toàn bộ compiler stack.
Chương trình cộng đồng được giới thiệu gồm các kỳ thực tập gắn với kho mã nguồn và các nhiệm vụ có phần thưởng. Nhà phát triển có thể nhận một nhiệm vụ được liệt kê, hoàn thành rồi gửi kết quả theo quy định của chương trình. 31
Những người không có máy Ascend được cho là có thể sử dụng HiDevLab, môi trường điện toán đám mây của cộng đồng Ascend, với 100 giờ tính toán miễn phí. Tuy nhiên, các thông tin hiện có chưa nêu đầy đủ điều kiện tham gia, bước xác minh, thời hạn sử dụng hay phạm vi cung cấp theo khu vực; người dùng nên kiểm tra các điều khoản này khi đăng ký. 31
Đề xuất cốt lõi của AscendNPU IR mang tính kiến trúc: tạo một nền tảng biên dịch chung để đưa nhiều front end đến phần cứng Ascend, nhưng vẫn giữ lại đường xuống cho những tối ưu rất sát chip.
Triton, TileLang và IR của framework có thể kết nối ở tầng cao; HFusion xử lý các biến đổi rộng như hợp nhất, chia tile và lập lịch; còn HIVM chuyển các tile thành quyết định cụ thể về bộ nhớ, lõi, giao tiếp và pipeline trên NPU. 5
11
Ascend 950 nâng trần tối ưu bằng SIMD dựa trên thanh ghi, SIMT và đường giao tiếp Cube–Vector on-chip gần hơn. Dù vậy, hiệu năng thực tế vẫn phụ thuộc vào hình dạng toán tử, áp lực bộ nhớ, luồng điều khiển, độ trưởng thành của compiler và mẫu chip đích. Việc mở mã nguồn không tự động giải quyết mọi bài toán, nhưng giúp các đánh đổi này dễ được quan sát hơn và mở thêm không gian để cộng đồng compiler cùng cải thiện chúng.
Studio Global AI
Trang này bao gồm câu trả lời dựa trên nguồn mà bạn có thể tiếp tục bên trong Studio Global.
AscendNPU IR là lớp biểu diễn trung gian dựa trên MLIR, nằm dưới trình biên dịch BiSheng và hỗ trợ các DSL như Triton, TileLang cùng nhiều cấp IR của framework.
AscendNPU IR là lớp biểu diễn trung gian dựa trên MLIR, nằm dưới trình biên dịch BiSheng và hỗ trợ các DSL như Triton, TileLang cùng nhiều cấp IR của framework. HFusion đảm nhiệm các tối ưu tương đối độc lập với phần cứng như hợp nhất, chia tile và lập lịch; HIVM hạ thấp biểu diễn xuống lõi Cube, Vector, bộ nhớ on chip và các pipeline cụ thể.
Với Ascend 950, HIVM mở rộng sang SIMD dựa trên thanh ghi, SIMT và đường truyền dữ liệu Cube–Vector trực tiếp hơn trên bộ nhớ on chip.