Ascend C矩阵位模式设置
# SetFmatrixBitMode【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品不支持Atlas A2 训练系列产品/Atlas A2 推理系列产品不支持Atlas 200I/500 A2 推理产品不支持Atlas 推理系列产品AI Core不支持Atlas 推理系列产品Vector Core不支持Atlas 训练系列产品不支持Kirin X90不支持Kirin 9030不支持功能说明用于调用LoadData卷积数据搬运时设置FeatureMap的属性描述。LoadData卷积数据搬运的模板参数isSetFMatrix设置为false时表示LoadData卷积数据搬运传入的FeatureMap的属性包括l1H、l1W、padList参数介绍参考表3 LoadData3DParamsV1结构体内参数说明、表4 LoadData3DParamsV2结构体内参数说明将不生效开发者需要通过该接口进行设置。函数原型__aicore__ inline void SetFmatrix(const SetFMatrixBitModeParams param, const FmatrixMode fmatrixMode)参数说明表1参数说明参数名称输入/输出含义fmatrixMode输入用于控制LoadData指令从left还是right寄存器获取信息。FmatrixMode类型定义如下。当前只支持FMATRIX_LEFT左右矩阵均使用该配置。enum class FmatrixMode : uint8_t {FMATRIX_LEFT 0,FMATRIX_RIGHT 1,};param输入类型为SetFMatrixBitMode具体参考表2。表2SetFMatrixBitMode类参数说明参数名称含义config0uint64_t类型与SetFMatrixBitModeConfig0位域bit-field结构体类型参数config0BitMode组成联合体union初始化为0可以使用类对象的GetConfig0()函数获取其值。config0BitModeSetFMatrixBitModeConfig0位域bit-field结构体类型参数参考表3与config0组成联合体union。SetFMatrixBitMode类参数设计思想说明联合体union是一种特殊的数据结构允许在相同的内存位置存储不同的数据类型。union的所有成员共享同一块内存空间大小由最大成员决定同一时间只能使用一个成员。位域bit-field是一种特殊的类成员允许精确控制结构体中成员变量所占用的内存位数。结构体中成员变量从上到下对应内存中从低位到高位。SetFMatrixBitMode类使用union与bit-field方法采用bit位表达参数类型使用bit-field结构体自动处理入参的bit位数并利用union的特性实现多参数融合传递仅需传递一个入参即可包含全部所需信息对应底层接口仅需要接收一个参数。同时当需要修改参数中某一bit位的值时仅通过循环和位运算即可实现不需要重新传入参数减少了scalar计算实现性能提升。SetFMatrixBitMode类可以直接使用LoadData3DParamsV2结构体类型对象初始化template typename T __aicore__ inline SetFMatrixBitModeParams(const LoadData3DParamsV2T loadData3DParams_);也可以使用各参数的Set函数修改参数值并且由于使用了联合体还可以对config0直接进行逐bit位修改来修改参数。表3SetFMatrixBitModeConfig0结构体参数说明参数名称含义l1H源操作数height取值范围l1H∈[1, 32767]。该参数是位域结构体的最低位参数占用16bit可以使用SetFMatrixBitMode类对象的SetL1H()函数设置其值。l1W源操作数width取值范围l1W∈[1, 32767]。该参数是位域结构体的第二低位参数占用16bit可以使用SetFMatrixBitMode类对象的SetL1W()函数设置其值。padList0对应表LoadData3DParamsV2结构体内参数说明中padding列表中的padding_left值取值范围[0,255]。默认为0。该参数是位域结构体的第三低位参数占用8bit可以使用SetFMatrixBitMode类对象的SetPadList()函数设置其值。padList1对应表1中padding列表中的padding_right值取值范围[0,255]。默认为0。该参数是位域结构体的第四低位参数占用8bit可以使用SetFMatrixBitMode类对象的SetPadList()函数设置其值。padList2对应表1中padding列表中的padding_top值取值范围[0,255]。默认为0。该参数是位域结构体的第五低位参数占用8bit可以使用SetFMatrixBitMode类对象的SetPadList()函数设置其值。padList3对应表1中padding列表中的padding_bottom值取值范围[0,255]。默认为0。该参数是位域结构体的最高位参数占用8bit可以使用SetFMatrixBitMode类对象的SetPadList()函数设置其值。返回值说明无约束说明该接口需要配合LoadData卷积数据搬运接口一起使用需要在LoadData卷积数据搬运接口之前调用。操作数地址对齐要求请参见通用地址对齐约束。调用示例AscendC::TPipe pipe; AscendC::TQueAscendC::TPosition::A1, 1 inQueueFmA1; AscendC::TQueAscendC::TPosition::A2, 1 inQueueFmA2; // weight queue AscendC::TQueAscendC::TPosition::B1, 1 inQueueWeB1; AscendC::TQueAscendC::TPosition::B2, 1 inQueueWeB2; pipe.InitBuffer(inQueueFmA1, 1, featureMapA1Size * sizeof(fmap_T)); pipe.InitBuffer(inQueueFmA2, 1, featureMapA2Size * sizeof(fmap_T)); pipe.InitBuffer(inQueueWeB1, 1, weightA1Size * sizeof(weight_T)); pipe.InitBuffer(inQueueWeB2, 1, weightB2Size * sizeof(weight_T)); pipe.InitBuffer(outQueueCO1, 1, dstCO1Size * sizeof(dstCO1_T)); AscendC::LocalTensorfmap_T featureMapA1 inQueueFmA1.DeQuefmap_T(); AscendC::LocalTensorweight_T weightB1 inQueueWeB1.DeQueweight_T(); AscendC::LocalTensorfmap_T featureMapA2 inQueueFmA2.AllocTensorfmap_T(); AscendC::LocalTensorweight_T weightB2 inQueueWeB2.AllocTensorweight_T(); uint16_t channelSize 32; uint16_t H 4, W 4; uint8_t Kh 2, Kw 2; uint16_t Cout 16; uint16_t C0, C1; uint8_t dilationH 2, dilationW 2; uint8_t padList[PAD_SIZE] {0, 0, 0, 0}; AscendC::SetFmatrix(H, W, padList, FmatrixMode::FMATRIX_LEFT); /* SetFMatrixBitModeParams param; param.SetL1H(H); param.SetL1W(W); param.SetPadList(padList); AscendC::SetFmatrix(param, FmatrixMode::FMATRIX_LEFT); */ AscendC::SetLoadDataPaddingValue(0); AscendC::SetLoadDataRepeat({0, 1, 0}); AscendC::SetLoadDataBoundary((uint32_t)0); static constexpr AscendC::IsResetLoad3dConfig LOAD3D_CONFIG {false,false}; AscendC::LoadDatafmap_T, LOAD3D_CONFIG(featureMapA2, featureMapA1, { padList, H, W, channelSize, k, howoRound, 0, 0, 1, 1, Kw, Kh, dilationW, dilationH, false, false, 0 }); AscendC::LoadData(weightB2, weightB1, { 0, weRepeat, 1, 0, 0, false, 0 }); inQueueFmA2.EnQuefmap_T(featureMapA2); inQueueWeB2.EnQueweight_T(weightB2); inQueueFmA1.FreeTensor(featureMapA1); inQueueWeB1.FreeTensor(weightB1);【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

