使用跨版本的自定义算子包时,含有Matmul高阶API的算子存在编译或执行报错
现象描述
- 基于CANN-7.2及之前版本(<=7.2)的CANN开发套件包,编译含有Matmul高阶API的自定义算子包,将编译后的自定义算子包安装至CANN-7.3及之后版本(>=7.3)的CANN包环境,然后对该含有Matmul高阶API的算子,执行图模式在线编译时,报如下错误:
1 2
res = struct.unpack_from(fmt_str, tiling_data, offset + unpack_size) struct.error: unpack_from requires a buffer of at least 52 bytes for unpacking 4 bytes at offset 48
问题根因
该错误的原因是编译自定义算子包的软件版本过老,可通过更新自定义算子包编译环境上的CANN开发套件包版本,然后重新编译和部署自定义算子包,来避免出现该问题。
处理步骤
- 查看自定义算子包编译时使用的CANN开发套件包版本号,示例如下:
cd ${CANN包安装路径} cat version.cfg # version: 1.0 runtime_running_version=[7.2.T11.0.B218:8.0.RC2.alpha001] runtime_upgrade_version=[7.2.T11.0.B218:8.0.RC2.alpha001] runtime_installed_version=[7.2.T11.0.B218:8.0.RC2.alpha001]
- 基于CANN-7.3及之后版本(>=7.3)的CANN开发套件包,重新编译该自定义算子包。部署编译生成的自定义算子包后,正常编译或者执行算子,无报错。重新编译和部署自定义算子包的具体方法可参考编译部署。
父主题: FAQ