Nvidia Jetson Nano上的TensorRT + PyInstaller反序列化引擎导致loadKernel中的Cuda错误:3初始化错误

问题描述

我有一个读取序列化TensorRT引擎的代码:

import tensorrt as trt
import pycuda.driver as cuda

cuda.init()
device = cuda.Device(0)
context = device.make_context()
logger = trt.Logger(trt.Logger.INFO)
with trt.Runtime(logger) as runtime:
    with open('model.trt','rb') as in_:
        engine = runtime.deserialize_cuda_engine(in_.read())

在我的Nvidia Jeston Nano上运行得很好,直到我用Pyinstaller编译它为止。

pyinstaller temp.py

在已编译的代码runtime.deserialize_cuda_engine中返回None,记录器说:

Cuda Error in loadKernel: 3 (initialization error)
[TensorRT] ERROR: INVALID_STATE: std::exception
[TensorRT] ERROR: INVALID_CONFIG: Deserialize the cuda engine failed.

当我从头开始构建引擎时,例如

cuda.init()
device = cuda.Device(0)
context = device.make_context()
logger = trt.Logger(trt.Logger.INFO)
with ExitStack() as stack:
    builder = stack.enter_context(trt.Builder(logger))
    network = stack.enter_context(builder.create_network(
        1 << int(trt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH)
    ))

    i = network.add_input('input0',trt.float16,(3,2))
    s = network.add_softmax(i)
    network.mark_output(s.get_output(0))
    config = stack.enter_context(builder.create_builder_config())
    ...some builder settings like opt profiles and fp16 mode...
    engine = builder.build_engine(network,config)

那么即使编译后,一切都可以正常工作。

引擎是在同一台计算机上用trtexec准备的。 Cuda版本为V10.2.89pycuda版本为2019.1.2。我相信这是到2020年8月的标准jetson安装。

有什么想法,这里可能涉及什么以及什么解决方法?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...