| 234 | } |
| 235 | |
| 236 | void DeviceManager::setMemoryManager( |
| 237 | std::unique_ptr<MemoryManagerBase> newMgr) { |
| 238 | std::lock_guard<std::mutex> l(mutex); |
| 239 | // It's possible we're setting a memory manager and the default memory |
| 240 | // manager still hasn't been initialized, so initialize it anyways so we |
| 241 | // don't inadvertently reset to it when we first call memoryManager() |
| 242 | memoryManager(); |
| 243 | // Calls shutdown() on the existing memory manager. |
| 244 | if (memManager) { memManager->shutdownAllocator(); } |
| 245 | memManager = std::move(newMgr); |
| 246 | // Set the backend memory manager for this new manager to register native |
| 247 | // functions correctly. |
| 248 | std::unique_ptr<oneapi::Allocator> deviceMemoryManager( |
| 249 | new oneapi::Allocator()); |
| 250 | memManager->setAllocator(std::move(deviceMemoryManager)); |
| 251 | memManager->initialize(); |
| 252 | } |
| 253 | |
| 254 | void DeviceManager::resetMemoryManager() { |
| 255 | // Replace with default memory manager |
no test coverage detected