Runtime兼容性策略
兼容原则
CANN Runtime遵循以下兼容性原则:
版本变更类型 |
兼容性保证 |
示例 |
|---|---|---|
Patch版本升级 |
完全向后兼容 |
Bug修复、性能优化 |
Minor版本升级 |
API向后兼容 |
新增接口、新增特性 |
Major版本升级 |
不保证兼容 |
删除废弃接口、架构调整 |
废弃接口处理策略
Runtime使用ACL_DEPRECATED_MESSAGE宏标记废弃接口,在废弃周期内保持可用。如果存在替换接口,系统会同时提示该替换接口。
废弃接口标记方式如下:
// 废弃接口声明示例
ACL_DEPRECATED_MESSAGE("aclrtQueryEvent is deprecated, use aclrtQueryEventStatus instead")
ACL_FUNC_VISIBILITY aclError aclrtQueryEvent(aclrtEvent event, aclrtEventStatus *status);编译时将产生警告信息:
warning: 'aclrtQueryEvent' is deprecated: aclrtQueryEvent is deprecated, use aclrtQueryEventStatus instead [-Wdeprecated-declarations]
废弃接口生命周期如下:
阶段 |
状态 |
建议 |
|---|---|---|
发布废弃通知 |
接口可用,编译警告 |
开始迁移到替代接口 |
废弃过渡期 |
接口可用,持续警告 |
完成迁移 |
正式移除 |
接口不可用 |
必须使用替代接口 |
枚举或结构体成员废弃处理策略
枚举值和结构体成员也可能被废弃:
typedef enum aclrtLaunchKernelAttrId {
ACL_RT_LAUNCH_KERNEL_ATTR_LOCAL_MEMORY_SIZE
ACL_DEPRECATED_MESSAGE("Use ACL_RT_LAUNCH_KERNEL_ATTR_DYN_UBUF_SIZE instead") = 2,
ACL_RT_LAUNCH_KERNEL_ATTR_DYN_UBUF_SIZE = 2, // 替代值,同编号
...
} aclrtLaunchKernelAttrId;
typedef union aclrtLaunchKernelAttrValue {
ACL_DEPRECATED_MESSAGE("Use dynUbufSize instead")
uint32_t localMemorySize; // 废弃成员
uint32_t dynUBufSize; // 替代成员
...
} aclrtLaunchKernelAttrValue;
处理建议:
- 使用替代枚举值/成员名。
- 注意替代值可能与废弃值编号相同,保持兼容。
父主题: 兼容性处理