ICudaEngine 是 TensorRT 推理流程的核心载体,封装了优化后的计算图、内核函数及内存分配策略。以下从功能到实践全面解析其关键点:
一、核心职责
功能 | 说明 |
---|---|
模型执行载体 | 包含优化后的计算图、层实现及内存规划 |
资源管理 | 管理模型运行所需的GPU内存、CUDA流等资源 |
元数据访问 | 提供输入/输出张量信息(名称、维度、数据类型) |
上下文创建 | 生成多个执行上下文(IExecutionContext)支持并行推理 |
二、关键方法详解
1. 基础信息获取
// 获取引擎输入/输出数量
int numInputs = engine->getNbBindings() / 2; // 假设每个绑定有输入和输出
// 获取张量名称及维度
const char* name = engine->getBindingName(bindingIndex);
nvinfer1::Dims dims