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

CANN/asc-devkit SIMD矢量比较函数asc_le文档

asc_le

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

产品支持情况

产品是否支持
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品

功能说明

按元素判断src0 <= src1是否成立,若成立则输出结果为1,否则为0。每个元素的比较结果占1个bit。 当结果输出到寄存器中时,可在计算完成后调用asc_get_cmp_mask获取比较结果。

函数原型

  • 高维切分计算

    // 结果输出到寄存器中 __aicore__ inline void asc_le(__ubuf__ half* src0, __ubuf__ half* src1, uint8_t repeat, uint8_t dst_block_stride, uint8_t src0_block_stride, uint8_t src1_block_stride, uint8_t dst_repeat_stride, uint8_t src0_repeat_stride, uint8_t src1_repeat_stride) __aicore__ inline void asc_le(__ubuf__ float* src0, __ubuf__ float* src1, uint8_t repeat, uint8_t dst_block_stride, uint8_t src0_block_stride, uint8_t src1_block_stride, uint8_t dst_repeat_stride, uint8_t src0_repeat_stride, uint8_t src1_repeat_stride) // 结果输出到目标地址中 __aicore__ inline void asc_le(__ubuf__ uint8_t* dst, __ubuf__ half* src0, __ubuf__ half* src1, uint8_t repeat, uint8_t dst_block_stride, uint8_t src0_block_stride, uint8_t src1_block_stride, uint8_t dst_repeat_stride, uint8_t src0_repeat_stride, uint8_t src1_repeat_stride) __aicore__ inline void asc_le(__ubuf__ uint8_t* dst, __ubuf__ float* src0, __ubuf__ float* src1, uint8_t repeat, uint8_t dst_block_stride, uint8_t src0_block_stride, uint8_t src1_block_stride, uint8_t dst_repeat_stride, uint8_t src0_repeat_stride, uint8_t src1_repeat_stride)
  • 同步计算

    // 结果输出到寄存器中 __aicore__ inline void asc_le_sync(__ubuf__ half* src0, __ubuf__ half* src1, uint8_t repeat, uint8_t dst_block_stride, uint8_t src0_block_stride, uint8_t src1_block_stride, uint8_t dst_repeat_stride, uint8_t src0_repeat_stride, uint8_t src1_repeat_stride) __aicore__ inline void asc_le_sync(__ubuf__ float* src0, __ubuf__ float* src1, uint8_t repeat, uint8_t dst_block_stride, uint8_t src0_block_stride, uint8_t src1_block_stride, uint8_t dst_repeat_stride, uint8_t src0_repeat_stride, uint8_t src1_repeat_stride) // 结果输出到目标地址中 __aicore__ inline void asc_le_sync(__ubuf__ uint8_t* dst, __ubuf__ half* src0, __ubuf__ half* src1, uint8_t repeat, uint8_t dst_block_stride, uint8_t src0_block_stride, uint8_t src1_block_stride, uint8_t dst_repeat_stride, uint8_t src0_repeat_stride, uint8_t src1_repeat_stride) __aicore__ inline void asc_le_sync(__ubuf__ uint8_t* dst, __ubuf__ float* src0, __ubuf__ float* src1, uint8_t repeat, uint8_t dst_block_stride, uint8_t src0_block_stride, uint8_t src1_block_stride, uint8_t dst_repeat_stride, uint8_t src0_repeat_stride, uint8_t src1_repeat_stride)

参数说明

参数名输入/输出描述
dst输出目的操作数(矢量)的起始地址。
src0输入源操作数(矢量)的起始地址。
src1输入源操作数(矢量)的起始地址。
repeat输入迭代次数。
dst_block_stride输入目的操作数单次迭代内不同DataBlock间地址步长。
src0_block_stride输入源操作数0单次迭代内不同DataBlock间地址步长。
src1_block_stride输入源操作数1单次迭代内不同DataBlock间地址步长。
dst_repeat_stride输入目的操作数相邻迭代间相同DataBlock的地址步长。
src0_repeat_stride输入源操作数0相邻迭代间相同DataBlock的地址步长。
src1_repeat_stride输入源操作数1相邻迭代间相同DataBlock的地址步长。

返回值说明

流水类型

PIPE_V

