news 2026/7/16 11:21:24

CANN/asc-devkit:RegLayout寄存器布局

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/asc-devkit:RegLayout寄存器布局

RegLayout

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

源操作数和目的操作数位宽不同时,单条指令计算量以位宽更大的数据类型为准,RegLayout用于控制位宽小的元素在寄存器中的排布方式。更多特性说明请参考Cast。

enum class RegLayout { UNKNOWN = -1, ZERO, // 大转小(dst位宽小):结果位于dst组内第0个位宽小位置;小转大(src位宽小):选取src组内第0个位宽小元素 ONE, // 大转小(dst位宽小):结果位于dst组内第1个位宽小位置;小转大(src位宽小):选取src组内第1个位宽小元素 TWO, // 大转小(dst位宽小):结果位于dst组内第2个位宽小位置;小转大(src位宽小):选取src组内第2个位宽小元素 THREE // 大转小(dst位宽小):结果位于dst组内第3个位宽小位置;小转大(src位宽小):选取src组内第3个位宽小元素 };

源操作数与目的操作数类型位宽不同时,可以分为四种情况,用户可以根据实际场景选择对应的RegLayout,其中,mask的有效情况均以输入数据位宽为准。

Cast在不同RegLayout取值下的数据排布伪代码如下,其中layout参数与枚举值的映射关系为:0对应RegLayout::ZERO,1对应RegLayout::ONE,2对应RegLayout::TWO,3对应RegLayout::THREE:

import numpy as np # MaskReg行为:MaskReg长度为256bit,每4bit最低位为1时选取对应位置的b32元素进行转换。 def cast_b32_to_b16(src, dst, layout): dst[:] = 0 dst[layout:128:2] = src[0:64].astype(np.int16) # MaskReg行为:MaskReg长度为256bit,每2bit最低位为1时选取对应位置的b16元素进行转换。 def cast_b16_to_b32(src, dst, layout): dst[0:64] = src[layout:128:2].astype(np.int32) # MaskReg行为:MaskReg长度为256bit,每4bit最低位为1时选取对应位置的b32元素进行转换。 def cast_b32_to_b8(src, dst, layout): dst[:] = 0 dst[layout:256:4] = src[0:64].astype(np.uint8) # MaskReg行为:MaskReg长度为256bit,每1bit为1时选取对应位置的b8元素进行转换。 def cast_b8_to_b32(src, dst, layout): dst[0:64] = src[layout:256:4].astype(np.int32) # MaskReg行为:MaskReg长度为256bit,每4bit最低位为1时选取对应位置连续的两个b16元素进行转换。 def cast_b16_to_b4(src, dst, layout): dst[:] = 0 dst[2*layout : 512 : 8] = src[0:128:2].astype(np.uint8) dst[2*layout + 1: 512 : 8] = src[1:128:2].astype(np.uint8) # MaskReg行为:MaskReg长度为256bit,每1bit为1时选取对应位置连续的两个b4元素进行转换。 def cast_b4_to_b16(src, dst, layout): dst[0:128:2] = src[2*layout : 512 : 8].astype(np.int16) dst[1:128:2] = src[2*layout + 1: 512 : 8].astype(np.int16)

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/16 11:19:56

AR桌面开发实战:Unity3D实现与性能优化

1. AR桌面(launcher)实现背景与技术选型2023年12月28日这个时间节点,AR技术在消费级设备上的应用已经进入爆发期。不同于传统手机launcher的二维平面交互,AR桌面需要解决三维空间中的界面布局、手势识别和虚实融合等核心问题。我在实际开发中发现&#x…

作者头像 李华
网站建设 2026/7/16 11:19:51

Codex + Git worktree:AI开发环境的配置即代码实践

1. 为什么“用顺”和“真正高手”之间隔着一个 worktree Codex App Windows 版本上线后,我看到太多人卡在同一个地方:装好了、能打开、能连上模型、写两行代码也跑得通——但只要项目一复杂,立刻陷入泥潭。改个配置要重启整个应用&#xff0c…

作者头像 李华
网站建设 2026/7/16 11:19:50

告别手动编写!openeuler/splitter gen命令自动生成SDF文件教程

告别手动编写!openeuler/splitter gen命令自动生成SDF文件教程 【免费下载链接】splitter Splitting openEuler packages into multiple slices for building distroless images. 项目地址: https://gitcode.com/openeuler/splitter 前往项目官网免费下载&am…

作者头像 李华
网站建设 2026/7/16 11:19:35

WorkBuddy 终极教程(上):从安装到跑通第一个任务

本文配套录屏教程,建议边看文章边操作。每个步骤都标注了需要截图或录屏的位置,照着做就行。 写在前面 我花了半个月时间把 WorkBuddy 翻来覆去地用,从安装配置到自动化任务,踩了不少坑。这篇把我踩过的坑和摸出来的经验一次性整…

作者头像 李华
网站建设 2026/7/16 11:19:15

CANN/asc-devkit MakeTensorTrait API文档

MakeTensorTrait 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcod…

作者头像 李华