C语言从入门到精通:内存管理、指针操作与系统编程实战指南

C语言从入门到精通:内存管理、指针操作与系统编程实战指南

为什么C语言在2024年依然值得学习?当Python、JavaScript等现代语言大行其道时,很多人认为C语言已经过时。但真相是:C语言依然是系统编程、嵌入式开发、操作系统内核等领域的基石语言。那些号称"3天学会"的教程往往只教语法皮毛&…

2026/7/16 22:44:55阅读更多 →
C++并发调优实战:从硬件缓存到无锁编程的性能优化指南

C++并发调优实战:从硬件缓存到无锁编程的性能优化指南

1. 项目概述:为什么C并发调优在今天依然至关重要在当今这个算力即生产力的时代,无论是高频交易系统、大型在线游戏服务器,还是实时音视频处理引擎,其核心性能的瓶颈往往不在于单核的运算速度,而在于如何高效、稳定地驾…

2026/7/16 22:44:55阅读更多 →
Windows 11下QMK固件编译完全指南:彻底解决WMIC缺失问题

Windows 11下QMK固件编译完全指南:彻底解决WMIC缺失问题

Windows 11下QMK固件编译完全指南:彻底解决WMIC缺失问题 【免费下载链接】qmk_firmware Open-source keyboard firmware for Atmel AVR and Arm USB families 项目地址: https://gitcode.com/GitHub_Trending/qm/qmk_firmware QMK固件编译是自定义机械键盘的…

2026/7/16 22:44:55阅读更多 →
C++单元测试框架GoogleTest从零安装到项目集成实战指南

C++单元测试框架GoogleTest从零安装到项目集成实战指南

1. 项目概述:为什么你需要一个靠谱的单元测试框架?在C项目里摸爬滚打这么多年,我见过太多因为一个不起眼的边界条件没处理好,导致线上服务半夜告警,全组人爬起来救火的场景。单元测试,说白了就是给代码上的…

2026/7/16 23:50:00阅读更多 →
Java项目实战:支付宝人脸核身接口的完整接入与业务集成

Java项目实战:支付宝人脸核身接口的完整接入与业务集成

