
aclnnRoll【免费下载链接】ops-math本项目是CANN提供的数学类基础计算算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-math产品支持情况产品是否支持Atlas A2 训练系列产品支持功能说明接口功能沿给定维度对输入 Tensor 执行循环位移。语义说明dims非空时shifts[i]作用于dims[i]对应维度。dims为空时先对输入按逻辑视图展平再执行一维 roll。重复维度会在 Host 侧归一化合并。函数原型aclnnStatus aclnnRollGetWorkspaceSize( const aclTensor* x, const aclIntArray* shifts, const aclIntArray* dims, aclTensor* out, uint64_t* workspaceSize, aclOpExecutor** executor)aclnnStatus aclnnRoll( void* workspace, uint64_t workspaceSize, aclOpExecutor* executor, aclrtStream stream)aclnnRollGetWorkspaceSize参数名输入/输出描述数据类型数据格式维度x输入输入张量uint8, int8, bfloat16, float16, float32, int32, uint32ND0-8 维shifts输入每个目标维度上的循环位移量aclIntArray*--dims输入循环位移维度可省略或传空数组aclIntArray*--out输出输出张量shape 和 dtype 与 x 一致与 x 相同ND0-8 维workspaceSize输出需要申请的 workspace 大小uint64_t*--executor输出执行器aclOpExecutor**--返回值aclnnStatus。第一段接口完成参数校验出现以下场景时返回错误ACLNN_ERR_PARAM_NULLPTRx、shifts、out、workspaceSize、executor为空。ACLNN_ERR_PARAM_INVALID输入或输出 dtype 不在支持范围内。输入与输出 dtype 不一致。输入或输出格式不是ND。输入与输出 shape 不一致。rank 大于 8。0 维输入时shifts长度不为 1 或dims非空。dims为空但shifts长度不为 1。dims非空但shifts与dims长度不一致。dims元素越界。aclnnRoll参数名输入/输出描述workspace输入Device 侧 workspace 地址workspaceSize输入Device 侧 workspace 大小executor输入执行器stream输入执行 stream约束说明仅支持ND。仅支持uint8、int8、bfloat16、float16、float32、int32、uint32。0 维输入时shifts长度必须为 1且dims为空。非连续输入会先整理为连续视图后执行。非连续输出会在算子结果生成后做回写。调用示例请参考 test_aclnn_roll.cpp。【免费下载链接】ops-math本项目是CANN提供的数学类基础计算算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-math创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考