
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
想搞清楚 runtime 和 driver 的边界,不妨从 CANN 软件栈的调用链路入手。用户代码调用 NPU 算子的那一刻,函数调用会沿着 CANN 的五层架构逐层下传:框架层(PyTorch Plugin / TensorFlow Plugin)→ 计算服务层(AOL 算子库,如 ops-nn、hccl 等)→ 计算编译层(GE 图引擎、TBE 算子编译器)→ 计算执行层(Runtime,a

想搞清楚 runtime 和 driver 的边界,不妨从 CANN 软件栈的调用链路入手。用户代码调用 NPU 算子的那一刻,函数调用会沿着 CANN 的五层架构逐层下传:框架层(PyTorch Plugin / TensorFlow Plugin)→ 计算服务层(AOL 算子库,如 ops-nn、hccl 等)→ 计算编译层(GE 图引擎、TBE 算子编译器)→ 计算执行层(Runtime,a

想搞清楚 runtime 和 driver 的边界,不妨从 CANN 软件栈的调用链路入手。用户代码调用 NPU 算子的那一刻,函数调用会沿着 CANN 的五层架构逐层下传:框架层(PyTorch Plugin / TensorFlow Plugin)→ 计算服务层(AOL 算子库,如 ops-nn、hccl 等)→ 计算编译层(GE 图引擎、TBE 算子编译器)→ 计算执行层(Runtime,a

你觉得写算子最难的是什么。是算法本身吗。不完全是。真正的难点在于:同一份计算逻辑,要在昇腾NPU的不同代际芯片上都能跑出好成绩。直接写机器码。换个芯片代际就得重写。用高层接口。性能又不够极致。CANN给出的解法是PTO-ISA——一套面向tile级操作的虚拟指令集体系结构。它处在自定义算子编译链路的中间层,往上对接框架和编译器前端,往下生成适配具体昇腾硬件的二进制代码。本文把这个中间层拆开,用几个

你觉得写算子最难的是什么。是算法本身吗。不完全是。真正的难点在于:同一份计算逻辑,要在昇腾NPU的不同代际芯片上都能跑出好成绩。直接写机器码。换个芯片代际就得重写。用高层接口。性能又不够极致。CANN给出的解法是PTO-ISA——一套面向tile级操作的虚拟指令集体系结构。它处在自定义算子编译链路的中间层,往上对接框架和编译器前端,往下生成适配具体昇腾硬件的二进制代码。本文把这个中间层拆开,用几个

你觉得写算子最难的是什么。是算法本身吗。不完全是。真正的难点在于:同一份计算逻辑,要在昇腾NPU的不同代际芯片上都能跑出好成绩。直接写机器码。换个芯片代际就得重写。用高层接口。性能又不够极致。CANN给出的解法是PTO-ISA——一套面向tile级操作的虚拟指令集体系结构。它处在自定义算子编译链路的中间层,往上对接框架和编译器前端,往下生成适配具体昇腾硬件的二进制代码。本文把这个中间层拆开,用几个

在CANN算子开发生态中,开发者面临一个普遍矛盾:Ascend C底层API提供了完整的硬件控制能力,但编写一个生产级Vector算子需要处理Tiling切分、多核调度、数据搬运流水线、double buffer管理等大量非计算逻辑。ATVOSS(Ascend C Templates for Vector Operator Subroutines)项目正是为解决这一矛盾而生。

在CANN算子开发生态中,开发者面临一个普遍矛盾:Ascend C底层API提供了完整的硬件控制能力,但编写一个生产级Vector算子需要处理Tiling切分、多核调度、数据搬运流水线、double buffer管理等大量非计算逻辑。ATVOSS(Ascend C Templates for Vector Operator Subroutines)项目正是为解决这一矛盾而生。

在CANN算子开发生态中,开发者面临一个普遍矛盾:Ascend C底层API提供了完整的硬件控制能力,但编写一个生产级Vector算子需要处理Tiling切分、多核调度、数据搬运流水线、double buffer管理等大量非计算逻辑。ATVOSS(Ascend C Templates for Vector Operator Subroutines)项目正是为解决这一矛盾而生。

大语言模型推理与训练存在本质差异。训练阶段以批量数据吞吐为核心优化目标,而推理阶段则面临截然不同的压力组合:长序列输入带来的显存非线性增长、动态请求长度导致的批处理效率塌陷、以及Decoding阶段算力利用率低下等结构性矛盾。在昇腾NPU上运行LLM推理,如果沿用传统GPU时代的老路子,往往会在显存墙和调度效率上同时碰壁。









