问题背景:在使用C++版本的TensorRT框架做模型推理时,会遇到前向推理速度不稳定的情况。
问题1:同一个模型,同一套代码在运行时速度不稳定,比如一会儿24ms,然后隔一会再去推理就变成了90ms,再又降到30ms。
问题原因:不仅TensorRT框架有这种现象,Libtorch、onnx框架也存在类似的情况。其根本原因是数据从显存到内存的时间不稳定所导致的,即:cudaMemcpyAsync in cudaMemcpyDeviceToHost mode is slow。
(
也可以自己用打印以下部分代码的运行时间验证结论:
1:预处理:vector< cv::Mat >—>float *
2:数据从内存喂入显存:cudaMemcpyAsync(mBinding[bindIndex], input, mBindingSize[bindIndex], cu