| 392 | } |
| 393 | |
| 394 | void DeviceManager::setMemoryManager( |
| 395 | std::unique_ptr<MemoryManagerBase> newMgr) { |
| 396 | std::lock_guard<std::mutex> l(mutex); |
| 397 | // It's possible we're setting a memory manager and the default memory |
| 398 | // manager still hasn't been initialized, so initialize it anyways so we |
| 399 | // don't inadvertently reset to it when we first call memoryManager() |
| 400 | memoryManager(); |
| 401 | // Calls shutdown() on the existing memory manager. |
| 402 | if (memManager) { memManager->shutdownAllocator(); } |
| 403 | memManager = std::move(newMgr); |
| 404 | // Set the backend memory manager for this new manager to register native |
| 405 | // functions correctly. |
| 406 | std::unique_ptr<cuda::Allocator> deviceMemoryManager(new Allocator()); |
| 407 | memManager->setAllocator(std::move(deviceMemoryManager)); |
| 408 | memManager->initialize(); |
| 409 | } |
| 410 | |
| 411 | void DeviceManager::resetMemoryManager() { |
| 412 | // Replace with default memory manager |
no test coverage detected