ZBX Blog

热爱生活,健康工作

算子怎么被调起来:AI CPU Engine 解剖

从 ExecuteTsKernelTask 的分叉到 dlopen/dlsym:三种 kernel lib、两级 so 缓存、三级路径回退,以及一个特殊函数名 RunCpuKernelWithBlock

前两篇讲了两段路: 第一篇《CANN Runtime:一次 aclrtLaunchKernel 到底发生了什么》——host 侧:一次 launch 怎么变成 64 个字节,进 SQ 环。 第二篇《SQE 到了设备侧:AI CPU 调度器怎么接活》——设备侧入口:aicpusd 怎么收 TS 的消息、怎么分派、怎么把算子 .so 落进 cust 目录。 第二篇结尾留了个动作没...

SQE 到了设备侧:AI CPU 调度器怎么接活

拆 aicpusd 的两套调度器、TS→AICPU 的 11 种命令、HwtsTsKernel 的七种内核类型,以及 HCCL 在 device 侧落地的那一个字符串

上一篇《CANN Runtime:一次 aclrtLaunchKernel 到底发生了什么》讲完了 host 侧:一次 launch 怎么变成 64 个字节,塞进环形队列,然后靠 sqHead 追平判断做完。 但那条故事的结尾其实是半句话——「SQE 出了用户态」不等于「事情做完了」。SQE 进了 SQ 之后,被谁取走、谁决定它在哪个核上跑、跑完谁把 sqHead 推上去,上一篇都留着了。...

ACL Graph:流捕获到底捕获了什么

任务被分配了,但不提交 —— 一句代码概括整个特性

本文所有结论来自 CANN 开源仓库 runtime(本地路径 cann-runtime/),关键处标注 文件:行号。 与前三篇的关系:前三篇讲一个任务怎么从 host 走到设备,这一篇讲怎么让成千上万个任务只走一次。《CANN Runtime:一次 aclrtLaunchKernel 到底发生了什么》里那七拍,在捕获期间被砍掉了最后一拍。 一句话概括: ACL Graph...

HCCL 的 CCU 模式:把整个通信算法编译进硬件

从 KernelRegister 的 dry-run 到指令空间里的微码,读通 hccl/hcomm 源码里最彻底的一次下沉

姊妹篇《HCCL 的 AICPU 模式:通信任务到底在哪展开》讲的是把展开动作从 host 搬进 NPU。那一步把 host-device 交互从几百次压到了 1 次,但 device 内部仍然在「一步步下发 task、等完成、再下发下一步」。这一篇讲的是把这条路走到头的那个引擎:CCU。 一句话概括: CCU 不是一块更快的 CPU,而是一台把整个通信算法预先编译成微码、常驻在片...

CANN Runtime:一次 aclrtLaunchKernel 到底发生了什么

拆 runtime 仓的四层结构、SQ/CQ 环形队列、64 字节 SQE 与「做完了没有」的三种答法

前面几篇 HCCL 的文章反复用到一个词:SQE。AICPU 模式在 AI CPU 上生成 SQE,CCU 模式把 SQE 换成微码指令,Task Cache 靠刷新 SQE 里的地址重放——但那些 SQE 最后是怎么离开用户态、又怎么被硬件取走的,一直悬着没说。 这篇补上那一环。 一句话概括: CANN Runtime 干的事,是把一次 C 函数调用翻译成 64 个字节,塞进一...

灵衢 UnifiedBus 学习笔记(六):一个事务的完整解剖

BTAH 十二个字节、九个扩展头、四种服务模式,以及 Jetty 家族 —— 基础规范第 7、8 章的逐字段细读

灵衢 UB 系列第六篇。前五篇把协议栈概览、OS 落地、集群服务、UB-Mesh 拓扑、链路/网络/传输层的可靠性机制都过了一遍;这一篇拆最后两块:事务层(第 7 章)和功能层(第 8 章)。文中「7.2.1」「8.2.2.3」这类编号对应基础规范章节,方便回查。 一句话概括:传输层以下解决「包怎么不丢不乱」,事务层解决「这一包到底要干什么」,功能层解决「用户拿什么姿势来干」。 ...

灵衢 UnifiedBus 学习笔记(五):消息是怎么保证不丢的

从信用证到 PSN —— 链路层重传、网络层选路、传输层重传三级叠加,以及多路径造出来的乱序怎么治

这是灵衢 UB 系列的第五篇。前四篇分别讲了协议本体、协议在 OS 里的落地、集群级服务与可靠性、UB-Mesh 组网拓扑;这一篇回到基础规范里被前几篇压缩掉的三章:数据链路层(第 4 章)、网络层(第 5 章)、传输层(第 6 章)。事务层与功能层的逐字段细读见第六篇《一个事务的完整解剖》。文中「4.7.3.2.2」「6.4.2.3.1」这类编号都对应基础规范章节,方便回查。 一...

灵衢 UnifiedBus 学习笔记(四):超节点是怎么连起来的

UB-Mesh:nD-FullMesh 拓扑、All-Path Routing 与 64+1 备份

学习材料:UB-Mesh: a Hierarchically Localized nD-FullMesh Datacenter Network Architecture(arXiv:2503.20377v3,14 页,Huawei,34 位作者,下称 UB-Mesh 论文)、超节点和关键应用场景(16 页胶片)。文中「3.3.1」「Sec. 4.1」这类编号对应论文原文章节,方便回查。...

HCCL 是怎么按拓扑选算法的

从一个算法名读出五个维度:Engine、Executor、Template、OpType、分层

材料:C:\gitRepo\hccl 仓库源码(CANN HCCL 的新一代实现)+ 仓库自带文档 docs/zh/user_guide/coll_algo_intro/。文中的文件路径都是仓库内相对路径,函数名可以直接搜到。 姊妹篇《灵衢 UnifiedBus 学习笔记(四):超节点是怎么连起来的》讲的是硬件怎么摆;这一篇讲摆好之后,软件怎么在里面选算法。两篇在「柜内全互连 + 柜上...

灵衢 UnifiedBus 学习笔记(三):系统高阶服务、可靠性与编程编译

UB Service Core 五大组件、六类故障、Matrix C++ 与管控运维 —— 收尾篇

学习材料:灵衢系统高阶服务软件架构参考设计 2.0(26 页,下称 Service Core 参考设计)、超节点可靠性关键技术、超节点编程编译关键技术、基于灵衢的超节点管控运维软件架构与接口参考设计 2.0(28 页)、灵衢系统高阶服务关键技术和应用。 前两篇分别讲了协议本身和它在 OS 里的落地,这一篇把剩下的四份读完:集群级系统服务、可靠性、编程编译、管控运维。第四篇《灵衢 Uni...