TensorRT使用TX2进行FP16和FP32的时间计算

本工程基于VGG16 Refindet SSD进行目标检测,在没有使用TensorRT库的时,测试没帧图片所需时间130ms(从读入原始图片到测试出最终的结果)。使用半精度(FP16:float16)每帧图片的测试时间降到50~60ms;使用单精度(FP32:float32)每帧图片给的测试时间降到80~90ms。

使用TensorRT提速时如何操作?

首先平台支持半精度计算,这个如何判断?

在TensorRT的示例代码中有这样一行代码:

bool useFp16 = builder->platformHasFastFp16();

若返回的是false,则平台不支持FP16计算;若返回是true,则平台支持FP16计算;

其实最终决定是否能进行FP16计算的因素是你的平台使用的集成显卡(igpu),还是独立显卡(dgpu),只有集成显卡才支持FP16计算(参考:https://github.com/dusty-nv/jetson-inference/issues/134);

如果代码返回是false,强制进行FP16计算,并不能提速;

现将设置精度计算的几行重点代码摘录如下:

bool useFp16 = builder->platformHasFastFp16();
DataType modelDataType = useFp16 ? DataType::kHALF : DataType::kFLOAT;
const IBlobNameToTensor* blobNameToTensor =	parser->parse(deployFile.c_str(),
                                                              modelFile.c_str(),
                                                              *network,
                                                              modelDataType);
。。。 。。。(省略)
if(useFp16)
{
    builder->setHalf2Mode(true);
}

参考:

https://blog.csdn.net/dark5669/article/details/79976015

https://docs.nvidia.com/deeplearning/sdk/tensorrt-developer-guide/index.html#mixed_precision(中的2.4.1节)

https://docs.nvidia.com/deeplearning/sdk/tensorrt-developer-guide/index.html#deploy_embed(中的2.5.2节)

 

 

你可能感兴趣的:(TensorRT)