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