trt-yolo app 测试“try increasing the workspace size with IBuilder::setMaxWorkspaceSize()” 错误处理

解决Jetson Nano上运行TRT-YOLO App时的内存不足错误,通过调整workspace size参数,成功生成engine并实现正常运行。
部署运行你感兴趣的模型镜像

环境:

  - Board:                                                                                                                  Author: Raffaello Bonghi
    * Name:           NVIDIA Jetson NANO/TX1                                                                                e-mail: raffaello@rnext.it
    * Type:           NANO/TX1
    * Jetpack:        4.3 [L4T 32.3.1]
    * GPU-Arch:       5.3
    * SN:             1422219037419
  - Libraries:
    * CUDA:           10.0.326
    * cuDNN:          7.6.3.28-1+cuda10.0
    * TensorRT:       6.0.1.10-1+cuda10.0
    * VisionWorks:    1.6.0.500n
    * OpenCV:         3.4.6 compiled CUDA: YES

 

在jetson nano 上测试deepstream/trt-yolo-app,在第一次运行生成engine时,出现错误:

UNKNOWN: --------------- Timing Runner: mm1_19 (MatrixMultiply)
UNKNOWN: Tactic: 0 skipped. Scratch requested: 2621440, available: 1048576
UNKNOWN: Tactic: 1 skipped. Scratch requested: 2621440, available: 1048576
UNKNOWN: Fastest Tactic: -3360065831133338131 Time: 3.40282e+38
ERROR: Internal error: could not find any implementation for node mm1_19, try increasing the workspace size with IBuilder::setMaxWorkspaceSize()
ERROR: ../builder/tacticOptimizer.cpp (1461) - OutOfMemory Error in computeCosts: 0
trt-yolo-app: /root/soft/deepstream_reference_apps/yolo/lib/yolo.cpp:458: void Yolo::createYOLOEngine(nvinfer1::DataType, Int8EntropyCalibrator*): Assertion `m_Engine != nullptr' failed.
Aborted (core dumped)

处理:

修改yolo.cpp,增加workspace size

MAX_WorkspaceSize(1 << 30)

重新编译trt-yolo-app,可以正常生成engine,测试正常

 

您可能感兴趣的与本文相关的镜像

Yolo-v5

Yolo-v5

Yolo

YOLO(You Only Look Once)是一种流行的物体检测和图像分割模型,由华盛顿大学的Joseph Redmon 和Ali Farhadi 开发。 YOLO 于2015 年推出,因其高速和高精度而广受欢迎

### 降低 TensorRT 构建时内存池限制的解决方案 在使用 TensorRT 进行模型构建时,`IBuilderConfig` 提供了设置内存池限制的接口。若遇到 `max_workspace_size` 属性缺失的问题,这通常是因为 TensorRT 8.0 及以上版本已移除了该属性,转而采用新的 API 来控制内存池大小[^1]。 对于旧版本代码中使用的 `config.max_workspace_size = workspace << 30` 设置方式,在新版本中应替换为: ```python config.set_memory_pool_limit(trt.MemoryPoolType.WORKSPACE, workspace * (1 << 30)) ``` 其中 `trt.MemoryPoolType.WORKSPACE` 表示设置的是工作区内存池,`workspace` 是指定的内存大小(以 GB 为单位)。例如,若要将最大工作区内存设置为 1GB,则可以写为: ```python config.set_memory_pool_limit(trt.MemoryPoolType.WORKSPACE, 1 << 30) ``` 如果用户希望减少内存占用,可以通过降低传入的数值来实现,例如使用 `1 << 20` 表示 1MB 的工作区大小。这种调整方式适用于 YOLOv5 或其他基于 TensorRT 的推理框架中对构建阶段内存消耗进行限制的情况[^2]。 --- ### 示例:TensorRT IBuilderConfig 设置内存池限制 以下是一个完整的构建配置片段,展示如何在 Python 中使用 TensorRT API 设置内存池限制: ```python import tensorrt as trt # 初始化 logger 和 builder logger = trt.Logger(trt.Logger.WARNING) builder = trt.Builder(logger) # 创建网络定义 network = builder.create_network(1 << int(trt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH)) # 配置 builder config config = builder.create_builder_config() # 设置工作区内存池上限为 1MB config.set_memory_pool_limit(trt.MemoryPoolType.WORKSPACE, 1 << 20) # 继续构建 engine... ``` 上述代码展示了如何通过 `set_memory_pool_limit` 方法控制 TensorRT 构建过程中使用的最大内存量,避免因内存不足导致构建失败或性能下降。 --- ### 相关问题 TensorRT 提供了多种类型的内存池管理机制,包括设备内存和工作区内存等。合理配置这些参数不仅可以提升模型构建效率,还能优化推理阶段的资源使用。此外,不同版本的 TensorRT 在接口设计上存在差异,开发者需要根据实际环境选择合适的配置方式。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值