CANN广播UB指令设计
📅 2026/7/15 9:29:41
👁️ 次浏览
实现③UB 内 Broadcast 指令【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills主文档broadcast_design.md | 参考代码code/broadcast_common.hUbBroadcast/FillUbShape思路先把紧凑源DataCopyPad搬进 UB再用AscendC::Broadcast矢量指令在 UB 内展开到目标 shape。占 Vector 单元但对尾轴对齐 小字节类型吞吐最高。还是唯一能广播中间计算结果的实现① ② 只能广播 GM 输入。适用前提tile 内要有 UB Broadcast 能展开的维dShapesShape。两种会出 nan 的反例cann-bench Maximum case 18 实测广播轴严格在外层brcInTilefalseUB 展不了外层轴 → 必须走 ②offset 寻址。广播轴是切分轴但ubFormer1tile 内仅 1 行dShapesShape空广播 → 必须走 ① NDDMA。即需inTileExpandable切分轴以下某轴广播或切分轴广播且ubFormer1。满足后任一成立即用 ③尾轴对齐且 dtype ∈ {INT8, UINT8, FP16, BF16, INT16, UINT16}B8/B16或 BigNLast非尾轴广播且尾轴字节 ≥nddma dcache/2源码注释 ~4096B或广播的是上游计算结果而非 GM 输入。Kernel 写法// 节选完整见 code/broadcast_add_kernel.cpp LocalTensorT src bufSrc_.GetT(); // 源长度按源 shape算不能用展开后的输出 tile 长度否则 [M,1] 尾轴广播会多搬 N 倍 int64_t srcLen UbSrcLen(inputStrides[i], inputDims[i], ubSplitAxis, shapeLen, rows); DataCopyPadCompact(yGm[off], src, srcLen); // ① 紧凑搬入 UbBroadcast(dst, src, outputDims, inputDims[i], ubSplitAxis, shapeLen, rows); // ② UB 内展开UbBroadcast内部code/broadcast_common.huint32_t dShape[8], sShape[8]; FillUbShape(dShape, sShape, outputDims, inDims, ubSplitAxis, shapeLen, curRows); // 首轴随主/尾块变 int64_t rank shapeLen - ubSplitAxis; // ★退化守卫所有 dShapesShape无可展开维如尾块 rows1→ 直接 UB→UB 拷贝否则空广播出 nan bool anyExpand false; int64_t cnt 1; for (int k 0; k rank; k) { if (dShape[k] sShape[k]) anyExpand true; cnt * dShape[k]; } if (!anyExpand) { // 无可展开维 → dtype 无关 UB→UB 拷贝 int32_t alignEle 32 / sizeof(T); int32_t cntAlign ((int32_t)cnt alignEle - 1) / alignEle * alignEle; // 向上对齐bufferelemNum 不越界 AscendC::DataCopy(dst, src, cntAlign); return; } AscendC::BroadcastTiling bt; AscendC::GetBroadcastTilingInfoT(rank, dShape, sShape, false, bt); AscendC::BroadcastT(dst, src, dShape, sShape, bt); // ← UB 矢量广播指令rankRR shapeLen - ubSplitAxisUB tile 内参与广播的维数。静态已知且 ≤4 → 可用编译期BroadcastT, R/GetBroadcastTilingInfoT, R性能更好动态或超阈值 → 运行期BroadcastT如样例R 作为运行期实参。尾块需把dstShape[0]/srcShape[0]改成ubTail/ 源尾块长度FillUbShape已按curRows处理。中间结果广播若广播的是上游计算节点的输出不是 GM 输入跳过DataCopyPadCompact直接对上游 UB tensor 调UbBroadcast。这是 ③ 相对 ① ② 的独占能力。注意退化守卫UbBroadcast内先检查是否存在dShapesShape的维若无如尾块rows1或选型漏判直接DataCopy(dst,src,对齐cnt)做 dtype 无关的 UB→UB 拷贝不用Adds避免 int64 等不支持而非调Broadcast防空广播出 nan。这是兜底正确选型应优先在 host 侧避免见上前提。UB 预算要多留一块紧凑源 buffer样例的bufSrc_③ 是 src dst 两块① 只需一块。tiling 的aliveBuf要含这块。每个走 ③ 的输入要各自一块bufSrc若多个输入都可能 ③如 binary 的 x1/x2 都广播共用一块TBuf会 RAW 冒险第二个输入的DataCopyPadCompact覆盖第一个的紧凑源。binary 算子应配bufSrc1_/bufSrc2_aliveBuf相应增大cann-bench Maximum 落地经验。GetBroadcastTilingInfo的 rank 必须与Broadcast调用一致。src/dst shape 的首轴是 UB 切分轴方向的行数后续轴是尾轴及以下广播轴在 src 上填 1。【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
wastebin数据库迁移与备份:SQLite数据管理完整解决方案 【免费下载链接】wastebin wastebin is a pastebin 📝 项目地址: https://gitcode.com/gh_mirrors/wa/wastebin
wastebin是一款轻量级、高性能的粘贴板服务,它使用SQLite作为数据…
📅 2026/7/15 9:28:41
1. 这不是R语言速查表,而是我压箱底的十套“时间折叠术” 在R语言圈子里混了十多年,带过几十个数据分析项目,从金融风控建模到生物信息批量处理,从教授手把手教学生写for循环,到实习生用一行dplyr代码干掉我当年要写三…
📅 2026/7/15 9:28:41
1. 项目概述与核心价值 在汽车高级驾驶辅助系统(ADAS)、工业机器视觉以及多摄像头监控系统中,一个核心的工程挑战是如何将分布在不同位置的多个高分辨率图像传感器产生的海量数据,可靠、实时且低延迟地传输到中央处理单元。传统并…
📅 2026/7/15 9:28:41
终极VPS系统重装指南:reinstall脚本让操作系统切换变得前所未有的简单 【免费下载链接】reinstall 一键DD/重装脚本 (One-click reinstall OS on VPS) 项目地址: https://gitcode.com/GitHub_Trending/re/reinstall
还在为VPS系统重装而烦恼吗?每…
📅 2026/7/15 10:38:46
1. 为什么信息安全系统需要真随机数?在信息安全领域,随机数就像建筑的地基。2017年WannaCry勒索病毒事件中,安全专家发现攻击者使用的伪随机数生成算法存在漏洞,这直接导致全球30多万台电脑被攻陷。这个案例生动展示了随机数质量对…
📅 2026/7/15 10:38:46
Yuzu模拟器架构解析:高性能Switch游戏模拟解决方案深度指南 【免费下载链接】yuzu-downloads 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu-downloads
Yuzu作为目前最先进的Nintendo Switch开源模拟器,通过创新的架构设计和技术实现&…
📅 2026/7/15 10:38:46
1. 项目概述与核心价值在物联网和可穿戴设备领域,我们开发者最头疼的问题之一,就是如何在有限的电池容量下,让设备“活”得更久。这不仅仅是选一个低功耗芯片那么简单,它是一场从硬件选型、电源架构设计到软件策略优化的系统性战役…
📅 2026/7/15 10:38:46
PromptForge:终极AI提示工程工作台 - 10个技巧快速提升提示质量 【免费下载链接】prompt-forge AI prompt engineering workbench for crafting, testing, and systematically evaluating prompts with powerful analysis tools. 项目地址: https://gitcode.com/g…
📅 2026/7/15 10:38:46
说实话,刚拿到这块板子的时候,我心里是打鼓的。网上吹得神乎其神,什么“旋转怪兽”、“手感无敌”,但我用惯了几块老胶皮,突然换这种听起来花里胡哨的新玩意儿,心里总没底。毕竟咱们打球,图的是个痛快,不是买个摆设回去供着。记得上周去球馆,跟几个老伙计约着练练手感…
📅 2026/7/15 10:38:06
1. COM线程模型基础与CoInitializeEx核心作用在Windows平台开发中,组件对象模型(COM)的线程处理机制一直是开发者必须掌握的底层知识。作为COM初始化的门户函数,CoInitializeEx不仅决定了对象在何种线程环境下运行,更影响着整个组件的并发性能…
📅 2026/7/15 0:00:17
1. 为什么M芯片Mac用户需要降级到Monterey? 去年刚拿到M2芯片的MacBook Pro时,我第一时间升级到了Ventura系统。结果第三天就遇到了微信闪退、Final Cut Pro渲染卡顿的问题。后来在开发者论坛发现,不少专业软件对Ventura的适配都存在问题。这…
📅 2026/7/15 0:00:17
1. 背景与核心概念在AI大模型快速发展的今天,许多开发者和研究者都面临一个现实问题:如何在有限的硬件预算下实现高效的本地大模型部署。特别是对于个人开发者和小型团队来说,购买最新的高端显卡成本高昂,而利用现有的或二手硬件资…
📅 2026/7/15 0:00:17
豆包openclaw最近圈子里都在聊豆包openclaw,我也没忍住,掏腰包入手了一套。说实话,刚拿到手的时候,心里是打鼓的。毕竟市面上类似的智能硬件太多了,有的吹得天花乱坠,用起来却是一堆bug。为了不让大家的钱打水漂,我连续用了半个月。从开箱到日常高频使用,甚至故意测试它…
📅 2026/7/14 6:35:02
SQLyog 13.3.1 社区版在Windows 10/11上的完整安装与连接指南 对于刚接触MySQL数据库管理的开发者和学生来说,选择一个直观易用的图形化管理工具至关重要。SQLyog作为一款轻量级但功能强大的MySQL GUI工具,能够显著提升数据库操作的效率和体验。本文将详…
📅 2026/7/14 12:06:52
SPEC CPU 2006 跨平台基准测试深度实战:ARM/X86/MIPS 架构配置优化与结果分析方法论在当今多元化的计算架构时代,如何客观评估不同处理器平台的真实性能成为系统工程师和性能优化专家的核心挑战。SPEC CPU 2006 作为业界公认的计算密集型基准测试套件&am…
📅 2026/7/14 7:15:18
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/14 15:11:56
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/15 2:24:18
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/14 15:11:56