文档
注册

API接口概述

Ascend C定义了计算类、数据搬运类、内存管理及任务同步等API,接口功能描述如下表。

表1 接口总览

接口类别

功能描述

矢量计算

调用Vector计算资源执行计算。

矩阵计算

调用Cube计算资源执行计算。

数据转换

将数据格式进行转换,如转置,2d到3d转换等。

数据搬移

计算接口基于Local Memory数据进行计算,所以数据需要先从Global Memory搬运至Local Memory,再使用计算接口完成计算,最后再从Local Memory搬出至Global Memory。执行搬运过程的接口称之为数据搬移接口。

内存管理及任务同步

任务同步类API,完成任务间的通信和同步,简化流水并行的处理。

Ascend C对于内存资源进行了抽象,用于管理片上内存资源,避免硬件结构变化导致的算子代码修改。内存管理类API用于计算任务之间的数据传递。

数据填充

实现数据填充到向量的功能。

目标识别

使用Region proposal格式进行计算,通常用于目标识别功能。

Ascend C提供了多层级的0-3级API,随着级别增高,API使用的自由度降低,易用性增强。您可以根据需要选择合适的API,使用最通俗易懂的高级接口快速搭建算子逻辑,使用自由灵活的低级接口进行复杂的逻辑实现和性能调优。以矢量计算类API为例:

表2 多级矢量计算类API定义

接口级别

接口说明

0级

功能灵活的计算API,充分发挥硬件优势,支持对每个操作数的Block stride,Repeat stride,Mask的操作。Block stride,Repeat stride,Mask参数的详细介绍请参见0级接口通用参数说明

1级

slice计算API,解决多维数据中的切片计算问题。该版本暂不支持1级接口。

2级

针对源操作数的连续数据进行计算并连续写入目的操作数,解决一维tensor的连续计算问题。

3级

运算符重载,支持+, -, *, /, |, &, <, >, <=, >=, ==, !=,实现2级指令的简化表达。

下图以矢量加法计算为例,展示了不同级别矢量计算类API的特点。

图1 不同级别矢量计算类API的特点
搜索结果
找到“0”个结果

当前产品无相关内容

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