约束说明

  • 操作数地址重叠约束请参考通用地址重叠约束。
  • dst、src0、src1的起始地址需要32字节对齐。
  • dst按照小端顺序排序成二进制结果,对应src中相应位置的数据比较结果。
  • 当结果输出到目的地址中时,mask参数不生效。
  • 使用寄存器形式的接口时,需要配合asc_get_cmp_mask获取比较结果。
  • 当结果输出到寄存器中时,固定处理256B的数据,repeat字段不生效。
  • 当结果输出到寄存器中时,若mask某bit位为0,对应输出寄存器的bit位的值不会改变时,最终结果可能会有上一次计算的残留。如果要初始化寄存器,可以调用asc_set_cmp_mask接口。

调用示例

// 输入固定为128个元素 constexpr uint32_t total_length = 128; __ubuf__ uint8_t dst[total_length / 8]; __ubuf__ half src0[total_length]; __ubuf__ half src1[total_length]; uint8_t repeat = 1; uint8_t dst_block_stride = 1; uint8_t src0_block_stride = 1; uint8_t src1_block_stride = 1; uint8_t dst_repeat_stride = 8; uint8_t src0_repeat_stride = 8; uint8_t src1_repeat_stride = 8; …… // 数据搬运及同步操作 // 结果存入寄存器,通过寄存器获取比较结果 asc_le(src0, src1, repeat, dst_block_stride, src0_block_stride, src1_block_stride, dst_repeat_stride, src0_repeat_stride, src1_repeat_stride); …… // 同步操作 asc_get_cmp_mask(dst); // 读取结果 // 结果输出到目标地址中 asc_le(dst, src0, src1, repeat, dst_block_stride, src0_block_stride, src1_block_stride, dst_repeat_stride, src0_repeat_stride, src1_repeat_stride);

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

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

http://www.jsqmd.com/news/956727/

相关文章:

  • NuExtract-1.5-smol滑动窗口技术揭秘:超长文本处理的高效解决方案
  • 紧急修复!Tails 7.8.1 发布,修复 Linux 内核与 Tor 客户端安全漏洞
  • 科研工作者的知识管理革命:用Obsidian模板3天建立高效研究系统
  • HR管理和本体层:人员管理与跨系统打通的关键一步
  • Ultralytics YOLO关键点检测:高效数据集标注与实战指南
  • 2026年6月无人机培训评估决策指南:关键指标解析与热门优选 - 新闻快传
  • pandas_ta 库指标分类
  • 六轴机械臂C++逆解程序:输入位姿输出全部8组关节角
  • SGuard限制器:5分钟解决腾讯游戏卡顿的终极方案
  • 高效B站视频下载实战指南:开源工具BilibiliDown深度解析
  • 从酒鬼掉悬崖到推荐系统:用Python模拟Random Walk算法,理解PageRank的基石
  • AI农业革命:数字田园的下一个十年
  • Apollo-6B论文精读:轻量化医疗LLM的创新突破与未来方向 [特殊字符]
  • 性能异常排查:复杂 CSS 转换动画在低端渲染引擎下导致黄金比例应用组件卡帧
  • 从模组混乱到游戏畅玩:BG3 Mod Manager 终极指南
  • 5分钟完成Mac Boot Camp驱动自动安装:Brigadier终极解决方案
  • 如何一键备份QQ空间历史说说:开源工具的完整指南
  • 【信息科学与工程学】计算机科学与自动化——第十篇 芯片设计30 芯片中的数学5
  • 从录制到去重,一套直播素材AI处理流程分享
  • 卫星多天线数据传输下水库水情测报编解码技术与方法解析【附数据】
  • SpaceX启动IPO路演,估值近2万亿美元,马斯克或成首个万亿富翁?
  • 晟雅泰一站式供应全系列存储芯片及硬盘存储卡的品牌型号速查表 - 新闻快传
  • 为什么你的B站学习效率只有别人的一半?这款智能字幕工具让你3倍速获取知识
  • 数字隔离芯片选型与PCB设计实战:电容、变压器、RF技术深度对比
  • 2026年正规的武汉CAAC无人机执照培训机构推荐-慧航飞行 - 新闻快传
  • 如何利用SciCore-Omics实现组织学图像、转录组学和自然语言的联合推理:终极指南
  • 国产蠕动泵哪个品牌流量精度高?从0.1%精度到3年质保:默兰德蠕动泵的技术特点 - 品牌推荐大师1
  • 北京无区域公司注册代办机构排行及核心服务 - 互联网科技品牌测评
  • 构建支持跨平台统一清洗与向量化的多模态数据框架:Pinecone ,与 Chroma 对比分析
  • Collect-IPTV