接口列表
功能类别 |
接口名称 |
接口简介 |
---|---|---|
TIK容器管理 |
创建TIK DSL容器。 |
|
BuildCCE的功能是,生成用户在目标机上定义的TIK描述语言,并将TIK描述语言编译成昇腾AI处理器上可执行的二进制代码,以及对应的配置文件。 |
||
数据定义 |
定义Tensor变量。 |
|
定义Scalar变量。 |
||
如果开发者在算子实现时不想将某标量定义为定值,想要使用算子运行时输入的值作为具体的值,此时可以将此标量定义为InputScalar类型,然后在BuildCCE的inputs参数中将此InputScalar对象作为输入。 |
||
Scalar管理 |
设置或者改变Scalar的值。 |
|
Tensor管理 |
改变Tensor shape。 |
|
以用户指定的数据类型,读取Tensor数据。 |
||
通过Tensor数组下标,获得Tensor内部分数据,形成新的Tensor。 |
||
通过Tensor数组下标,改变Tensor内容。 |
||
获取Tensor形状。 |
||
设置或者改变Tensor 的内容。 |
||
程序控制 |
创建一个TIK的条件判断语句,当条件满足时,则执行if_scope代码块。 |
|
创建TIK条件判断语句,当前面的if_scope语句以及elif_scope语句条件都不满足时,且当前elif_scope条件判断通过时,则执行本elif_scope代码块。 |
||
创建TIK的条件判断语句,当前面的if_scope语句以及elif_scope语句条件都不满足时,则执行此else_scope语句中的代码块。 |
||
代表tik的for循环语句,可在for循环中开启n buffer和多核运行功能。 |
||
代表一个c语言的大括号,new_stmt_scope范围内空间代表一个新作用域。disable_sync配置是否在当前作用域内自动插入同步指令。 |
||
此函数用于判断输入参数是否全部为False,若是则返回False;若其中有一个为True,则返回True。 |
||
此函数用于判断输入参数是否全部为True,若是则返回True;若其中有一个为False,则返回False。 |
||
此参数用于判断输入参数是否为False,若为False,则返回结果为True;否则,返回结果为False。 |
||
在tik的for_range循环中使用,用来跳出本次循环,进入下一次循环。 |
||
tik_break语句用来终止for_range循环语句,即tik_break语句将停止执行当前的循环。 |
||
在需要的指令、层次位置返回,常用于打断点。 |
||
功能调试 |
TIK提供了在仿真环境上进行功能调试的能力,通过tik.tikdb对象提供,tikdb可以类似于PDB(The Python Debugger)一样进行断点设置,单步调试,变量打印等。 |
|
tik.tikdb对象定义了debug_print语句,方便用户打印算子运行过程中的数据。调试器执行到这行代码时会对表达式求值并将结果打印在屏幕上。 |
||
设置printf参数。 |
||
打印Scalar、Expr、ScalarArray、Tensor值。支持功能调试环境start_debug上的打印。 |
||
标量计算(单目) |
对标量取绝对值操作:。 |
|
标量取开方操作:。 |
||
逐bit统计源操作数64位二进制格式中bit为0的数量。 |
||
逐bit统计源操作数64位二进制格式中bit为1的数量。 |
||
统计源操作数64位二进制格式中,bit连续为0的数量。 |
||
标量精度转换(值转换)。 |
||
标量计算(双操作数) |
比较并选取两个源操作数的最大值: |
|
比较并选取两个源操作数的最小值:。 |
||
矢量计算(单目) |
按element做线性整流Relu:。 |
|
按element取绝对值: |
||
每个element按位取反: |
||
按element取自然指数:。 |
||
按element取自然底数:,该接口的精度高于vec_exp。 |
||
按element取自然对数:。 |
||
按element取自然对数:。该接口的精度高于vec_ln。 |
||
按element取倒数:。 |
||
按element取倒数:。该接口的精度高于vec_rec。 |
||
按element做开方后,再取倒数:。 |
||
按element做开方后,再取倒数:。该接口的精度高于vec_rsqrt。 |
||
矢量计算(双目) |
按element求和: |
|
按element求差: |
||
按element求积: |
||
按element求最大值: |
||
按element求最小值: |
||
每对elements按位与运算: |
||
每对elements按位或运算: |
||
矢量计算 > 标量双目 |
矢量内每个element与标量求和: |
|
矢量内每个element与标量求积: |
||
矢量计算 > 标量三目 |
矢量每个element与标量求积后累加: |
|
矢量计算 > 比较选择相关指令 |
逐element比较两个tensor大小,如果为真则对应比特位为1,否则为0,支持多种比较模式。 |
|
根据sel的比特位值选取element,当sel的比特位是1时从src0中选取,比特位是0时从src1选取,选取后的结果记为dst_temp,然后根据mask值对dst_temp进行过滤,有效位填入最终的dst,无效位则保持dst原始值。 |
||
矢量计算 > 数据精度转换指令 |
根据src与dst tensor的类型进行精度转换。 |
|
矢量计算 > 对归约 |
相邻内对(奇偶)elements求和: |
|
矢量计算 > 归约 |
对所有输入数据求和。数据采用二叉树方式,两两相加。 |
|
在所有的输入数据中找出最大值及最大值对应的索引位置。 |
||
在所有的输入数据中找出最小值及最小值对应的索引位置。 |
||
矩阵计算 |
给定一个输入的张量和一个权重张量执行卷积2-D操作,输出结果张量。 |
|
矩阵计算完成后,对结果进行处理,例如对计算结果进行加偏置和对数据进行量化、并把数据从L1OUT 搬迁到GM Memory 中。 |
||
给定两个输入的张量a和b。进行矩阵相乘,输出到结果张量中。 |
||
数据转换 |
对连续的16*16的二维矩阵数据块进行转置,通过repeat_times参数指定转置操作的次数。每个迭代内操作256个连续地址空间数据,不同迭代间地址可以不连续,不同迭代间的空间间隔通过dst_rep_stride 和src_rep_stride参数指定。 |
|
NCHW转换成NC1HWC0格式。如果是数据类型是float32 int32,uint32, int16,unint16,float16, 则C0=16, 如果数据类型是uint8,int8,则C0=32. |
||
数据填充 |
将一个Scalar变量或一个立即数,复制多次并填充到向量(PAR代表并行度): |
|
数据搬运 |
在src与dst间进行数据传输。支持src与dst的类型同时为Tensor。 |