---
title: SIMD语言扩展层C API
description: "C API开放芯片完备编程能力，支持以数组形式分配内存，一般基于指针编程。提供与业界一致的C语言编程体验。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/programug/Ascendcopdevg/atlas_ascendc_10_10055.html
sourcePath: /source/zh/canncommercial/900/programug/Ascendcopdevg/atlas_ascendc_10_10055.html
indexId: b8c11417abca5d1903df2685d158e21fef33c72cd97fa21a2dfa0c9ab0bd06f181
---
# SIMD语言扩展层C API

C API开放芯片完备编程能力，支持以数组形式分配内存，一般基于指针编程。提供与业界一致的C语言编程体验。

包含asc_simd.h文件来调用C API相应接口。如无特殊说明，包含该头文件即可满足接口调用需求。 若API文档中有特殊说明，则应遵循API的具体说明。

```
#include "c_api/asc_simd.h"
```

对于C API，主要分为以下几类：

- 矢量计算，实现调用Vector计算单元执行计算的功能。
- 数据搬运，计算API基于Local Memory数据进行计算，所以数据需要先从Global Memory搬运至Local Memory，再使用计算API完成计算，最后从Local Memory搬出至Global Memory。执行搬运过程的接口称之为数据搬运API。
- 同步控制，完成任务间的通信和同步，比如asc_sync_notify/asc_sync_wait接口。不同的API指令间有可能存在依赖关系，从  抽象硬件架构
可知，不同的指令异步并行执行，为了保证不同指令队列间的指令按照正确的逻辑关系执行，需要向不同的组件发送同步指令。同步控制API内部即完成这个发送同步指令的过程。
- 系统变量，访问、获取系统内置变量，辅助计算API。

对于计算类API可以分为以下几类：

- 前n个数据计算：该类型API在计算时采用“紧密排布”的数据读取方式，即从起始位置开始，按顺序连续获取所需数据。例如，若需处理N个数据，则从源操作数的第0个位置开始，依次取至第N-1个位置。
- 高维切分计算：该类型API按照设定的规则“跳过部分数据”。适合处理需要间隔采样的场景，灵活度高，但需要额外配置相关参数。
- 同步计算：该类型API内部自动插入同步操作，易用性更强。
