当前位置: 首页 > news >正文

CANN/asc-devkit: Reg矢量存储对齐接口

asc_storealign

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

产品支持情况

产品是否支持
Ascend 950PR/Ascend 950DT

功能说明

reg计算数据搬运接口,适用于从矢量数据寄存器连续对齐搬出到UB的场景,接口使用repeat stride模式。

函数原型

// repeat stride模式搬出 __simd_callee__ inline void asc_storealign(__ubuf__ int8_t* dst_align32b, vector_int8_t src, uint16_t block_stride, uint16_t repeat_stride, vector_bool mask) __simd_callee__ inline void asc_storealign(__ubuf__ uint8_t* dst_align32b, vector_uint8_t src, uint16_t block_stride, uint16_t repeat_stride, vector_bool mask) __simd_callee__ inline void asc_storealign(__ubuf__ fp8_e5m2_t* dst_align32b, vector_fp8_e5m2_t src, uint16_t block_stride, uint16_t repeat_stride, vector_bool mask) __simd_callee__ inline void asc_storealign(__ubuf__ fp8_e4m3fn_t* dst_align32b, vector_fp8_e4m3fn_t src, uint16_t block_stride, uint16_t repeat_stride, vector_bool mask) __simd_callee__ inline void asc_storealign(__ubuf__ hifloat8_t* dst_align32b, vector_hifloat8_t src, uint16_t block_stride, uint16_t repeat_stride, vector_bool mask) __simd_callee__ inline void asc_storealign(__ubuf__ fp8_e8m0_t* dst_align32b, vector_fp8_e8m0_t src, uint16_t block_stride, uint16_t repeat_stride, vector_bool mask) __simd_callee__ inline void asc_storealign(__ubuf__ int16_t* dst_align32b, vector_int16_t src, uint16_t block_stride, uint16_t repeat_stride, vector_bool mask) __simd_callee__ inline void asc_storealign(__ubuf__ uint16_t* dst_align32b, vector_uint16_t src, uint16_t block_stride, uint16_t repeat_stride, vector_bool mask) __simd_callee__ inline void asc_storealign(__ubuf__ half* dst_align32b, vector_half src, uint16_t block_stride, uint16_t repeat_stride, vector_bool mask) __simd_callee__ inline void asc_storealign(__ubuf__ bfloat16_t* dst_align32b, vector_bfloat16_t src, uint16_t block_stride, uint16_t repeat_stride, vector_bool mask) __simd_callee__ inline void asc_storealign(__ubuf__ int32_t* dst_align32b, vector_int32_t src, uint16_t block_stride, uint16_t repeat_stride, vector_bool mask) __simd_callee__ inline void asc_storealign(__ubuf__ uint32_t* dst_align32b, vector_uint32_t src, uint16_t block_stride, uint16_t repeat_stride, vector_bool mask) __simd_callee__ inline void asc_storealign(__ubuf__ float* dst_align32b, vector_float src, uint16_t block_stride, uint16_t repeat_stride, vector_bool mask) // repeat stride模式搬出,同时开启硬件自动Post Update模式 __simd_callee__ inline void asc_storealign_postupdate(__ubuf__ int8_t* dst_align32b, vector_int8_t src, uint16_t block_stride, uint16_t repeat_stride, vector_bool mask) __simd_callee__ inline void asc_storealign_postupdate(__ubuf__ uint8_t* dst_align32b, vector_uint8_t src, uint16_t block_stride, uint16_t repeat_stride, vector_bool mask) __simd_callee__ inline void asc_storealign_postupdate(__ubuf__ fp8_e5m2_t* dst_align32b, vector_fp8_e5m2_t src, uint16_t block_stride, uint16_t repeat_stride, vector_bool mask) __simd_callee__ inline void asc_storealign_postupdate(__ubuf__ fp8_e4m3fn_t* dst_align32b, vector_fp8_e4m3fn_t src, uint16_t block_stride, uint16_t repeat_stride, vector_bool mask) __simd_callee__ inline void asc_storealign_postupdate(__ubuf__ hifloat8_t* dst_align32b, vector_hifloat8_t src, uint16_t block_stride, uint16_t repeat_stride, vector_bool mask) __simd_callee__ inline void asc_storealign_postupdate(__ubuf__ fp8_e8m0_t* dst_align32b, vector_fp8_e8m0_t src, uint16_t block_stride, uint16_t repeat_stride, vector_bool mask) __simd_callee__ inline void asc_storealign_postupdate(__ubuf__ int16_t* dst_align32b, vector_int16_t src, uint16_t block_stride, uint16_t repeat_stride, vector_bool mask) __simd_callee__ inline void asc_storealign_postupdate(__ubuf__ uint16_t* dst_align32b, vector_uint16_t src, uint16_t block_stride, uint16_t repeat_stride, vector_bool mask) __simd_callee__ inline void asc_storealign_postupdate(__ubuf__ half* dst_align32b, vector_half src, uint16_t block_stride, uint16_t repeat_stride, vector_bool mask) __simd_callee__ inline void asc_storealign_postupdate(__ubuf__ bfloat16_t* dst_align32b, vector_bfloat16_t src, uint16_t block_stride, uint16_t repeat_stride, vector_bool mask) __simd_callee__ inline void asc_storealign_postupdate(__ubuf__ int32_t* dst_align32b, vector_int32_t src, uint16_t block_stride, uint16_t repeat_stride, vector_bool mask) __simd_callee__ inline void asc_storealign_postupdate(__ubuf__ uint32_t* dst_align32b, vector_uint32_t src, uint16_t block_stride, uint16_t repeat_stride, vector_bool mask) __simd_callee__ inline void asc_storealign_postupdate(__ubuf__ float* dst_align32b, vector_float src, uint16_t block_stride, uint16_t repeat_stride, vector_bool mask)

