概述
Ascend910B/Ascend910C和KirinX90/Kirin9030之间的ASC API详细能力差异,见《Ascend C算子接口》。本节当前重点描述主要的差异和兼容适配方案,其它情况可类比参考。
架构版本代表了AI处理器的能力,Ascend910B/Ascend910C和KirinX90/Kirin9030的AI处理器架构版本请参见表1。
表1 处理器型号和NPU_ARCH的对应关系
| 处理器型号 | NPU_ARCH |
|---|---|
| Ascend910B/Ascend910C | 2201 |
| KirinX90 | 3003 |
| Kirin9030 | 3113 |
由于AI处理器架构版本区别,Ascend910B/Ascend910C和KirinX90/Kirin9030 主要差异请参见下表。具体影响的API,详见基础API迁移指导和高阶API迁移指导。
表2 KirinX90/Kirin9030相对Ascend910B/Ascend910C的主要差异说明
| 差异点 | 影响和应对策略 |
|---|---|
| 不支持GM操作使能L2 Cache | 只影响性能、不影响功能。 |
| 不支持原子操作 | 详见不支持开发者在GM完成Atomic操作。开发者需要在NPU片上的Buffer完成计算后,再使用基础API DataCopy将计算结果从NPU片上的Buffer搬到GM。 |
| 数据类型差异(不支持bfloat16_t、Cube计算不支持float、Mmad数据格式差异等) | 建议替换成其它数据类型(如half),并根据本指南指导做数据转换。 |
| 不支持AI Core核间同步特性 | KirinX90/Kirin9030 AI处理器为单核耦合架构,软件兼容,等效为单核内部同步。开发者编程时,要避免对核数进行硬编码。 |
| 不支持通信特性 | 不支持。 |
| 不支持训练特性,包括右矩阵Load 3D功能、LoadDataTranspose部分特性 | 不支持。 |
| KirinX90/Kirin9030 AI处理器为耦合架构,而Ascend910B/Ascend910C AI处理器为分离架构 | 开发者编程时,不可以利用ASCENDC_IS_AIV/ASCENDC_IS_AIC宏进行AIV/AIC区分编程。 |
| 硬件规格 | 开发者编程时,开发者应避免对硬件规格进行硬编码,而应通过从Platform中获取硬件规范,实现参数化编程。 |