问题描述
我正在尝试使用 TensorRT 引擎在从多处理继承的 python 类中进行推理。该引擎在我系统上的独立 python 脚本中工作,但现在将其集成到代码库中时,类中使用的多处理似乎导致了问题。
我没有收到任何错误。它只是跳过行 self.runtime = trt.Runtime(self.trt_logger)
之后的所有内容。我的 vscode 调试器也没有进入该函数。
In the docs 提到了以下内容,但我不完全理解:
TensorRT builder 一次只能被一个线程使用。如果你 需要同时运行多个构建,您将需要创建 多个建设者。 TensorRT 运行时可以被多个 同时线程,只要每个对象使用不同的 执行上下文。
# more imports
import logging
import multiprocessing
import tensorrt as trt
import pycuda.driver as cuda
import pycuda.autoinit
class MyClass(multiprocessing.Process):
def __init__(self,messages):
multiprocessing.Process.__init__(self)
# other stuff
self.exit = multiprocessing.Event()
def load_tensorrt_model(self,config):
'''Load tensorrt model with engine'''
logging.debug('Start')
# Reading the config parameters related to the engine
engine_file = config['trt_engine']['trt_folder'] + os.path.sep + config['trt_engine']['engine_file']
class_names_file = config['trt_engine']['trt_folder'] + os.path.sep + config['trt_engine']['class_names_file']
# Verify if all the necessary files are present,if so load the detection network
if os.path.exists(engine_file) and os.path.exists(class_names_file):
try:
logging.debug('In try statement')
self.trt_logger = trt.Logger()
f = open(engine_file,'rb')
logging.debug('I can get here,but no further')
self.runtime = trt.Runtime(self.trt_logger)
logging.debug('Cannot get here')
self.engine = self.runtime.deserialize_cuda_engine(f.read())
# More stuff
我找到了一个拥有 multithreading problem 的人,但目前我无法使用它来解决我的问题。
感谢任何帮助。
系统规格:
- Python 3.6.9
- Jetson NX
- 喷气背包 4.4.1
- L4T 32.4.4
- Tensorrt 7.1.3.0-1
- Cuda10.2
- Ubuntu 18.04
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)