CANN稀疏矩阵乘实现指南
4:2稀疏矩阵乘【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit功能介绍4:2稀疏矩阵乘又称Sparse Matmul。该场景下输入的原始左矩阵A、右矩阵B为稀疏矩阵稀疏矩阵B中每4个元素中至少有2个为零元素在进行Matmul计算前用户需要自行对B矩阵进行42稠密化即基于原始稀疏矩阵B在每4个元素中过滤掉2个零元素使B矩阵稠密化为稠密矩阵Sparse Matmul场景调用Matmul API完成A矩阵与4:2稠密化后的B矩阵的矩阵乘计算。Sparse Matmul可以跳过稀疏矩阵B中的零元素仅对非零元素进行数据搬运存储和计算从而减少矩阵乘计算时的内存占用和计算量提升性能。实现流程数据预处理在计算前的数据准备阶段用户自行对原始为稀疏矩阵的B矩阵完成稠密化稠密过程请参考稠密算法说明。稠密化过程结束后得到4:2稠密化后的右矩阵B和索引矩阵index稠密化后的右矩阵B和索引矩阵index将作为Sparse Matmul场景的计算输入。图1对原始稀疏矩阵B进行4:2稠密化过程示意图![](https://raw.gitcode.com/cann/asc-devkit/raw/258f0725972f41f1a23d1fcda692fd94f2d443ce/docs/zh/guide/figures/对原始稀疏矩阵B进行4-2稠密化过程示意图.png 对原始稀疏矩阵B进行4-2稠密化过程示意图?utm_sourcegitcode_repo_files)稠密化过程对于稀疏矩阵B的每4个元素在索引矩阵index中生成2个2位索引每个索引分别指向对应非零元素的相对位置具体规则可参考稠密算法说明。稠密化过程生成的索引矩阵的数据类型为int2索引矩阵在加载入Matmul前需要拼成int8的数据类型。索引矩阵在一个int8的地址中的排布是逆序排布的例如索引矩阵1 2 0 1 0 2 1 0在地址中的排布为1 0 2 1 0 1 2 0其中1 0 2 1对应索引矩阵前四位1 2 0 1为一个int80 1 2 0对应索引矩阵后四位0 2 1 0为一个int8。设置Sparse Matmul场景在Host侧获取Tiling前需要通过SetSparse接口设置Sparse Matmul场景。auto ascendcPlatform platform_ascendc::PlatformAscendC(context-GetPlatformInfo()); matmul_tiling::MatmulApiTiling tiling(ascendcPlatform); tiling.SetAType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_INT8); tiling.SetBType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_INT8); tiling.SetCType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_INT32); tiling.SetBiasType(matmul_tiling::TPosition::GM, matmul_tiling::CubeFormat::ND, matmul_tiling::DataType::DT_INT32); // 设置Sparse Matmul场景 tiling.SetSparse(true); ... // 其他实现内容 optiling::TCubeTiling tilingData; int ret tiling.GetTiling(tilingData);创建Matmul对象在Kernel侧创建Matmul对象时通过MatmulType定义A、C、Bias的参数类型信息包括内存逻辑位置、数据格式、数据类型。通过SparseMatmulType类型定义B矩阵的参数类型包括B矩阵的内存逻辑位置、索引矩阵的内存逻辑位置、数据格式、数据类型等。#include lib/matmul_intf.h using A_TYPE AscendC::MatmulTypeAscendC::TPosition::GM, CubeFormat::ND, ATYPE, false; // 使用SparseMatmulType定义B矩阵的参数类型信息 using B_TYPE AscendC::SparseMatmulTypeAscendC::TPosition::GM, AscendC::TPosition::GM, CubeFormat::ND, BType, true; using C_TYPE AscendC::MatmulTypeAscendC::TPosition::GM, CubeFormat::ND, CType; using BIAS_TYPE AscendC::MatmulTypeAscendC::TPosition::GM, CubeFormat::ND, BiasType; AscendC::MatmulA_TYPE, B_TYPE, C_TYPE, BIAS_TYPE, CFG_MDL mm;设置索引矩阵通过SetSparseIndex接口传入稠密化过程中生成的索引矩阵。mm.SetTensorA(gm_a); // 设置左矩阵A mm.SetTensorB(gm_b); // 设置右矩阵B mm.SetSparseIndex(gm_index); // 传入稠密化过程中生成的索引矩阵 mm.SetBias(gm_bias); // 设置Bias完成矩阵乘操作在Kernel侧基于步骤4加载的索引矩阵完成矩阵乘操作。Matmul API内部完成对A矩阵的稠密化即根据索引矩阵从A矩阵的每4个元素中选择2个对应位置元素参与计算。// 调用Iterate和GetTensorC或IterateAll接口完成矩阵乘计算 while (mm.Iterate()) { mm.GetTensorC(gm_c); } // mm.IterateAll(gm_c); mm.End();参数说明表1SparseMatmulType类型参数说明参数说明POSITION内存逻辑位置。B矩阵仅支持设置为TPosition::GM。INDEX_POSITION索引矩阵内存逻辑位置。仅支持设置为TPosition::GM。CubeFormat数据的物理排布格式详细介绍请参考数据格式。B矩阵支持设置为CubeFormat::NDCubeFormat::NZ。TYPEB矩阵仅支持设置为int8_t数据类型。ISTRANS是否开启矩阵转置的功能。当前只支持取值为true表示开启矩阵转置的功能。LAYOUT表征数据的排布。Sparse Matmul场景仅支持取值为LAYOUT::NONE。NONE默认值表示不使用BatchMatmul。IBSHARE是否开启IBShareIntraBlock Share。IBShare的功能是能够复用L1 Buffer上相同的A矩阵或B矩阵数据。当A矩阵和B矩阵同时开启IBShare时表示L1 Buffer上的A矩阵和B矩阵同时复用。Sparse Matmul场景当前仅支持该参数取值为false表示不开启IBShare。使用场景左矩阵A为稀疏矩阵、右矩阵B为4:2稠密化后的矩阵的Matmul计算场景。约束说明该场景仅支持MDL模板下的纯Cube模式只有矩阵计算。通过SetSparseIndex接口传入的索引矩阵只支持int8数据类型和NZ数据排布格式。原始稀疏矩阵B中每4个元素中应保证最多2个非零元素即最少2个零元素如果存在3个或更多非零元素则仅使用前2个非零元素。M、K、N中的任意一个值不能为0。调用示例Sparse Matmul场景的完整样例请参考Sparse Matmul场景的算子样例。【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

AWS Service Operator 与 CloudFormation 集成:完整资源编排指南

AWS Service Operator 与 CloudFormation 集成:完整资源编排指南

AWS Service Operator 与 CloudFormation 集成:完整资源编排指南 【免费下载链接】aws-service-operator AWS Service Operator allows you to create AWS resources using kubectl. 项目地址: https://gitcode.com/gh_mirrors/aw/aws-service-operator AWS …

2026/7/29 22:21:35 阅读更多 →
解决Flynt转换难题:常见错误与解决方案全解析

解决Flynt转换难题:常见错误与解决方案全解析

解决Flynt转换难题:常见错误与解决方案全解析 【免费下载链接】flynt A tool to automatically convert old string literal formatting to f-strings 项目地址: https://gitcode.com/gh_mirrors/fly/flynt 你是否在使用Flynt工具将Python代码中的旧式字符串…

2026/7/29 20:55:09 阅读更多 →
提升思维技能:批判性、系统性与创造性思维训练指南

提升思维技能:批判性、系统性与创造性思维训练指南

1. 思维技能的本质与价值思维技能就像大脑的操作系统,它决定了我们如何处理信息、解决问题和做出决策。在这个信息爆炸的时代,拥有高效的思维技能比掌握具体知识更为重要。我从事思维训练工作多年,发现大多数人从未系统学习过如何思考&#x…

2026/7/29 19:07:32 阅读更多 →

最新新闻

179、感知质量指标进化:LPIPS、NIQE与PIQE的深度学习驱动评价

179、感知质量指标进化:LPIPS、NIQE与PIQE的深度学习驱动评价

179、感知质量指标进化:LPIPS、NIQE与PIQE的深度学习驱动评价 去年在调试一款旗舰手机的后置主摄夜景模式时,我遇到了一个让人抓狂的问题:PSNR和SSIM指标都显示“优秀”,但产品经理和用户反馈都说“照片看起来怪怪的”。具体来说,夜景照片的噪点被降得很干净,但建筑物边缘…

2026/7/30 19:17:00 阅读更多 →
如何在Linux桌面无缝运行Android应用:Waydroid容器化方案终极指南

如何在Linux桌面无缝运行Android应用:Waydroid容器化方案终极指南

如何在Linux桌面无缝运行Android应用:Waydroid容器化方案终极指南 【免费下载链接】waydroid Waydroid uses a container-based approach to boot a full Android system on a regular GNU/Linux system like Ubuntu. 项目地址: https://gitcode.com/gh_mirrors/w…

2026/7/30 19:17:00 阅读更多 →
NIS2 指令下 AI 威胁驱动中小企业邮件安全合规防护体系研究

NIS2 指令下 AI 威胁驱动中小企业邮件安全合规防护体系研究

摘要 欧盟 NIS2 网络安全指令落地实施后,邮件安全从单一 IT 运维事项上升至企业董事会合规责任范畴。本文以 Kaseya 2026 年《Email security under NIS2》行业专项报道为核心实证素材,结合面向中小企业(SMB)与托管安全服务商&…

2026/7/30 19:17:00 阅读更多 →
180、色彩与纹理评价:DeltaE、CIEDE2000与纹理保真度量化

180、色彩与纹理评价:DeltaE、CIEDE2000与纹理保真度量化

180、色彩与纹理评价:DeltaE、CIEDE2000与纹理保真度量化 去年在调试某旗舰机型的夜景模式时,我遇到过一个让人抓狂的问题:算法团队交上来的版本,客观指标跑分漂亮得很,DeltaE 2000均值压到了1.2以下,但产品经理和评测媒体一致反馈“画面太假,像油画”。我盯着实验室的色…

2026/7/30 19:16:59 阅读更多 →
OpCore-Simplify:15分钟完成OpenCore EFI配置的黑苹果终极解决方案

OpCore-Simplify:15分钟完成OpenCore EFI配置的黑苹果终极解决方案

OpCore-Simplify:15分钟完成OpenCore EFI配置的黑苹果终极解决方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的黑苹果配置…

2026/7/30 19:16:59 阅读更多 →
轻小说打包器终极指南:3分钟学会制作精美EPUB电子书

轻小说打包器终极指南:3分钟学会制作精美EPUB电子书

轻小说打包器终极指南:3分钟学会制作精美EPUB电子书 【免费下载链接】bili_novel_packer 轻小说打包器,采集哔哩轻小说网站(bilinovel.com linovelib.com)内容,打包成EPUB格式,支持封面、插图、目录,支持分卷合并。 …

2026/7/30 19:15:59 阅读更多 →

日新闻

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…

2026/7/30 0:00:13 阅读更多 →
如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 你是否曾经在浏览…

2026/7/30 0:00:13 阅读更多 →
“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

更多请点击: https://intelliparadigm.com 第一章:AI 教师备课辅助 AI 教师备课辅助系统正逐步成为教育数字化转型的核心支撑工具,它并非替代教师,而是通过语义理解、知识图谱与多模态生成能力,将教师从重复性劳动中解…

2026/7/30 0:00:13 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/29 22:18:20 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/29 15:00:03 阅读更多 →

月新闻