MCPcopy Create free account
hub / github.com/NVIDIA/TensorRT / BufferManager

Method BufferManager

samples/common/buffers.h:245–272  ·  view source on GitHub ↗

\brief Create a BufferManager for handling buffer interactions with engine.

Source from the content-addressed store, hash-verified

243 //! \brief Create a BufferManager for handling buffer interactions with engine.
244 //!
245 BufferManager(std::shared_ptr<nvinfer1::ICudaEngine> engine, const int batchSize = 0,
246 const nvinfer1::IExecutionContext* context = nullptr)
247 : mEngine(engine)
248 , mBatchSize(batchSize)
249 {
250 // Full Dims implies no batch size.
251 assert(engine->hasImplicitBatchDimension() || mBatchSize == 0);
252 // Create host and device buffers
253 for (int i = 0; i < mEngine->getNbBindings(); i++)
254 {
255 auto dims = context ? context->getBindingDimensions(i) : mEngine->getBindingDimensions(i);
256 size_t vol = context || !mBatchSize ? 1 : static_cast<size_t>(mBatchSize);
257 nvinfer1::DataType type = mEngine->getBindingDataType(i);
258 int vecDim = mEngine->getBindingVectorizedDim(i);
259 if (-1 != vecDim) // i.e., 0 != lgScalarsPerVector
260 {
261 int scalarsPerVec = mEngine->getBindingComponentsPerElement(i);
262 dims.d[vecDim] = divUp(dims.d[vecDim], scalarsPerVec);
263 vol *= scalarsPerVec;
264 }
265 vol *= samplesCommon::volume(dims);
266 std::unique_ptr<ManagedBuffer> manBuf{new ManagedBuffer()};
267 manBuf->deviceBuffer = DeviceBuffer(vol, type);
268 manBuf->hostBuffer = HostBuffer(vol, type);
269 mDeviceBindings.emplace_back(manBuf->deviceBuffer.data());
270 mManagedBuffers.emplace_back(std::move(manBuf));
271 }
272 }
273
274 //!
275 //! \brief Returns a vector of device buffers that you can use directly as

Callers

nothing calls this directly

Calls 10

getNbBindingsMethod · 0.80
getBindingDataTypeMethod · 0.80
divUpFunction · 0.70
volumeFunction · 0.70
DeviceBufferClass · 0.50
getBindingDimensionsMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected