CANN/asc-devkit GEMV矩阵向量乘法特性说明
📅 2026/7/16 10:56:14
👁️ 次浏览
GEMV【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit特性说明GEMV的核心功能体现为当矩阵A的维度M取值为1时接口可以手动启用GEMV功能该操作退化为1×K维度的行向量与K×N维度矩阵之间的乘法运算。针对Ascend 950PR/Ascend 950DT产品GEMV模式默认关闭。如需启用GEMV模式需要设置MmadTrait::disableGemv参数为false。特性约束1×K矩阵A需满足512B地址对齐K个数据连续存储。以half类型为例当K256时软件侧可视作16×16分块配置m1后硬件解析为1×256向量可通过Copy接口将256个half数据从L1 Buffer搬至L0A Buffer。C矩阵是一个1×N的向量当1×N向量被划分为多个1×16子向量时每个子向量在L0C Buffer中占用1024B。但实际有效数据仅占最低32B或64B。例如当N50时共划分4个1×16子向量占用4×512B2048B其中有效数据仅为4×32B128B。图1GEMV模式矩阵乘示意图使用优势M1时开启GEMV模式则矩阵乘法将M方向作为非对齐场景进行处理。GEMV模式相较于非对齐处理方式搬运数据量更少性能更好。下面以M1、K256、N32左右矩阵数据类型为half的矩阵乘示例说明。GEMV模式将A矩阵从L1 Buffer搬运到L0A Buffer时1×256的向量被当作16×16的矩阵进行处理调用Copy接口一次完成16×16分形大小的矩阵搬运。B矩阵的搬运以及矩阵乘计算跟基础场景相同如下图所示。图2GEMV模式M1的矩阵乘计算示意图非GEMV模式将A矩阵从L1 Buffer搬运到L0A Buffer时1×256的向量被当作非对齐矩阵数据进行处理将M方向对齐到32字节后进行搬运。调用Copy接口每次搬运16×16分形大小的矩阵一共搬运K/1616次导致搬运数据量增加性能相较于GEMV模式差如下图所示。图3非GEMV模式M不等于1的矩阵乘计算示意图使用示例本GEMV场景示例的规格如下矩阵维度大小数据类型格式A1×4096halfNDB4096×256halfNZC1×256floatND通过Copy接口将输入矩阵A从Global Memory搬运到L1 Buffer上并保持ND格式不变然后在L1 Buffer上将A矩阵转换为NZ格式再通过Copy接口搬运到L0A Buffer从而以GEMV模式执行矩阵乘。另外注意GEMV模式默认是关闭的需要自定义MmadTrait来开启。#include tensor_api/tensor.h using namespace AscendC::Te; struct MmadTraitCustom { using TraitType MmadTrait; // 设置MmadTrait::disableGemv参数为false开启GEMV。 static constexpr const TraitType value MmadTrait(0, false, false, false, MmadType::NORMAL); }; __aicore__ inline void MmadGemvExample(__gm__ half* aGm, __gm__ half* bGm, __gm__ float* cGm) { using AType half; constexpr uint32_t m 1; constexpr uint32_t k 4096; constexpr uint32_t n 256; // 数据类型half的C0_ELEMENT C0_SIZE(32B) / sizeof(half) 161×K向量按NZ格式重排为(K/C0_ELEMENT)×C0_ELEMENT大小的Tensor。 constexpr uint32_t c0 C0_ELEMENTAType; __cbuf__ AType l1ABuf[m * k]; __ca__ AType l0ABuf[m * k]; // A矩阵Global Memory-L1 BufferND-ND1×K行向量按ND连续搬入L1 Buffer。 auto gmATensor MakeTensor(MakeMemPtr(aGm), MakeFrameLayoutNDExtLayoutPtn(m, k)); auto l1ATensor MakeTensor(MakeMemPtr(l1ABuf), MakeFrameLayoutNDExtLayoutPtn(m, k)); auto copyGm2L1 MakeCopy(CopyGM2L1{}, CopyGM2L1TraitDefault{}); Copy(copyGm2L1, l1ATensor, gmATensor); // 在L1 Buffer上把这块连续数据重新解释为(K/C0_ELEMENT)×C0_ELEMENT大小的NZ分形矩阵地址不变仅换Layout。 auto l1ANzTensor MakeTensor(l1ATensor.Data(), MakeFrameLayoutNZLayoutPtn, AType(k / c0, c0)); // L1 Buffer-L0A BufferNZ-NZ非转置搬运一次完成分形搬运。 auto l0ATensor MakeTensor(MakeMemPtr(l0ABuf), MakeFrameLayoutNZLayoutPtn, AType(k / c0, c0)); auto copyL12L0A MakeCopy(CopyL12L0A{}, CopyL12L0ATraitDefault{}); Copy(copyL12L0A, l0ATensor, l1ANzTensor); // B矩阵搬运与基础场景相同此处省略假设已得到l0B。 // ... // Mmad计算使用配置GEMV模式的Trait。 MmadParams params(m, n, k, 0, true); auto atom MakeMmad(MmadOperation{}, MmadTraitCustom{}).with(params); Mmad(atom, l0C, l0ATensor, l0B); }【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
UF2格式:嵌入式固件烧录的革命性解决方案 【免费下载链接】uf2 UF2 file format specification 项目地址: https://gitcode.com/gh_mirrors/uf/uf2
在嵌入式开发的世界中,固件烧录一直是一个技术门槛较高的环节。开发者需要面对复杂的烧录工具链、…
📅 2026/7/16 10:56:14
1. YOLO视觉大模型与目标检测技术解析目标检测作为计算机视觉领域的核心任务,其发展历程经历了从传统手工特征到深度学习模型的演进。YOLO(You Only Look Once)系列算法因其独特的单阶段检测架构,在实时性方面展现出显著优势。最新…
📅 2026/7/16 10:56:14
Obsidian终极模板指南:17个免费模板3分钟打造你的第二大脑 【免费下载链接】OB_Template OB_Templates is a Obsidian reference for note templates focused on new users of the application using only core plugins. 项目地址: https://gitcode.com/gh_mirror…
📅 2026/7/16 10:56:14
说实话,以前我也觉得那些所谓的高科技定位神器,都是智商税。
直到上周,我那个在异地恋的闺蜜,哭着给我打电话。
她说男朋友总说她“查岗”查得太紧,其实人家是真忙,但手机定位显示她在家里。
这谁受得了啊?
后来我给她安利了这个叫 angelcolor geo 的小工具。
本来抱着试…
📅 2026/7/16 12:04:53
2026年选电脑录音软件可遵循5个实用挑选标准选出适配自身需求的工具,适合需要做会议记录、访谈整理、课堂录音整理的效率工具爱好者、内容创作者使用,挑选核心依据为场景匹配度、转写准确率、隐私安全性、使用门槛、衍生功能适配性,不适合只需…
📅 2026/7/16 12:04:40
如何扩展Signature Pad:自定义画笔样式与交互效果 【免费下载链接】signature-pad A jQuery plugin for assisting in the creation of an HTML5 canvas based signature pad. Records the drawn signature in JSON for later regeneration. 项目地址: https://gi…
📅 2026/7/16 12:04:40
3步让老旧Mac免费升级到最新macOS系统 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher
你是否拥有一台2015年甚至更早的Mac电脑,却因为苹果官方不再…
📅 2026/7/16 12:04:40
iOS-UDID-Safari高级技巧:如何为mobileconfig配置文件进行数字签名 【免费下载链接】iOS-UDID-Safari iOS-UDID-Safari,(不能上架Appstore!!!)通过Safari获取iOS设备真实UDID,use safari and mo…
📅 2026/7/16 12:04:40
CoreCycler终极指南:5步轻松完成CPU单核稳定性测试 【免费下载链接】corecycler Script to test single core stability, e.g. for PBO & Curve Optimizer on AMD Ryzen or overclocking/undervolting on Intel processors 项目地址: https://gitcode.com/gh_…
📅 2026/7/16 12:04:40
1. 项目概述:为什么用遗传算法解5皇后问题,而不是直接回溯?我带过十几届算法课,也给不少初创团队做过AI架构咨询。每次讲到组合优化问题,学生和工程师的第一反应永远是“写个回溯试试”。这没错——55棋盘上找所有合法…
📅 2026/7/16 0:00:02
前几天调试一个简单的电源模块,用到了5.1V稳压管。电路接好,上电测试,万用表一量——输出居然只有4.7V。第一反应是稳压管坏了,换了一个新的,结果还是4.7V。这让我想起很多初学者都会遇到的困惑:明明标称5.…
📅 2026/7/16 0:00:02
1. 项目概述与核心价值 在高速数字系统、通信设备乃至精密测量仪器中,一个稳定、纯净且可精确调控的时钟信号,往往是整个系统稳定运行的“心跳”。无论是确保数据在光纤中无误传输,还是让ADC/DAC芯片精准采样,亦或是让多块FPGA板卡…
📅 2026/7/16 0:00:02
豆包openclaw最近圈子里都在聊豆包openclaw,我也没忍住,掏腰包入手了一套。说实话,刚拿到手的时候,心里是打鼓的。毕竟市面上类似的智能硬件太多了,有的吹得天花乱坠,用起来却是一堆bug。为了不让大家的钱打水漂,我连续用了半个月。从开箱到日常高频使用,甚至故意测试它…
📅 2026/7/15 22:51:06
SQLyog 13.3.1 社区版在Windows 10/11上的完整安装与连接指南 对于刚接触MySQL数据库管理的开发者和学生来说,选择一个直观易用的图形化管理工具至关重要。SQLyog作为一款轻量级但功能强大的MySQL GUI工具,能够显著提升数据库操作的效率和体验。本文将详…
📅 2026/7/15 19:03:10
SPEC CPU 2006 跨平台基准测试深度实战:ARM/X86/MIPS 架构配置优化与结果分析方法论在当今多元化的计算架构时代,如何客观评估不同处理器平台的真实性能成为系统工程师和性能优化专家的核心挑战。SPEC CPU 2006 作为业界公认的计算密集型基准测试套件&am…
📅 2026/7/15 14:09:20
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/15 22:46:06
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/16 4:59:31
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/15 22:51:03