写在前面
自己的测试环境:
Ubuntu20.04,
CUDA-11.8;
cudnn8.6.0;
TensorRT-8.5.1.7
一、问题描述
运行调用 TensorRT
程序时出现如下报错:
[07/09/2024-20:15:26] [E] [TRT] 1: [stdArchiveReader.cpp::StdArchiveReader::42] Error Code 1: Serialization (Serialization assertion stdVersionRead == serializationVersion failed.Version tag does not match. Note: Current Version: 232, Serialized Engine Version: 205)
[07/09/2024-20:15:26] [E] [TRT] 4: [runtime.cpp::deserializeCudaEngine::66] Error Code 4: Internal Error (Engine deserialization failed.)
二、解决方法
这个错误信息的报错提示的意思是:
尝试加载一个序列化(Serialized)的CUDA引擎时,版本不匹配的问题。错误信息中指出,当前的版本是232,而序列化引擎的版本是205。这通常意味着你正在尝试使用一个较新版本的软件去加载一个较旧版本的序列化文件。
解决这个问题的方法是需要对数据进行重新序列化:
使用当前的测试平台,运行 trtexec --onnx ****
指令进行部署,比如重新运行以下指令进行生成.engine
文件:
trtexec --onnx=superpoint_pretrained2.onnx --explicitBatch --minShapes=input:1x1x360x1176 --optShapes=input:1x1x360x1176 --maxShapes=input:1x1x360x1176 --workspace=3072 --saveEngine=superpoint_pretrained_360_1176_FP32.engine
参考链接
[1] YukunXia. SuperPoint-Stereo-Visual-Odometry/tree/test_two_batches/src/odml_visual_odometry/README.md. https://github.com/YukunXia/SuperPoint-Stereo-Visual-Odometry/blob/test_two_batches/src/odml_visual_odometry/README.md, 2021-11-25/2024-07-09.