获取TensorRT引擎文件(.engine)版本号的几种方法
获取TensorRT引擎文件(.engine)版本号的几种方法:
方法1:使用trtexec的–getPlanVersionOnly参数(推荐)
最直接和准确的方法:
export TENSORRT_ROOT=/opt/TensorRT-10.12.0.36 && export LD_LIBRARY_PATH=$TENSORRT_ROOT/lib:$LD_LIBRARY_PATH &&$TENSORRT_ROOT/bin/trtexec --loadEngine="/media/models/scrfd_160x160_fp16.engine" --getPlanVersionOnly
从输出中可以看到类似下面的关键信息:
Plan was created with TensorRT version 10.8.0.43
获取TensorRT引擎文件版本号的完整方法总结
方法1:使用trtexec的–getPlanVersionOnly参数(最推荐)
# 设置TensorRT环境
export TENSORRT_ROOT=/opt/TensorRT-10.12.0.36
export LD_LIBRARY_PATH=$TENSORRT_ROOT/lib:$LD_LIBRARY_PATH
export PATH=$TENSORRT_ROOT/bin:$PATH# 查看引擎文件版本
trtexec --loadEngine=/path/to/your/engine/file --getPlanVersionOnly
优点:
- 不需要反序列化整个引擎文件
- 速度快,资源消耗少
- 输出清晰明确
- 支持TensorRT 8.6及以上版本
方法2:通过错误信息推断
当版本不匹配时,错误信息会显示版本号:
[TensorRT] IRuntime::deserializeCudaEngine: Error Code 1: Serialization (Serialization assertion stdVersionRead == kSERIALIZATION_VERSION failed.Version tag does not match. Note: Current Version: 240, Serialized Engine Version: 239)
版本号对应关系:
- 版本号240 = TensorRT 8.6.x
- 版本号239 = TensorRT 8.5.x
- 版本号238 = TensorRT 8.4.x
方法3:使用Python API
import tensorrt as trt# 创建logger
logger = trt.Logger(trt.Logger.WARNING)# 创建runtime
runtime = trt.Runtime(logger)# 读取引擎文件
with open('/path/to/your/engine/file', 'rb') as f:engine_data = f.read()# 尝试反序列化(会失败但会显示版本信息)
try:engine = runtime.deserialize_cuda_engine(engine_data)
except Exception as e:print(f"错误信息: {e}")# 错误信息中会包含版本号
方法4:使用strings命令查看二进制信息
strings /path/to/your/engine/file | grep -i "tensorrt\|version" | head -10