Skip to content
版本

Ascend C API列表

Ascend C提供了一套层次化的API体系,涵盖了从底层C扩展到高阶C++类库的完整能力。它支持开发者以标准C/C++语法为基础,在AI Core(SIMD/SIMT)及AI CPU等多种编程模型下,灵活实现精细化的内存管理与高效的矢量/矩阵运算。

API分类总览

下表展示了Ascend C API的总体分类,帮助开发者根据编程模型和功能需求快速定位所需API。

表 1 Ascend C API分类

API一级分类API二级分类分类说明
SIMD API基础API实现对硬件能力的抽象,开放芯片的能力,保证完备性和兼容性。标注为ISASI(Instruction Set Architecture Special Interface,硬件体系结构相关的接口)类别的API,不能保证跨硬件版本兼容。
SIMD APIC API纯C接口,开放芯片完备编程能力,支持数组分配内存,一般基于指针编程,提供与业界一致的C语言编程体验。
SIMD API高阶API实现一些常用的计算算法,用于提高编程开发效率,通常会调用多种基础API实现。高阶API包括数学库、Matmul、Softmax等API。高阶API可以保证兼容性。
SIMT API-对标业界,提供单指令多线程API。以单条指令多个线程的形式来实现并行计算。SIMT编程主要用于向量计算,特别适合处理离散访问、复杂控制逻辑等场景。SIMT API支持两种编程模型:SIMT编程、SIMD与SIMT混合编程,具体支持的API请分别参见SIMT编程API列表SIMD与SIMT混合编程API列表
AI CPU API-通常作为上述API的补充,主要承担非矩阵类、逻辑比较复杂的分支密集型计算。
Utils API-丰富的通用工具类,涵盖标准库(目前仅支持SIMD)、平台信息获取、运行时编译及日志输出等功能,支持开发者高效实现算子开发与性能优化。

调用接口依赖的头文件和库文件说明

安装固件、驱动及CANN软件包后,编译、运行应用程序时才能引用到Ascend C接口的头文件、库文件。

您可以根据实际使用的Ascend C接口来include依赖的文件,各头文件的用途如下表所示。

表 2 SIMT编程模型头文件列表

头文件说明对应的库文件
simt/asc_simt.h提供SIMT API对外接口,若计算只需要特定的数据类型如fp8,可只包含simt_api/asc_fp8.h。不涉及

关于SIMT编程头文件包含的更多细节请参考SIMT-API

表 3 SIMD基础编程能力头文件列表

API能力层级开发场景头文件说明对应的库文件
基于C语言指针编程开发任意算子(含融合算子)c_api/asc_simd.h提供全量SIMD C API对外接口。不涉及
基于C++ Tensor编程开发任意算子(含融合算子)tensor_api/tensor.h提供全量SIMD C++ Tensor API对外接口。不涉及
基于TPipe/TQue框架编程开发任意算子(含融合算子)basic_api/kernel_basic_intf.h提供全量SIMD基于TPipe/TQue框架编程对外接口。不涉及
基于TPipe/TQue框架编程只开发矢量算子basic_api/kernel_vec_intf.h提供矢量计算依赖的SIMD基于TPipe/TQue框架编程对外接口。不涉及
基于TPipe/TQue框架编程只开发矩阵算子basic_api/kernel_cube_intf.h提供矩阵计算依赖的SIMD基于TPipe/TQue框架编程对外接口。不涉及

表 4 SIMD高阶API头文件列表

头文件说明对应的库文件
adv_api/kernel_api.h提供SIMD高阶API Device侧对外接口。仅支持基于TPipe/TQue框架编程方式下调用。不涉及
adv_api/tiling_api.h提供SIMD高阶API Host侧对外接口。仅支持基于TPipe/TQue框架编程方式下调用。libtiling_api.a

免责声明:本站内容由 asc-devkit 仓 master 分支自动编译生成,属于持续开发版本,可能存在缺陷,仅供预览与参考。如需稳定及商用资料,请查阅官方 昇腾社区