TensorRT context.enqueue对于除第一帧之外的所有帧给出错误的结果

时间:2018-10-17 13:41:43

标签: c++ cuda nvidia tensorrt

我正在尝试使用TensorRT API在多个图像上进行推理。 我的应用程序的伪代码段是

context.enqueue(batchSize, buffers, stream, nullptr);

在这里

buffers[0] = batchSize * INPUT_C * INPUT_H * INPUT_W
        buffers[1] = batchSize * outputSize

如果我使用batchSize = 1运行,则输出正确,但batchSize> 1时,检测到除第一张图像以外的其他图像是错误的。 此外,对于batchSize = 1,推断时间为7ms,对于batchSize = 3,推断时间约为16ms。因此,解决此问题将大大促进我的应用程序的正常运行。

有人可以建议我什么我可以尝试解决的问题。 我正在以这种方式将内存分配给“缓冲区”

for (int b = 0; b < engine.getNbBindings(); b++)
    {
        DimsCHW dims = static_cast<DimsCHW&&>(engine.getBindingDimensions(b));
        size_t size = batchSize * dims.c() * dims.h() * dims.w() * sizeof(float);
        std::cout << "size of buff = " << size << std::endl;
        CudaCHECK(cudaMalloc(&buffers[b], size));
    }

应该是一维矢量还是二维矢量? 谢谢!

0 个答案:

没有答案