在多线程中使用tensorRT

2023-11-10

仅记录,转自https://www.coder.work/article/4985246

import pycuda.autoinit # Create CUDA context
import pycuda.driver as cuda

Main thread

with open(“sample.engine”, “rb”) as f, trt.Runtime(TRT_LOGGER) as runtime:
engine = runtime.deserialize_cuda_engine(f.read())

Worker thread

with engine.create_execution_context() as context:
inputs, outputs, bindings, stream = common.allocate_buffers(engine)
common.do_inference(context, inputs, outputs, bindings, stream)

上面的代码产生以下错误:

pycuda._driver.LogicError: explicit_context_dependent failed: invalid device context - no currently active context?

这听起来像工作线程中没有活动的CUDA上下文。因此,我尝试在辅助线程中手动创建CUDA上下文:

Worker thread

from pycuda.tools import make_default_context()
cuda.init() # Initialize CUDA
ctx = make_default_context() # Create CUDA context

with engine.create_execution_context() as context:
inputs, outputs, bindings, stream = common.allocate_buffers(engine)
common.do_inference(context, inputs, outputs, bindings, stream)

ctx.pop() # Clean up

如果要在多线程中进行推理,则需要按以下方式修改common.py。在触发GPU任务之前创建上下文:

dev = cuda.Device(0) // 0 is your GPU number
ctx = dev.make_context()

在执行GPU任务后清理:

