MCPcopy Create free account
hub / github.com/DeepRec-AI/DeepRec / TryFreeMemoryStep

Method TryFreeMemoryStep

tensorflow/compiler/xrt/xrt_memory_manager.cc:313–351  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

311}
312
313Status XRTMemoryManager::TryFreeMemoryStep(MemoryReclaimContext* mrctx,
314 const Status& status) {
315 DeviceContext* device_context = GetDeviceContext(mrctx->device_ordinal,
316 /*create_if_missing=*/false);
317 if (device_context == nullptr) {
318 return status;
319 }
320 if (!mrctx->done_freeing) {
321 // If the caller passed us a zero requested_free_size, we try to free chunks
322 // of kMaxFreeSize memory, until either the run function suceeds, or we run
323 // out of freeable memory.
324 const size_t kMaxFreeSize = 1000000000;
325 size_t free_size =
326 (mrctx->requested_free_size > 0)
327 ? std::min<size_t>(mrctx->requested_free_size - mrctx->free_size,
328 kMaxFreeSize)
329 : kMaxFreeSize;
330 if (free_size > 0) {
331 auto free_size_or =
332 device_context->TryFreeMemory(mrctx->backend, free_size);
333 if (!free_size_or.ok()) {
334 return status;
335 }
336 size_t size = free_size_or.ValueOrDie();
337 mrctx->free_size += size;
338 if (size > 0) {
339 return Status::OK();
340 }
341 }
342 mrctx->done_freeing = true;
343 }
344 if (!mrctx->done_compacting) {
345 mrctx->done_compacting = true;
346 if (device_context->CompactAllocations(this, mrctx->backend).ok()) {
347 return Status::OK();
348 }
349 }
350 return status;
351}
352
353} // namespace tensorflow

Callers

nothing calls this directly

Calls 3

TryFreeMemoryMethod · 0.80
okMethod · 0.45
CompactAllocationsMethod · 0.45

Tested by

no test coverage detected