参数说明

参数名输入/输出描述
dst_align32b输出目的操作数(矢量)的起始地址。
src输入源操作数(矢量数据寄存器)。
block_stride输入源操作数单次迭代内不同DataBlock间地址步长。
repeat_stride输入源操作数相邻迭代间相同DataBlock的地址步长。
mask输入源操作数掩码(掩码寄存器),用于指示在计算过程中哪些元素参与计算。对应位置为1时参与计算,为0时不参与计算。mask未筛选的元素在输出中置零。

矢量数据寄存器和掩码寄存器的详细说明请参见reg数据类型定义.md。

返回值说明

流水类型

PIPE_V

约束说明

调用示例

// asc_storealign __ubuf__ int8_t* dst_align32b; vector_int8_t src; uint16_t block_stride; uint16_t repeat_stride; vector_bool mask = asc_create_mask_b8(PAT_ALL); asc_storealign(dst_align32b, src, block_stride, repeat_stride, mask); // asc_storealign_postupdate __ubuf__ int8_t* dst_align32b; vector_int8_t src; uint16_t block_stride; uint16_t repeat_stride; vector_bool mask = asc_create_mask_b8(PAT_ALL); asc_storealign_postupdate(dst_align32b, src, block_stride, repeat_stride, mask);

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

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.gsyq.cn/news/1464868.html

相关文章:

  • PDMS管道设计效率翻倍:手把手教你安装NakiPipeline插件(附常见错误排查)
  • 2026年6月钢格板厂家推荐:五大专业评测工程荷载防变形性价比高价格 - 品牌推荐
  • DeepSeek-R1实战避坑指南:MoE架构、Tokenizer与Agent工程陷阱
  • STM32F103裸机移植CanFestival-3全记录:从源码下载到心跳包测试(附对象字典生成工具避坑)
  • 从智能车竞赛到DIY电源:固态电容替换液态电容的实战避坑指南(附发热对比测试)
  • Android-DecoView-charting常见问题解答:从入门到精通的10个实用技巧
  • 从Jupyter到生产环境:机器学习模型服务化实战指南
  • 利用快马平台快速构建雨燕直播原型:一小时搭建可演示的WebRTC直播应用
  • 避坑指南:Zynq AXI GPIO中断配置的5个常见错误与解决方法(附SDK代码对比)
  • 大语言模型的类生命行为:代谢、边界、意图与创伤四大体征
  • 终极指南:在NPU、GPU和CPU上高效部署PyTorch-NPU/bert_base_cased模型
  • PyTorch GPU环境避坑指南:从CUDNN_STATUS_NOT_INITIALIZED到torch.cuda.is_available()为True
  • RAG工程实战:从PDF文档到精准问答的完整流水线
  • 杜芬与幂律振子的Newmarkβ和RK4数值仿真MATLAB工程包(含可调参数代码+教学PPT)
  • 2026年石家庄空调移机哪家好?5家专业公司推荐 - 本地品牌推荐
  • C#上位机开发:用CX-Compolet搞定欧姆龙NX系列PLC通讯(Ethernet/IP协议)
  • XB1手柄电量监控:告别游戏中断的终极解决方案
  • HsMod终极指南:55项功能深度解析与配置教程
  • Kronos金融AI实战指南:5步构建智能量化交易系统
  • 告别ST缺货烦恼:手把手教你用J-Flash给华大HC32F460烧录程序(附完整算法文件包)
  • restic 0.18.1 官方版下载(夸克网盘+百度网盘,SHA256校验)
  • MATLAB纯脚本实现PWM波生成与可视化(含实操录像和逐行中文注释)
  • XAI实战三剑客:SHAP、Captum与DICE在金融、医疗、自动驾驶中的落地
  • 别再为‘Invalid date’头疼了!手把手排查Moment.js日期解析的5个常见坑
  • 高性能文献管理架构:Zotero Style插件深度集成方案实现指南
  • STM32开发踩坑记:VSCode+CMake在Windows下编译失败?可能是这个参数没设对
  • 基于SSM与Vue实现的轻量级OA办公系统(含完整数据库脚本与可运行前后端工程)
  • 从APK Analyzer的Raw/Download Size差异,到实战配置android:extractNativeLibs优化包体积
  • 3分钟实现小爱音箱无限听歌:XiaoMusic开源项目的完整部署与配置指南
  • HT逻辑与自动定理证明:从基础到实践