tensorrt和onnxruntime-gpu同时调用gpu时tensorrt推理出现错乱解决方式

问题:当我在同一个进程同时调用tensorrt和onnxruntime-gpu时 出现了tensorrt推理结果全为0的情况

解决方式:

  1. 将onnxruntime-gpu放到cpu上,但是cpu的推理速度明显会不如gpu

  1. 如果在python中 请一定先加载tensorrt模型,最后再加载onnx模型,比如在demo中import时,先调用tensorrt推理,最后再调用onnxruntime-gpu,但是只能保证第一次调用输出正确。

  1. 如果有多张显卡,可以将onnxruntime-gpu放到另一张卡上。

device_name = 'cuda:0'

if device_name == 'cpu':
    providers = ['CPUExecutionProvider']
elif device_name == 'cuda:0':
    providers = ['CUDAExecutionProvider', 'CPUExecutionProvider']
else:
    providers = ['CPUExecutionProvider']

character = " &#(),+-./0123456789:<ABCDEFGHIJKLMNOPQRSTUVWXYZabceghilmnoprstuvy?"

# ort_session = onnxruntime.InferenceSession("./detect/detect_1.onnx", providers=providers)
ort_session = onnxruntime.InferenceSession("identify/model.onnx", providers=providers)

d.因为是同进程同流导致的数据问题,所以可以在流输入时更换掉onnxruntime-gpu的输入流,是需要放在调用函数。

import pycuda.driver as cuda
import pycuda.autoinit

new_stream = cuda.Stream()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值