Skip to content

Commit 5a42139

Browse files
committed
Don't initialize if already initialized. Don't finalize if not initialized.
1 parent 29452d2 commit 5a42139

File tree

1 file changed

+28
-24
lines changed

1 file changed

+28
-24
lines changed

src/rmm.cpp

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -59,38 +59,42 @@ const char * rmmGetErrorString(rmmError_t errcode) {
5959
// Initialize memory manager state and storage.
6060
rmmError_t rmmInitialize(rmmOptions_t *options)
6161
{
62-
rmm::Manager::getInstance().initialize(options);
63-
64-
rmm::mr::device_memory_resource * memory_resource = nullptr;
65-
66-
if (rmm::Manager::usePoolAllocator()) {
67-
if (rmm::Manager::useManagedMemory()) {
68-
memory_resource = new rmm::mr::cnmem_managed_memory_resource{
69-
rmm::Manager::getOptions().initial_pool_size};
70-
} else {
71-
memory_resource = new rmm::mr::cnmem_memory_resource{
72-
rmm::Manager::getOptions().initial_pool_size};
73-
}
74-
} else if (rmm::Manager::useManagedMemory()) {
75-
memory_resource = new rmm::mr::managed_memory_resource();
62+
if (!rmm::Manager::getInstance().isInitialized()) {
63+
rmm::Manager::getInstance().initialize(options);
64+
65+
rmm::mr::device_memory_resource * memory_resource = nullptr;
66+
67+
if (rmm::Manager::usePoolAllocator()) {
68+
if (rmm::Manager::useManagedMemory()) {
69+
memory_resource = new rmm::mr::cnmem_managed_memory_resource{
70+
rmm::Manager::getOptions().initial_pool_size};
71+
} else {
72+
memory_resource = new rmm::mr::cnmem_memory_resource{
73+
rmm::Manager::getOptions().initial_pool_size};
74+
}
75+
} else if (rmm::Manager::useManagedMemory()) {
76+
memory_resource = new rmm::mr::managed_memory_resource();
77+
}
78+
79+
rmm::mr::set_default_resource(memory_resource);
7680
}
7781

78-
rmm::mr::set_default_resource(memory_resource);
79-
8082
return RMM_SUCCESS;
8183
}
8284

8385
// Shutdown memory manager.
8486
rmmError_t rmmFinalize()
8587
{
86-
// delete the current default resource to reset it, and replace with the
87-
// initial resource, so that subsequent calls to initialize will act
88-
// just like the first call to initialize
89-
rmm::mr::device_memory_resource *mr = rmm::mr::get_default_resource();
90-
rmm::mr::set_default_resource(nullptr);
91-
delete mr;
92-
93-
rmm::Manager::getInstance().finalize();
88+
if (rmm::Manager::getInstance().isInitialized()) {
89+
// delete the current default resource to reset it, and replace with the
90+
// initial resource, so that subsequent calls to initialize will act
91+
// just like the first call to initialize
92+
rmm::mr::device_memory_resource *mr = rmm::mr::get_default_resource();
93+
rmm::mr::set_default_resource(nullptr);
94+
delete mr;
95+
96+
rmm::Manager::getInstance().finalize();
97+
}
9498
return RMM_SUCCESS;
9599
}
96100

0 commit comments

Comments
 (0)