开发者
下载

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;

处理建议:

  • 使用替代枚举值/成员名。
  • 注意替代值可能与废弃值编号相同,保持兼容。