兼容性说明
总体兼容性策略见表1 Ascend C API兼容策略,兼容性范围不包含编译器BuiltIn API、Ascend C内部实现接口等。若开发者希望在新平台运行其它平台开发的Ascend C程序,需要在新平台重新编译并运行,并可能需要根据迁移指导进行代码调整。
图1 Ascend C API层次结构
表1 Ascend C API兼容策略
| API层级 | 兼容策略 |
|---|---|
| 高阶API | 高阶API在所有架构上均具备兼容性,但在涉及领域特性的部分存在不兼容情况。 |
| 基础API | 基础API分为可兼容的基础API和ISASI基础API;兼容的API在所有架构上均能兼容;ISASI API为体系架构相关的API,不保证跨架构版本的兼容性,例如CUBE侧的计算接口LoadData、Mmad等。 |
| 框架API | 框架API为软件实现API,跨架构版本兼容。 |
| 语言扩展C API | 不保证兼容。 |
| 编译器BuiltIn API | 不保证兼容。 |
简要说明
-
为了保证兼容性,建议开发者在开发过程中尽量避免使用如下接口或编程方式,否则开发者需自行保证兼容性。
-
非Ascend C公开接口、结构体,例如impl目录下的接口、结构体等;
-
对芯片规格进行硬编码。例如:
uint32_t MAX_UB_SIZE = 256 * 1024;// 建议获取方式:ascendcPlatform.GetCoreMemSize(platform_ascendc::CoreMemType::UB, MAX_UB_SIZE);// ... -
编译器BuiltIn API。例如:
copy_gm_to_ubuf(input_1_local_ub, input_1, 0, 1, 8, 0, 0); -
TilingKey编程。
-
-
建议开发者使用如下接口或编程方式。
- 兼容的API。
- 若涉及特定领域扩展特性,在Device侧用NPU_ARCH编译宏进行隔离,在Host侧用SocVersion进行隔离。
- 使用Tiling模板编程。