ctx.pop()
del ctx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在多线程中使用tensorRT 的相关文章

  • 如何在 gitlab-ci docker 执行器中使用 cuda

    我们正在使用 gitlab 持续集成来构建和测试我们的项目 最近 其中一个项目添加了 CUDA 的要求以启用 GPU 加速 我不想改变我们的管道 docker 和 gitlab ci 对我们来说运行良好 所以我想以某种方式让 docker
  • 是否可以在设备函数中调用cufft库调用?

    我在主机代码中使用 cuFFT 库调用 它们工作正常 但我想从内核调用 cuFFT 库 早期版本的 CUDA 没有这种支持 但是有了动态并行性 这可能吗 如果有任何关于如何实现这一目标的示例 那就太好了 尽管在 Kepler cc 3 5
  • 使用内置显卡,没有NVIDIA显卡,可以使用CUDA和Caffe库吗?

    使用内置显卡 没有 NVIDIA 显卡 可以使用 CUDA 和 Caffe 库吗 我的操作系统是 ubuntu 15 CPU为 Intel i5 4670 3 40GHz 4核 内存为12 0GB 我想开始学习深度学习 CUDA 适用于 N
  • Golang调用CUDA库

    我正在尝试从 Go 代码中调用 CUDA 函数 我有以下三个文件 test h int test add void test cu global void add int a int b int c c a b int test add v
  • 用于类型比较的 Boost 静态断言

    以下问题给我编译器错误 我不知道如何正确编写它 struct FalseType enum value false struct TrueType enum value true template
  • Cuda Bayer/CFA 去马赛克示例

    我编写了一个 CUDA4 Bayer 去马赛克例程 但它比在 16 核 GTS250 上运行的单线程 CPU 代码慢 块大小是 16 16 图像暗淡是 16 的倍数 但更改此值并不会改善它 我做了什么明显愚蠢的事情吗 calling rou
  • 为什么 gcc 和 NVCC (g++) 会看到两种不同的结构大小?

    我正在尝试将 CUDA 添加到 90 年代末编写的现有单线程 C 程序中 为此 我需要混合两种语言 C 和 C nvcc 是 c 编译器 问题在于 C 编译器将结构视为特定大小 而 C 编译器将相同的结构视为略有不同的大小 那很糟 我对此感
  • “计算能力”是什么意思? CUDA?

    我是CUDA编程新手 对此了解不多 您能告诉我 CUDA 计算能力 是什么意思吗 当我在大学服务器上使用以下代码时 它向我显示了以下结果 for device 0 device lt deviceCount device cudaDevic
  • 在linux上编译一个基本的OpenCV + Cuda程序

    我过去在linux上使用过opencv 但没有使用过cuda 几个月来我一直在与以下编译错误作斗争 在尝试了许多解决方案后 我放弃并使用 Windows 不过 我真的很想在 Linux 上工作 这是我用来编译 opencv gpu 网站上给
  • 如何优化这个 CUDA 内核

    我已经分析了我的模型 似乎该内核约占我总运行时间的 2 3 我一直在寻找优化它的建议 代码如下 global void calcFlux double concs double fluxes double dt int idx blockI
  • CUDA Visual Studio 2010 Express 构建错误

    我正在尝试在 64 位 Windows 7 上使用 Visual Studio 2010 Express 在 Windows 上开始 CUDA 编程 我花了一段时间来设置环境 然后我刚刚编写了我的第一个程序 helloWorld cu 目前
  • CUDA 常量内存是否应该被均匀地访问?

    我的 CUDA 应用程序的恒定内存小于 8KB 既然它都会被缓存 我是否需要担心每个线程访问相同的地址以进行优化 如果是 如何确保所有线程同时访问同一地址 既然它都会被缓存 我是否需要担心每个线程访问相同的地址以进行优化 是的 这缓存本身每
  • CUDA 矩阵加法时序,按行与按行比较按栏目

    我目前正在学习 CUDA 并正在做一些练习 其中之一是实现以 3 种不同方式添加矩阵的内核 每个元素 1 个线程 每行 1 个线程和每列 1 个线程 矩阵是方阵 并被实现为一维向量 我只需用以下命令对其进行索引 A N row col 直觉
  • TensorRT 多线程

    我正在尝试使用 python API 来使用 TensorRt 我试图在多个线程中使用它 其中 Cuda 上下文与所有线程一起使用 在单个线程中一切正常 我使用 docker 和 tensorrt 20 06 py3 图像 onnx 模型和
  • __device__ __constant__ 常量

    有什么区别吗 在 CUDA 程序中定义设备常量的最佳方法是什么 在 C 主机 设备程序中 如果我想将常量定义在设备常量内存中 我可以这样做 device constant float a 5 constant float a 5 问题 1
  • cudaMemcpy() 与 cudaMemcpyFromSymbol()

    我试图找出原因cudaMemcpyFromSymbol 存在 似乎 symbol func 可以做的所有事情 nonSymbol cmd 也可以做 symbol func 似乎可以轻松移动数组或索引的一部分 但这也可以使用 nonSymbo
  • VS 程序在调试模式下崩溃,但在发布模式下不崩溃?

    我正在 VS 2012 中运行以下程序来尝试 Thrust 函数查找 include cuda runtime h include device launch parameters h include
  • 将 nvidia 运行时添加到 docker 运行时

    我正在运行虚拟机GCP配备特斯拉 GPU 并尝试部署一个PyTorch基于应用程序使用 GPU 加速 我想让 docker 使用这个 GPU 可以从容器访问它 我设法在主机上安装了所有驱动程序 并且该应用程序在那里运行良好 但是当我尝试在
  • CUDA 中指令重放的其他原因

    这是我从 nvprof CUDA 5 5 获得的输出 Invocations Metric Name Metric Description Min Max Avg Device Tesla K40c 0 Kernel MyKernel do
  • 如何运行和理解CUDA Visual Profiler?

    我已经设置了 CUDA 5 0 并且我的 CUDA 项目运行良好 但我不知道如何使用 Visual Profiler 分析我的 CUDA 项目 如何运行它 我还需要安装更多吗 又该如何做呢 我的电脑使用Window 7 64位 CUDA 5

