From 1d6047b998cbb5186d3aaf52997c516b168f68ad Mon Sep 17 00:00:00 2001 From: David Beckingsale Date: Fri, 17 Jan 2025 08:04:55 -0800 Subject: [PATCH 1/4] Forward allocation names in the NamedAllocationStrategy --- examples/cookbook/recipe_shared_memory.cpp | 5 +++++ src/umpire/strategy/NamedAllocationStrategy.cpp | 5 +++++ src/umpire/strategy/NamedAllocationStrategy.hpp | 1 + 3 files changed, 11 insertions(+) diff --git a/examples/cookbook/recipe_shared_memory.cpp b/examples/cookbook/recipe_shared_memory.cpp index b310895c9..9a1ecbfba 100644 --- a/examples/cookbook/recipe_shared_memory.cpp +++ b/examples/cookbook/recipe_shared_memory.cpp @@ -17,6 +17,7 @@ #include "umpire/config.hpp" #include "umpire/resource/HostSharedMemoryResource.hpp" #include "umpire/util/MemoryResourceTraits.hpp" +#include "umpire/strategy/NamedAllocationStrategy.hpp" // // For debugging purposes, this program uses the number of command line @@ -58,6 +59,8 @@ int main(int ac, char** av) // auto node_allocator{rm.makeResource("SHARED::node_allocator", traits)}; + auto named_node_allocator{rm.makeAllocator("My Node Allocator", node_allocator)}; + // // Resource of this allocator is SHARED // @@ -82,6 +85,7 @@ int main(int ac, char** av) // Allocate shared memory // void* ptr{node_allocator.allocate("allocation_name_2", sizeof(uint64_t))}; + void* ptr2{named_node_allocator.allocate("allocation two", 1024 )}; uint64_t* data{static_cast(ptr)}; if (shared_rank == foreman_rank) @@ -98,6 +102,7 @@ int main(int ac, char** av) UMPIRE_ASSERT(*data == 0xDEADBEEF); node_allocator.deallocate(ptr); + named_node_allocator.deallocate(ptr2); if (use_mpi) { MPI_Finalize(); diff --git a/src/umpire/strategy/NamedAllocationStrategy.cpp b/src/umpire/strategy/NamedAllocationStrategy.cpp index b9ad2a57e..0f42f09de 100644 --- a/src/umpire/strategy/NamedAllocationStrategy.cpp +++ b/src/umpire/strategy/NamedAllocationStrategy.cpp @@ -22,6 +22,11 @@ void* NamedAllocationStrategy::allocate(std::size_t bytes) return m_allocator->allocate_internal(bytes); } +void* NamedAllocationStrategy::allocate_named(std::string name, std::size_t bytes) +{ + return m_allocator->allocate_named_internal(name, bytes); +} + void NamedAllocationStrategy::deallocate(void* ptr, std::size_t size) { return m_allocator->deallocate_internal(ptr, size); diff --git a/src/umpire/strategy/NamedAllocationStrategy.hpp b/src/umpire/strategy/NamedAllocationStrategy.hpp index 3d44107d4..b58bace20 100644 --- a/src/umpire/strategy/NamedAllocationStrategy.hpp +++ b/src/umpire/strategy/NamedAllocationStrategy.hpp @@ -18,6 +18,7 @@ class NamedAllocationStrategy : public AllocationStrategy { NamedAllocationStrategy(const std::string& name, int id, Allocator allocator); void* allocate(std::size_t bytes) override; + void* allocate_named(std::string name, std::size_t bytes) override; void deallocate(void* ptr, std::size_t size) override; Platform getPlatform() noexcept override; From e42e523689d736442998f6accf1846de1b5c0ca5 Mon Sep 17 00:00:00 2001 From: github-actions Date: Fri, 17 Jan 2025 16:06:15 +0000 Subject: [PATCH 2/4] Apply style updates --- examples/cookbook/recipe_shared_memory.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/examples/cookbook/recipe_shared_memory.cpp b/examples/cookbook/recipe_shared_memory.cpp index 9a1ecbfba..33b887b40 100644 --- a/examples/cookbook/recipe_shared_memory.cpp +++ b/examples/cookbook/recipe_shared_memory.cpp @@ -16,8 +16,8 @@ #include "umpire/Umpire.hpp" #include "umpire/config.hpp" #include "umpire/resource/HostSharedMemoryResource.hpp" -#include "umpire/util/MemoryResourceTraits.hpp" #include "umpire/strategy/NamedAllocationStrategy.hpp" +#include "umpire/util/MemoryResourceTraits.hpp" // // For debugging purposes, this program uses the number of command line @@ -59,7 +59,8 @@ int main(int ac, char** av) // auto node_allocator{rm.makeResource("SHARED::node_allocator", traits)}; - auto named_node_allocator{rm.makeAllocator("My Node Allocator", node_allocator)}; + auto named_node_allocator{ + rm.makeAllocator("My Node Allocator", node_allocator)}; // // Resource of this allocator is SHARED @@ -85,7 +86,7 @@ int main(int ac, char** av) // Allocate shared memory // void* ptr{node_allocator.allocate("allocation_name_2", sizeof(uint64_t))}; - void* ptr2{named_node_allocator.allocate("allocation two", 1024 )}; + void* ptr2{named_node_allocator.allocate("allocation two", 1024)}; uint64_t* data{static_cast(ptr)}; if (shared_rank == foreman_rank) From b8c620d6d6704a69e0a561ca8b60875436e97f60 Mon Sep 17 00:00:00 2001 From: David Beckingsale Date: Fri, 17 Jan 2025 08:10:49 -0800 Subject: [PATCH 3/4] add test --- tests/integration/strategy_tests.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tests/integration/strategy_tests.cpp b/tests/integration/strategy_tests.cpp index afaea5cb2..736e117a0 100644 --- a/tests/integration/strategy_tests.cpp +++ b/tests/integration/strategy_tests.cpp @@ -763,4 +763,22 @@ TEST(NamingShimTests, TestAllocateDeallocate) shim.deallocate(ptr); } } + +TEST(NamedAllocatorTest, ForwardName) +{ + auto& rm = umpire::ResourceManager::getInstance(); + + auto traits{umpire::get_default_resource_traits("SHARED")}; + traits.size = 1 * 1024 * 1024; + traits.scope = umpire::MemoryResourceTraits::shared_scope::node; + + auto node_allocator{rm.makeResource("SHARED::allocator_for_named_test", traits)}; + + auto allocator{rm.makeAllocator("shared named alloc", node_allocator)}; + { + void* ptr = allocator.allocate("test", 1024); + EXPECT_NE(ptr, nullptr); + allocator.deallocate(ptr); + } +} #endif From 46d1df3e7acd6ff997b095f04758f5cbf2f20994 Mon Sep 17 00:00:00 2001 From: David Beckingsale Date: Fri, 17 Jan 2025 08:24:54 -0800 Subject: [PATCH 4/4] Fix signature for named_allocate --- src/umpire/strategy/NamedAllocationStrategy.cpp | 2 +- src/umpire/strategy/NamedAllocationStrategy.hpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/umpire/strategy/NamedAllocationStrategy.cpp b/src/umpire/strategy/NamedAllocationStrategy.cpp index 0f42f09de..64e5f6c39 100644 --- a/src/umpire/strategy/NamedAllocationStrategy.cpp +++ b/src/umpire/strategy/NamedAllocationStrategy.cpp @@ -22,7 +22,7 @@ void* NamedAllocationStrategy::allocate(std::size_t bytes) return m_allocator->allocate_internal(bytes); } -void* NamedAllocationStrategy::allocate_named(std::string name, std::size_t bytes) +void* NamedAllocationStrategy::allocate_named(const std::string& name, std::size_t bytes) { return m_allocator->allocate_named_internal(name, bytes); } diff --git a/src/umpire/strategy/NamedAllocationStrategy.hpp b/src/umpire/strategy/NamedAllocationStrategy.hpp index b58bace20..a7c5e5ca6 100644 --- a/src/umpire/strategy/NamedAllocationStrategy.hpp +++ b/src/umpire/strategy/NamedAllocationStrategy.hpp @@ -18,7 +18,7 @@ class NamedAllocationStrategy : public AllocationStrategy { NamedAllocationStrategy(const std::string& name, int id, Allocator allocator); void* allocate(std::size_t bytes) override; - void* allocate_named(std::string name, std::size_t bytes) override; + void* allocate_named(const std::string& name, std::size_t bytes) override; void deallocate(void* ptr, std::size_t size) override; Platform getPlatform() noexcept override;