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

接口列表

表1 TIK API列表

功能类别

接口名称

接口简介

TIK容器管理

TIK类构造函数

创建TIK DSL容器。

BuildCCE

BuildCCE的功能是,生成用户在目标机上定义的TIK描述语言,并将TIK描述语言编译成昇腾AI处理器上可执行的二进制代码,以及对应的配置文件。

数据定义

Tensor

定义Tensor变量。

Scalar

定义Scalar变量。

InputScalar

如果开发者在算子实现时不想将某标量定义为定值,想要使用算子运行时输入的值作为具体的值,此时可以将此标量定义为InputScalar类型,然后在BuildCCE的inputs参数中将此InputScalar对象作为输入。

Scalar管理

set_as

设置或者改变Scalar的值。

Tensor管理

reshape

改变Tensor shape。

reinterpret_cast_to

以用户指定的数据类型,读取Tensor数据。

获取Tensor部分数据

通过Tensor数组下标,获得Tensor内部分数据,形成新的Tensor。

改变Tensor内容

通过Tensor数组下标,改变Tensor内容。

shape

获取Tensor形状。

set_as

设置或者改变Tensor 的内容。

程序控制

if_scope

创建一个TIK的条件判断语句,当条件满足时,则执行if_scope代码块。

elif_scope

创建TIK条件判断语句,当前面的if_scope语句以及elif_scope语句条件都不满足时,且当前elif_scope条件判断通过时,则执行本elif_scope代码块。

else_scope

创建TIK的条件判断语句,当前面的if_scope语句以及elif_scope语句条件都不满足时,则执行此else_scope语句中的代码块。

for_range

代表tik的for循环语句,可在for循环中开启n buffer和多核运行功能。

new_stmt_scope

代表一个c语言的大括号,new_stmt_scope范围内空间代表一个新作用域。disable_sync配置是否在当前作用域内自动插入同步指令。

any

此函数用于判断输入参数是否全部为False,若是则返回False;若其中有一个为True,则返回True。

all

此函数用于判断输入参数是否全部为True,若是则返回True;若其中有一个为False,则返回False。

negate

此参数用于判断输入参数是否为False,若为False,则返回结果为True;否则,返回结果为False。

tik_continue

在tik的for_range循环中使用,用来跳出本次循环,进入下一次循环。

tik_break

tik_break语句用来终止for_range循环语句,即tik_break语句将停止执行当前的循环。

tik_return

在需要的指令、层次位置返回,常用于打断点。

功能调试

start_debug

TIK提供了在仿真环境上进行功能调试的能力,通过tik.tikdb对象提供,tikdb可以类似于PDB(The Python Debugger)一样进行断点设置,单步调试,变量打印等。

debug_print

tik.tikdb对象定义了debug_print语句,方便用户打印算子运行过程中的数据。调试器执行到这行代码时会对表达式求值并将结果打印在屏幕上。

set_printf_params

设置printf参数。

printf

打印Scalar、Expr、ScalarArray、Tensor值。支持功能调试环境start_debug上的打印。

标量计算(单目)

scalar_abs

对标量取绝对值操作:

scalar_sqrt

标量取开方操作:

scalar_countbit0

逐bit统计源操作数64位二进制格式中bit为0的数量。

scalar_countbit1

逐bit统计源操作数64位二进制格式中bit为1的数量。

scalar_countleading0

统计源操作数64位二进制格式中,bit连续为0的数量。

scalar_conv

标量精度转换(值转换)。

标量计算(双操作数)

scalar_max

比较并选取两个源操作数的最大值:

scalar_min

比较并选取两个源操作数的最小值:

矢量计算(单目)

vec_relu

按element做线性整流Relu:

vec_abs

按element取绝对值:

vec_not

每个element按位取反:

vec_exp

按element取自然指数:

vec_expm1_high_preci

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

vec_ln

按element取自然对数:

vec_ln_high_preci

按element取自然对数:。该接口的精度高于vec_ln

vec_rec

按element取倒数:

vec_rec_high_preci

按element取倒数:。该接口的精度高于vec_rec

vec_rsqrt

按element做开方后,再取倒数:

vec_rsqrt_high_preci

按element做开方后,再取倒数:。该接口的精度高于vec_rsqrt

矢量计算(双目)

vec_add

按element求和:

vec_sub

按element求差:

vec_mul

按element求积:

vec_max

按element求最大值:

vec_min

按element求最小值:

vec_and

每对elements按位与运算:

vec_or

每对elements按位或运算:

矢量计算 > 标量双目

vec_adds

矢量内每个element与标量求和:

vec_muls

矢量内每个element与标量求积:

矢量计算 > 标量三目

vec_axpy

矢量每个element与标量求积后累加:

矢量计算 > 比较选择相关指令

vec_cmpv_xx

逐element比较两个tensor大小,如果为真则对应比特位为1,否则为0,支持多种比较模式。

vec_sel

根据sel的比特位值选取element,当sel的比特位是1时从src0中选取,比特位是0时从src1选取,选取后的结果记为dst_temp,然后根据mask值对dst_temp进行过滤,有效位填入最终的dst,无效位则保持dst原始值。

矢量计算 > 数据精度转换指令

vec_conv

根据src与dst tensor的类型进行精度转换。

矢量计算 > 对归约

vec_cpadd

相邻内对(奇偶)elements求和:

矢量计算 > 归约

vec_reduce_add

对所有输入数据求和。数据采用二叉树方式,两两相加。

vec_reduce_max

在所有的输入数据中找出最大值及最大值对应的索引位置。

vec_reduce_min

在所有的输入数据中找出最小值及最小值对应的索引位置。

矩阵计算

conv2d

给定一个输入的张量和一个权重张量执行卷积2-D操作,输出结果张量。

fixpipe

矩阵计算完成后,对结果进行处理,例如对计算结果进行加偏置和对数据进行量化、并把数据从L1OUT 搬迁到GM Memory 中。

matmul

给定两个输入的张量a和b。进行矩阵相乘,输出到结果张量中。

数据转换

vec_trans

对连续的16*16的二维矩阵数据块进行转置,通过repeat_times参数指定转置操作的次数。每个迭代内操作256个连续地址空间数据,不同迭代间地址可以不连续,不同迭代间的空间间隔通过dst_rep_stride 和src_rep_stride参数指定。

vec_trans_scatter

NCHW转换成NC1HWC0格式。如果是数据类型是float32 int32,uint32, int16,unint16,float16, 则C0=16, 如果数据类型是uint8,int8,则C0=32.

数据填充

vec_dup

将一个Scalar变量或一个立即数,复制多次并填充到向量(PAR代表并行度):

数据搬运

data_move

在src与dst间进行数据传输。支持src与dst的类型同时为Tensor。

搜索结果
找到“0”个结果

当前产品无相关内容

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