1.1 Model Option 模型选项
| –uff : UFF模型文件名 |
| –onnx : ONNX模型文件名 |
| –model : Caffe模型文件名,模式时无模型,使用随机权重 |
| –deploy : Caffe prototxt 文件名 |
| –output : 输出名称(可多次指定);UFF和Caffe至少需要一个输出 |
| –uffInput : 输入blob名称及其维度(X、Y、Z=C、H、W),可以多次指定;UFF型号至少需要一个 |
| –uffNHWC : 设置输入是否在NHWC布局中而不是NCHW中(在–uffInput中使用X、Y、Z=H、W、C顺序) |
1.2 Build Options 构建选项
| –maxBatch : 设置最大批处理大小并构建隐式批处理引擎(默认值=1) |
| –explicitBatch :构建引擎时使用显式批量大小(默认 = 隐式) |
| –minShapes=spec : 使用提供的最小形状的配置文件构建动态形状 |
| –optShapes=spec : 使用提供的 opt 形状的配置文件构建动态形状 |
| –maxShapes=spec : 使用提供的最大形状的配置文件构建动态形状 |
| –minShapesCalib=spec : 使用提供的最小形状的配置文件校准动态形状 |
| –optShapesCalib=spec : 使用提供的 opt 形状的配置文件校准动态形状 |
| –maxShapesCalib=spec :使用提供的最大形状的配置文件校准动态形状 |
| 注意:必须提供所有三个 min、opt 和 max 形状。但是,如果只提供了 opt 形状,那么它将被扩展,以便将最小形状和最大形状设置为与 opt 形状相同的值。此外,使用 动态形状意味着显式批处理。 输入名称可以用转义单引号括起来(例如:‘Input:0’)。示例输入形状规范:input0:1x3x256x256,input1:1x3x128x128 每个输入形状都作为键值对提供,其中 key 是输入名称 值是用于该输入的维度(包括批次维度)。 每个键值对都使用冒号 (😃 分隔键和值。 可以通过逗号分隔的键值对提供多个输入形状。 |
| –inputIOFormats=spec : 每个输入张量的类型和格式(默认所有输入为fp32:chw) |
| 注意:如果指定此选项,请按照与网络输入ID相同的顺序为所有输入设置逗号分隔的类型和格式(即使只有一个输入需要指定IO格式)或设置一次类型和格式以进行广播。 |
| –outputIOFormats=spec : 每个输出张量的类型和格式(默认所有输入为fp32:chw) |
| 注意:如果指定此选项,请按照与网络输出ID相同的顺序为所有输出设置逗号分隔的类型和格式(即使只有一个输出需要指定IO格式)或设置一次类型和格式以进行广播。 |
| –workspace=N : 以M为单位设置工作区大小(默认值 = 16) |
| –noBuilderCache : 在构建器中禁用时序缓存(默认是启用时序缓存) |
| –nvtxMode=mode : 指定 NVTX 注释详细程度。 mode ::= default|verbose|none |
| –minTiming=M : 设置内核选择中使用的最小迭代次数(默认值 = 1) |
| –avgTiming=M : 为内核选择设置每次迭代的平均次数(默认值 = 8) |
| –noTF32 : 禁用 tf32 精度(默认是启用 tf32,除了 fp32) |
| –refit : 将引擎标记为可改装。这将允许检查引擎内的可改装层和重量。 |
| –fp16 : 除 fp32 外,启用 fp16 精度(默认 = 禁用) |
| –int8 : 除 fp32 外,启用 int8 精度(默认 = 禁用) |
| –best : 启用所有精度以达到最佳性能(默认 = 禁用) |
| –calib= : 读取INT8校准缓存文件 |
| –safe : 仅测试安全受限流中可用的功能 |
| –saveEngine= : 保存序列化模型的文件名 |
| –loadEngine= : 加载序列化模型的文件名 |
| –tacticSources=tactics : 通过从默认策略源(默认 = 所有可用策略)中添加 (+) 或删除 (-) 策略来指定要使用的策略。 |
1.3 Inference Options 推理选项
| –batch=N : 为隐式批处理引擎设置批处理大小(默认值 = 1) |
| –shapes=spec : 为动态形状推理输入设置输入形状。 |
| 注意:使用动态形状意味着显式批处理。 输入名称可以用转义的单引号括起来(例如:‘Input:0’)。 示例输入形状规范:input0:1x3x256x256, input1:1x3x128x128 每个输入形状都作为键值对提供,其中键是输入名称,值是用于该输入的维度(包括批次维度)。 每个键值对都使用冒号 (😃 分隔键和值。 可以通过逗号分隔的键值对提供多个输入形状。 |
| –loadInputs=spec :从文件加载输入值(默认 = 生成随机输入)。 输入名称可以用单引号括起来(例如:‘Input:0’) |
| –iterations=N : 至少运行 N 次推理迭代(默认值 = 10) |
| –warmUp=N : 在测量性能之前运行 N 毫秒以预热(默认值 = 200) |
| –duration=N : 运行至少 N 秒挂钟时间的性能测量(默认值 = 3) |
| –sleepTime=N : 延迟推理以启动和计算之间的 N 毫秒间隔开始(默认 = 0) |
| –streams=N : 实例化 N 个引擎以同时使用(默认值 = 1) |
| –exposeDMA : 串行化进出设备的 DMA 传输。 (默认 = 禁用) |
| –noDataTransfers : 在推理过程中,请勿将数据传入和传出设备。 (默认 = 禁用) |
| –useSpinWait : 主动同步 GPU 事件。 此选项可能会减少同步时间,但会增加 CPU 使用率和功率(默认 = 禁用) |
| –threads : 启用多线程以驱动具有独立线程的引擎(默认 = 禁用) |
| –useCudaGraph : 使用 cuda 图捕获引擎执行,然后启动推理(默认 = 禁用) |
| –separateProfileRun : 不要在基准测试中附加分析器; 如果启用分析,将执行第二次分析运行(默认 = 禁用) |
| –buildOnly : 跳过推理性能测量(默认 = 禁用) |
1.4 Build and Inference Batch Options 构建和推理批处理选项
使用隐式批处理时,引擎的最大批处理大小(如果未指定)设置为推理批处理大小; 使用显式批处理时,如果仅指定形状用于推理,它们也将在构建配置文件中用作 min/opt/max; 如果只为构建指定了形状,则 opt 形状也将用于推理; 如果两者都被指定,它们必须是兼容的; 如果启用了显式批处理但都未指定,则模型必须为所有输入提供完整的静态维度,包括批处理大小
1.5 Reporting Options 报告选项
| –verbose : 使用详细日志记录(默认值 = false) |
| –avgRuns=N : 报告 N 次连续迭代的平均性能测量值(默认值 = 10) |
| –percentile=P : 报告 P 百分比的性能(0<=P<=100,0 代表最大性能,100 代表最小性能;(默认 = 99%) |
| –dumpRefit : 从可改装引擎打印可改装层和重量 |
| –dumpOutput : 打印最后一次推理迭代的输出张量(默认 = 禁用) |
| –dumpProfile : 每层打印配置文件信息(默认 = 禁用) |
| –exportTimes= : 将计时结果写入 json 文件(默认 = 禁用) |
| –exportOutput= : 将输出张量写入 json 文件(默认 = 禁用) |
| –exportProfile= : 将每层的配置文件信息写入 json 文件(默认 = 禁用) |
1.6 System Options 系统选项
| –device=N :选择 cuda 设备 N(默认 = 0) |
| –useDLACore=N : 为支持 DLA 的层选择 DLA 核心 N(默认 = 无) |
| –allowGPUFallback : 启用 DLA 后,允许 GPU 回退不受支持的层(默认 = 禁用) |
| –plugins : 要加载的插件库 (.so)(可以多次指定) |
命令实战:【trtexec】trtexec命令实战-CSDN博客
参考资料:
TensorRT/samples/trtexec at master · NVIDIA/TensorRT · GitHub
TensorRT trtexec的用法说明_trtexec --inputioformats和--outputioformats同时指定报错-CSDN博客
TensorRT - 自带工具trtexec的参数使用说明-CSDN博客
17. TensorRT 的命令行程序 - NVIDIA 技术博客
TensorRT: TensorRT Command-Line Wrapper: trtexec