
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
简单说,你的算子不能是“硬编码”的。Hard-Coded(差):假设每次处理256个fp16数据,循环10次。Generalized(好):给我任意长度N(比如 10001),我都能自动算出需要循环多少次,最后一次剩多少数据,并且不出错。Tiling切分:怎么把任意长度的数据切成适合UB(Unified Buffer)大小的块?尾块处理:最后一块数据如果不满足32字节对齐,或者填不满一个Block

很多新手(包括刚开始的我自己)看到“算子开发”这四个字,第一反应是“这也太高大上了,我肯定学不会”。但经过CANN训练营图4课程“从0到1掌握Ascend C算子工程开发方式”的洗礼,我发现只要把架子搭好了,填代码其实就像填空题一样。

维度Ascend C开发语言C++Python内存管理手动自动Tiling策略Host侧手动计算Kernel侧分块逻辑性能上限🌟🌟🌟🌟🌟 (天花板)🌟🌟🌟🌟 (很强,但在特定场景有损耗)开发效率🐢 (慢,代码量大)🚀 (快,代码简洁)回到最初的问题:该学哪个?我的建议是:都要看。先看图4(Ascend C基础):哪怕你不手写C++算子,你也必须搞懂NPU的SPMD模型和存储层

简单说,你的算子不能是“硬编码”的。Hard-Coded(差):假设每次处理256个fp16数据,循环10次。Generalized(好):给我任意长度N(比如 10001),我都能自动算出需要循环多少次,最后一次剩多少数据,并且不出错。Tiling切分:怎么把任意长度的数据切成适合UB(Unified Buffer)大小的块?尾块处理:最后一块数据如果不满足32字节对齐,或者填不满一个Block

很多新手(包括刚开始的我自己)看到“算子开发”这四个字,第一反应是“这也太高大上了,我肯定学不会”。但经过CANN训练营图4课程“从0到1掌握Ascend C算子工程开发方式”的洗礼,我发现只要把架子搭好了,填代码其实就像填空题一样。

维度Ascend C开发语言C++Python内存管理手动自动Tiling策略Host侧手动计算Kernel侧分块逻辑性能上限🌟🌟🌟🌟🌟 (天花板)🌟🌟🌟🌟 (很强,但在特定场景有损耗)开发效率🐢 (慢,代码量大)🚀 (快,代码简洁)回到最初的问题:该学哪个?我的建议是:都要看。先看图4(Ascend C基础):哪怕你不手写C++算子,你也必须搞懂NPU的SPMD模型和存储层

维度Ascend C开发语言C++Python内存管理手动自动Tiling策略Host侧手动计算Kernel侧分块逻辑性能上限🌟🌟🌟🌟🌟 (天花板)🌟🌟🌟🌟 (很强,但在特定场景有损耗)开发效率🐢 (慢,代码量大)🚀 (快,代码简洁)回到最初的问题:该学哪个?我的建议是:都要看。先看图4(Ascend C基础):哪怕你不手写C++算子,你也必须搞懂NPU的SPMD模型和存储层








