昇腾C倒数函数API文档
Reciprocal
【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit
产品支持情况
功能说明
按元素取倒数,计算公式如下:
函数原型
tensor前n个数据计算
template <typename T, const ReciprocalConfig& config = DEFAULT_RECIPROCAL_CONFIG> __aicore__ inline void Reciprocal(const LocalTensor<T>& dst, const LocalTensor<T>& src, const int32_t& count)tensor高维切分计算
mask逐bit模式
template <typename T, bool isSetMask = true, const ReciprocalConfig& config = DEFAULT_RECIPROCAL_CONFIG> __aicore__ inline void Reciprocal(const LocalTensor<T>& dst, const LocalTensor<T>& src, uint64_t mask[], const uint8_t repeatTime, const UnaryRepeatParams& repeatParams)mask连续模式
template <typename T, bool isSetMask = true, const ReciprocalConfig& config = DEFAULT_RECIPROCAL_CONFIG> __aicore__ inline void Reciprocal(const LocalTensor<T>& dst, const LocalTensor<T>& src, uint64_t mask, const uint8_t repeatTime, const UnaryRepeatParams& repeatParams)
参数说明
表 1模板参数说明
表 2参数说明
返回值说明
无
约束说明
操作数地址对齐要求请参见通用地址对齐约束。
操作数地址重叠约束请参考通用地址重叠约束。
如果src中的数值为0,可能会产生未知结果。
使用Reciprocal时,half的算子结果对比误差不满足双千分之一的要求,float的算子结果对比误差不满足双万分之一的要求,如果需要高精度,建议使用Div替代实现。
针对Ascend 950PR/Ascend 950DT,uint64_t数据类型仅支持tensor前n个数据计算接口。
调用示例
本样例的srcLocal和dstLocal均为half类型。
更多样例可参考LINK。
tensor高维切分计算样例-mask连续模式
uint64_t mask = 256 / sizeof(half); // repeatTime = 4, 128 elements one repeat, 512 elements total // dstBlkStride, srcBlkStride = 1, no gap between blocks in one repeat // dstRepStride, srcRepStride = 8, no gap between repeats AscendC::Reciprocal(dstLocal, srcLocal, mask, 4, { 1, 1, 8, 8 });tensor高维切分计算样例-mask逐bit模式
uint64_t mask[2] = { UINT64_MAX, UINT64_MAX }; // repeatTime = 4, 128 elements one repeat, 512 elements total // dstBlkStride, srcBlkStride = 1, no gap between blocks in one repeat // dstRepStride, srcRepStride = 8, no gap between repeats AscendC::Reciprocal(dstLocal, srcLocal, mask, 4, { 1, 1, 8, 8 });tensor前n个数据计算样例
AscendC::Reciprocal(dstLocal, srcLocal, 512); static constexpr ReciprocalConfig config = { ReciprocalAlgo::PRECISION_1ULP_FTZ_FALSE }; AscendC::Reciprocal<T, config>(dstLocal, srcLocal, 512);
结果示例如下:
输入数据srcLocal: [-7.152 -7.24 1.771 ... -1.339 4.473] 输出数据dstLocal: [-0.1396 -0.1382 0.5645 ... -0.748 0.2231]【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
