文档
注册
评分
提单
论坛
小AI

vec_expm1_high_preci

功能说明

按element取自然底数:,该接口的精度高于vec_exp

函数原型

vec_expm1_high_preci(mask, dst, src, work_tensor, repeat_times, dst_rep_stride, src_rep_stride)

参数说明

请参见参数说明。下面仅对dst/src/work_tensor参数进行说明:

dst/src/work_tensor数据类型保持一致,支持的数据类型为:Tensor(float16)

  • 如果传入tensor带有偏移,则作为参数传入时应写成tensor[offset1:offset2],表示从offset1开始到offset2结束,也可以写成tensor[offset1:],表示从offset1开始;如果仅仅输入tensor[offset],代表仅传入一个元素,该接口内部实现过程中会对tensor进行切片,无法切分一个元素,运行时可能会产生错误,因此不支持该形式;
  • 如果传入操作数tensor不带偏移,可以直接写成tensor传入。

【work_tensor参数说明】:

work_tensor为用户定义的临时buffer空间,存储中间结果,空间限定在scope_ubuf,用于内部计算使用。

【work_tensor空间计算说明】:

  1. 根据repeat_times、src_rep_stride计算出src计算所需要的最小空间:src_extent_size = (repeat_times - 1)*src_rep_stride*16 + 128。如果0 < src_rep_stride <= 8,则用src_rep_stride = 8代入上式计算,否则保持原值。
  1. 对src最小空间进行32Byte向上取整对齐: wk_size_unit = (src_extent_size+15)//16*16
  2. 计算work_tensor大小:11*wk_size_unit

【work_tensor空间计算举例】:

  1. 如果repeat_times=1,src_rep_stride=8,则src_extent_size=128,work_tensor大小为128 * 11。
  2. 如果repeat_times=2,src_rep_stride=4,则src_extent_size=(2-1)*8*16 + 128 = 256,work_tensor大小为256 * 11。

注意事项

  • dst、src、work_tensor应声明在scope_ubuf中。
  • dst、src、work_tensor三个tensor的空间不能重叠。
  • 最终计算结果要在数据范围内,否则结果会是inf或者饱和值。
  • 使用该接口计算ex - 1时,计算精度高于使用vec_exp接口计算ex - 1,解决了vec_exp精度不足问题。
  • 其它注意事项请参考注意事项

返回值

支持的型号

Atlas 200/300/500 推理产品

Atlas 训练系列产品

Atlas推理系列产品(Ascend 310P处理器)AI Core

Atlas推理系列产品(Ascend 310P处理器)Vector Core

Atlas A2训练系列产品/Atlas 800I A2推理产品

Atlas 200/500 A2推理产品

调用示例

此样例是针对数据量较小、一次搬运就可以完成的场景,目的是让大家了解接口的功能,更复杂的数据量较大的样例可参见调用示例

from tbe import tik
tik_instance = tik.Tik()
src_gm = tik_instance.Tensor("float16", (128,), name="src_gm", scope=tik.scope_gm)
src_ub = tik_instance.Tensor("float16", (128,), name="src_ub", scope=tik.scope_ubuf)
dst_gm = tik_instance.Tensor("float16", (128,), name="dst_gm", scope=tik.scope_gm)
dst_ub = tik_instance.Tensor("float16", (128,), name="dst_ub", scope=tik.scope_ubuf)
# 所需空间为 ((1-1)*8*16+128)*11=128*11
work_tensor_ub = tik_instance.Tensor("float16", (128*11,), name="work_tensor_ub", scope=tik.scope_ubuf)
tik_instance.data_move(src_ub, src_gm, 0, 1, 8, 0, 0)
tik_instance.vec_expm1_high_preci(128, dst_ub, src_ub, work_tensor_ub, 1, 8, 8)
tik_instance.data_move(dst_gm, dst_ub, 0, 1, 8, 0, 0)
tik_instance.BuildCCE(kernel_name="expm1", inputs=[src_gm], outputs=[dst_gm])

结果示例:

输入数据:
[0, 1, 2, 3, ......]

输出数据:
[0.0, 1.719, 6.391, 19.08, ......]
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词