Pull Request已成功合入, 合并人@CANN-robot
(感谢 guojianyang 的贡献)变更摘要
此 PR 主要包含两项 C API 功能扩展:一是新增标量计算指令 asc_ld_dev,用于从设备全局内存(__gm__)中加载数据,支持 int8_t/uint8_t 至 int64_t/uint64_t 共 8 种数据类型;二是为 asc_duplicate 和 asc_duplicate_merge 向量指令新增 HIGHEST 位置模式重载,允许以向量中最高位元素进行复制操作,覆盖全部 12 种向量数据类型。同时,asc_position_mode 枚举新增 HIGHEST 成员及对应的 ASC_POSITION_HIGHEST 常量。
主要改动
-
新增
asc_ld_dev标量加载指令:在公开头文件scalar_compute.h中声明了 8 个重载,内部通过新增的asc_ld_dev_impl.h实现,统一委托底层ld_dev指令(偏移量为 0),有符号类型通过static_cast进行带符号扩展返回int64_t,无符号类型返回uint64_t。 -
asc_duplicate支持 HIGHEST 模式:在reg_vector.h声明、vector_compute_impl.h转发、asc_duplicate_impl.h实现三层分别新增接受std::integral_constant<asc_position_mode, asc_position_mode::HIGHEST>参数的重载,调用底层vdup时传入POS_HIGHEST和MODE_ZEROING。 -
asc_duplicate_merge支持 HIGHEST 模式:同样三层新增重载,调用vdup时传入POS_HIGHEST和MODE_MERGING,与普通asc_duplicate的归零模式形成互补。 -
asc_position_mode枚举扩展:在enum.h中新增HIGHEST成员,并定义ASC_POSITION_HIGHEST编译期常量,供接口层使用std::integral_constant进行重载派发。 -
新增对应单元测试:
test_asc_ld_dev.cpp通过 mockld_dev验证各类型调用的偏移量和返回值符号扩展正确性;test_asc_duplicate.cpp新增TEST_VECTOR_COMPUTE_DUPLICATE_HIGHEST_INSTR和TEST_VECTOR_COMPUTE_DUPLICATE_MERGE_HIGHEST_INSTR两组宏测试,验证POS_HIGHEST位置和对应模式参数传递正确。


描述
新增asc_load_dev,提供不经过dcache的gm标量读功能,和duplicate的highest模式。
关联的Issue
NA
测试
自验证通过
文档更新
补充asc_load_dev.md和asc_duplicate_highest.md
类型标签