如何解决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.89
,pycuda
版本为2019.1.2
。我相信这是到2020年8月的标准jetson安装。
有什么想法,这里可能涉及什么以及什么解决方法?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。