在 TensorRT 中,ICudaEngine
和 IExecutionContext
之间的关系是层次性和功能性的:
-
ICudaEngine(代表由engine变量表示):
ICudaEngine
是模型的优化版本,它是通过解析和优化训练好的深度学习模型得到的。它包含了执行推理所需的所有操作和参数。- 您可以将
ICudaEngine
视为一个准备好的、优化过的模型,它知道如何进行高效的计算,但尚未准备好直接执行这些计算。
-
IExecutionContext(由context变量表示):
IExecutionContext
是从ICudaEngine
创建的,用于执行推理。它是执行环境的实例,可以进行实际的推理计算。- 您可以将
IExecutionContext
理解为对特定输入执行模型的“会话”。它保持了模型推理期间的状态,例如输入和输出的内存。
总的来说,ICudaEngine
提供了执行模型所需的所有信息和资源,而 IExecutionContext
则利用这些信息来进行实际的推理运算。在实际使用中,通常首先从 .plan
文件加载或生成 ICudaEngine
,然后从这个引擎创建一个或多个 IExecutionContext
,用于处理实际的推理请求。这种设计允许同一个引擎(模型)被用于多个并行的推理任务,每个任务使用各自的执行上下文。</