1. 环境准备与基础配置第一次接触支付宝人脸核身接口时,我踩过不少坑。记得当时项目急着上线,结果因为密钥配置问题卡了两天。现在把这些经验整理出来,帮你少走弯路。1.1 企业账号注册与入驻首先得有个企业支付宝账号,个人开发者账…

2026/7/16 23:50:00阅读更多 →
一个免费的LangChain教程资料

一个免费的LangChain教程资料

一套非常完整的LangChain视频教程,从最基础的环境搭建,一直讲到复杂的项目实战,而且好像完全免费。 覆盖全链路:从入门到项目落地 这套教程最大的亮点就是体系化。它没有一上来就堆砌复杂的代码,而是按照实际开发的逻…

2026/7/16 23:50:00阅读更多 →
白嫖上千个AI实战课程资料,从入门到进阶全都,真是个AI宝藏

白嫖上千个AI实战课程资料,从入门到进阶全都,真是个AI宝藏

python编程、机器学习、深度学习、OpenCV(计算机视觉)、NLP(自然语言处理)、大模型、LangChain、GPT系列、各类项目实战案例。 智萃AIhttps://ai.aixinyike.com

2026/7/16 23:50:00阅读更多 →
工具说明书 - DB Browser for SQLite:从零到一的数据库可视化操作指南

工具说明书 - DB Browser for SQLite:从零到一的数据库可视化操作指南

1. 初识DB Browser for SQLiteSQLite作为轻量级数据库引擎,几乎存在于所有智能设备中。但直接用命令行操作SQLite,对新手来说就像面对没有仪表盘的汽车——功能强大却无从下手。这就是DB Browser for SQLite的价值所在,它给SQLite装上了可视化…

2026/7/16 23:50:00阅读更多 →
C/C++内存泄漏与死锁排查:从原理到实战的完整防御指南

C/C++内存泄漏与死锁排查:从原理到实战的完整防御指南

1. 项目概述:为什么C/C开发者必须掌握内存泄漏与死锁的排查? 在C/C的世界里摸爬滚打十几年,我见过太多项目因为两个“隐形杀手”而崩溃、性能骤降甚至直接宕机:内存泄漏和死锁。前者像慢性失血,程序运行越久&#xff0…

2026/7/16 23:45:00阅读更多 →
VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异

VSCode TypeScript 环境配置对比:全局安装 vs 项目本地安装的4个关键差异当你在VSCode中启动一个新的TypeScript项目时,第一个技术决策往往从安装方式开始。这个看似简单的选择——全局安装还是项目本地安装——实际上会深刻影响你的开发流程、团队协作和…

2026/7/16 8:28:11阅读更多 →
智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手

智慧树刷课插件:5分钟实现自动化学习的智能助手 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 智慧树刷课插件是一款专为智慧树在线教育平台设计的Chrome浏…

2026/7/16 6:53:04阅读更多 →
Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案

Steam创意工坊下载器WorkshopDL:跨平台游戏模组获取的终极解决方案 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在GOG或Epic Games Store购买了心仪的游戏…

2026/7/16 12:02:41阅读更多 →
A--10 Codex Review与GitHub PR工作流实战指南:从代码审查到安全合并

A--10 Codex Review与GitHub PR工作流实战指南:从代码审查到安全合并

摘要:本文系统讲解如何利用Codex App的Review功能与GitHub PR工作流,实现从代码修改到安全合并的完整流程。涵盖Review面板深度使用、/review命令实战、GitHub Connector配置、PR描述撰写技巧,以及常见问题排查方法。通过多个实战案例和流程图,帮助开发者建立高效的AI辅助代…

2026/7/16 0:00:38阅读更多 →
遗传算法解5皇后问题:从Hello World到工业优化的进化实验室

遗传算法解5皇后问题:从Hello World到工业优化的进化实验室

1. 项目概述:为什么用遗传算法解5皇后问题,而不是直接回溯?我带过十几届算法课,也给不少初创团队做过AI架构咨询。每次讲到组合优化问题,学生和工程师的第一反应永远是“写个回溯试试”。这没错——55棋盘上找所有合法…

2026/7/16 0:00:38阅读更多 →
5.1V稳压管输出为何只有4.7V?工作电流与负载影响分析

5.1V稳压管输出为何只有4.7V?工作电流与负载影响分析

前几天调试一个简单的电源模块,用到了5.1V稳压管。电路接好,上电测试,万用表一量——输出居然只有4.7V。第一反应是稳压管坏了,换了一个新的,结果还是4.7V。这让我想起很多初学者都会遇到的困惑:明明标称5.…

2026/7/16 0:00:38阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/16 20:13:14阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/16 8:58:42阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/16 17:10:26阅读更多 →