FAQ
运行类
使用Vision SDK时,出现can not find the element factory : mxpi_xxxpostprocessor报错
使用Vision SDK时,出现“can not find the element factory : mxpi_xxxpostprocessor”。
在“/mxVision-{version}/opensource/bin”路径下执行./gst-inspect-1.0 mxpi_xxxpostprocessor(插件名)检查插件,发现插件能够正常加载,但运行时仍然报同样的错误信息。
GStreamer的历史缓存没有清除。
- 确认环境已安装python3.9。
- 执行rm ~/.cache/gstreamer-1.0/registry.{arch}.bin(其中{arch}根据实际运行环境选择“x86_64”或者“aarch64”)来清除GStreamer的历史缓存,再运行程序即可。
尝试打印Device侧的Tensor、Image内存数据时,发生coredump
当Tensor、Image类数据在Device侧时,尝试调用GetData()接口返回指针并打印指针所指向的数据时,出现coredump提示。
Device侧地址空间与Host侧地址空间相互独立,Host侧无法直接访问Device侧数据,具体请参见《CANN 应用开发指南 (C&C++)》。
请先使用Tensor.ToHost()或Image.ToHost(),将Device侧Tensor类或Image类数据转移到Host侧后,再次尝试打印数据操作。
运行WarpAffineHiper或WarpPerspective接口出现Synchronize stream execution failed错误
运行WarpAffineHiper或WarpPerspective接口,出现Synchronize stream execution failed. (Calling Function = aclrtSynchronizeStream, Code = 507014, Message = "ACL error, please refer to the document of CANN.")的错误(错误码507014)。

输入shape过大或使用转换矩阵的计算量过大,导致aicore执行超时。
使用数据切分方式拆分shape或改变转换矩阵以减少数据量。
依赖冲突类
系统命令yum、cmake不可用
安装Vision SDK软件包导入环境变量后导致系统命令yum、cmake不可用,报错提示与OPENSSL相关。
yum命令的报错提示如下:
ImportError: /lib64/libcurl.so.4: symbol SSLv3_client_method version OPENSSL_1_1_0 not defined in file libssl.so.1.1 with link time reference
ModuleNotFoundError: No module named '_conf'
cmake命令的报错提示如下:
symbol lookup error: /usr/lib64/libldap.so.2: undefined symbol: EVP_md2, version OPENSSL_3.0.0
导入Vision SDK环境变量后,“/mxVision-{version}/opensource/lib”的“libssl.so”或“libcrypto.so”,与yum、cmake所依赖的“libssl.so”、“libcrypto.so”冲突。({version}为实际安装的Vision SDK软件版本号。)
需要使用yum或者cmake命令时,将Vision SDK的“opensource/lib”相关路径从“LD_LIBRARY_PATH”环境变量中暂时移除。编译Vision SDK相关程序时,可在CMakeLists.txt中添加链接选项add_link_options(-Wl,-rpath-link,${MX_SDK_HOME}/opensource/lib)指定链接路径,运行Vision SDK相关程序时再将“opensource/lib”相关路径增加至“LD_LIBRARY_PATH”环境变量中。
x86_64执行TensorOperations接口时发生coredump,堆栈信息最后发生在libffi.so中
在x86_64架构设备上执行TensorOperations接口时发生coredump,打印堆栈信息发现最后执行在libffi.so中。
用户程序中链接了libstreammanager.so,运行时优先加载了软件包中高版本的libffi。部分TensorOperations接口运行时会调用到Python的CAPI接口,但环境上的Python安装时依赖系统自带的低版本libffi,两个版本的libffi在x86_64架构设备上存在冲突,造成coredump。
-
查看当前环境使用的Python,在对应lib路径下执行以下命令:
find /path/to/python -name "_ctypes.cpython*so" -
使用ldd查看找到的so所依赖的libffi.so的路径:
ldd /path/to/_ctypes.cpython*so -
执行以下命令,优先加载python依赖的libffi动态库:
export LD_PRELOAD=/path/to/libffi.so