随机推荐

  • 第三节课总结之关于this指向,变量提升以及跨域的解决方案

    this 变量提升 关于继承 跨域解决方法 gt gt this指向 Js是静态作用域 是在定义阶段就决定好了的 而不是在执行阶段才决定的 参考资料 https developer mozilla org en US docs Web Ja
  • Effective C++ 学习笔记 《六》

    Item 6 Explicitly disallow the use of compiler generated functions you do not want 其实这一节的内容是和item5紧密相连的 上一节的核心围绕着编译器会自动生
  • 一个缩进符引发的错误:NotImplementedError

    class EnDecoder nn Module def init self super EnDecoder self init 定义Encoder self Encoder nn Sequential nn Linear 784 512
  • 时钟分频的几个细节理解

    时钟分频原理简单 但需要注意几个细节 计数器分频 是基于源时钟div2 4 8 16 32 64 如果基于分频器串联 那么需要定义很多分频时钟 提升sdc时钟定义的复杂性 计数器分频 要注意所有div2 4 8 16 32 64 需要保证同
  • 申请Mob的SMSSDK的短信验证功能及获取包名和MD5签名

    当下很多App的登录方式多样化 但最常用的要数手机验证码登录了 所以如何实现这个功能便成了众多Android开发者关注的问题 所以我推荐一个网站 http www mob com 以便大家借助它的SMSSDK来完成短信验证码的功能 点击创建
  • 华为交换机 配置Console接口登陆认证

    拓扑图 1 认证方式一 密码 不安全 输入密码
  • pycharm里面离线安装dgl

    这两天安装dgl是真的头大 简直各种奇葩问题都能遇到 整整一天全在搞这些事 踩了各种坑之后 终于成功了 简直留下了感动的泪水 各种方法都没成功 最后是采用了离线安装的方法才成功的 step01 百度 dgl离线安装包 然后选择适合自己电脑的
  • Docker专题-入门与运维

    文章目录 Docker专题 基础知识 1 发展缘由 Docker 为什么要使用Docker 2 架构 3 基于Docker搭建私有镜像仓库 4 常见工具 5 常见命令 6附录 Docker专题 基础知识 1 发展缘由 1960年IBM开始推
  • 让vue项目支持glsl语法

    如果你想让Vue项目支持GLSL OpenGL着色语言 语法 你需要使用特殊的加载器使Webpack能够加载和解析GLSL文件 这一般可以通过下面的步骤实现 Install webpack glsl loader npm install w
  • GNU Radio + NI USRP B210模拟物理层(一):安装UHD与GNU Radio

    GNU Radio NI USRP B210模拟物理层 一 安装UHD与GNU Radio GNU Radio NI USRP B210模拟物理层 一 GNU Radio的环境搭建 一 环境搭建 1 硬件环境与版本选择 2 UHD安装 3
  • MAVEN-Maven项目的依赖项爆红、无法下载依赖(Dependencies)或Jar包

    首先我的这份文章只是提高一种解决思路 我不能保证它一定正确 只是作为一种思路来为大家解决maven项目报错 我在学习SSM框架的时候 我的Maven项目中我引用的依赖项频繁报错 我在网上寻找解决方案 找到的是比较普遍性的错误 而我报的错误比
  • vuecli项目打包

    1 有几个问题 1 你知道软件的开发流程吗 答 需求获取 需求分析 设计 开发 测试 打包部署 上线 2 为什么要打包 答 前端的html css js越来越多 打开一个页面发送http也就变得很多 让后端服务器有很大压力 前端不利于性能优
  • 写代码思维1

    先要有思路 然后再开始写代码 刚开始可以先将思路写在文档上 比如流程图之类 然后再将其转化为代码 思路 翻译成代码 开关灯flag按钮思维 include
  • 力导向图知识图谱可视化(节点可点击)

    用d3 js的力导向图写了一个知识图谱可视化的demo 节点可点击着实费了我不少功夫 如果小伙伴有更简单的方法还求留言呢 由于数据市实验室的某项目 不太好直接贴出来 反正这样的格式就好 反正是给大家参考的 name name type 0
  • 时间序列完全教程(R)

    简介 在商业应用中 时间是最重要的因素 能够提升成功率 然而绝大多数公司很难跟上时间的脚步 但是随着技术的发展 出现了很多有效的方法 能够让我们预测未来 不要担心 本文并不会讨论时间机器 讨论的都是很实用的东西 本文将要讨论关于预测的方法
  • Mysql底层数据结构学习总结

    索引数据结构 Mysql数据表中的数据在磁盘中分布位置可能是不连续的 在读取数据时 每读取一条数据就进行一次磁盘IO效率是很低的 为了减少IO次数 索引就诞生了 通过索引 我们可以快速定位到数据位置 增加查询效率 索引是一种排好序的数据结构
  • 深度学习总结——用自己的数据集微调CLIP

    CLIP概述 CLIP Contrastive Language Image Pretraining 是由OpenAI开发的一种深度学习模型 用于将图像和自然语言文本进行联合编码 它采用了多模态学习的方法 使得模型能够理解图像和文本之间的语
  • lbs、agps流程

    AT指令流程 CTZV 19 1 8 8 59 6 23 CIEV service 1 CIEV roam 0 CREG 1 AT CGDCONT 1 IP cmnet AT CGDCONT 1 IP cmnet OK AT CGACT 1
  • RTC和RTMP

    RTC 直播发布流程 offer answer 模型 直播订阅流程 1 使用UDP私有协议来进行媒体拉流 2 适用高互动性的直播场景 如在线教育 电商直播 远程医疗 3 低延时 lt 300ms 和无卡顿 4 快速切换分辨率 无需写上 服务
  • 在多线程中使用tensorRT

    仅记录 转自https www coder work article 4985246 import pycuda autoinit Create CUDA context import pycuda driver as cuda Main