diff --git a/src/cuda/api/memory.hpp b/src/cuda/api/memory.hpp index dfb0c808..43ba9ee9 100644 --- a/src/cuda/api/memory.hpp +++ b/src/cuda/api/memory.hpp @@ -1697,17 +1697,15 @@ inline void zero(T* ptr) */ namespace managed { -struct const_region_t; - namespace detail_ { using advice_t = CUmem_advise; template -inline T get_scalar_range_attribute(managed::const_region_t region, range_attribute_t attribute); +inline T get_scalar_range_attribute(const_region_t region, range_attribute_t attribute); -inline void advise(managed::const_region_t region, advice_t advice, cuda::device::id_t device_id); -// inline void advise(managed::const_region_t region, advice_t attribute); +inline void advise(const_region_t region, advice_t advice, cuda::device::id_t device_id); +// inline void advise(const_region_t region, advice_t attribute); template struct base_region_t : public memory::detail_::base_region_t { @@ -1738,26 +1736,16 @@ struct base_region_t : public memory::detail_::base_region_t { } // namespace detail_ -struct region_t : public detail_::base_region_t { - using base_region_t::base_region_t; - operator memory::region_t() { return memory::region_t{ start(), size() }; } -}; - -struct const_region_t : public detail_::base_region_t { - using base_region_t::base_region_t; - const_region_t(const region_t& r) : detail_::base_region_t(r.start(), r.size()) {} -}; - -void advise_expected_access_by(managed::const_region_t region, device_t& device); -void advise_no_access_expected_by(managed::const_region_t region, device_t& device); +void advise_expected_access_by(const_region_t region, device_t& device); +void advise_no_access_expected_by(const_region_t region, device_t& device); template > - typename ::std::vector accessors(managed::const_region_t region, const Allocator& allocator = Allocator() ); + typename ::std::vector accessors(const_region_t region, const Allocator& allocator = Allocator() ); namespace detail_ { template -inline T get_scalar_range_attribute(managed::const_region_t region, range_attribute_t attribute) +inline T get_scalar_range_attribute(const_region_t region, range_attribute_t attribute) { uint32_t attribute_value { 0 }; auto result = cuMemRangeGetAttribute( @@ -1769,14 +1757,14 @@ inline T get_scalar_range_attribute(managed::const_region_t region, range_attrib // CUDA's range "advice" is simply a way to set the attributes of a range; unfortunately that's // not called cuMemRangeSetAttribute, and uses a different enum. -inline void advise(managed::const_region_t region, advice_t advice, cuda::device::id_t device_id) +inline void advise(const_region_t region, advice_t advice, cuda::device::id_t device_id) { auto result = cuMemAdvise(device::address(region.start()), region.size(), advice, device_id); throw_if_error_lazy(result, "Setting an attribute for a managed memory range at " + cuda::detail_::ptr_as_hex(region.start())); } -// inline void set_range_attribute(managed::const_region_t region, range_attribute_t attribute, cuda::device::handle_t device_id) +// inline void set_range_attribute(const_region_t region, range_attribute_t attribute, cuda::device::handle_t device_id) inline advice_t as_advice(range_attribute_t attribute, bool set) { @@ -1793,13 +1781,13 @@ inline advice_t as_advice(range_attribute_t attribute, bool set) } } -inline void set_range_attribute(managed::const_region_t region, range_attribute_t settable_attribute, cuda::device::id_t device_id) +inline void set_range_attribute(const_region_t region, range_attribute_t settable_attribute, cuda::device::id_t device_id) { static constexpr const bool set { true }; advise(region, as_advice(settable_attribute, set), device_id); } -inline void unset_range_attribute(managed::const_region_t region, range_attribute_t settable_attribute) +inline void unset_range_attribute(const_region_t region, range_attribute_t settable_attribute) { static constexpr const bool unset { false }; static constexpr const cuda::device::id_t dummy_device_id { 0 }; diff --git a/src/cuda/api/stream.hpp b/src/cuda/api/stream.hpp index 84198398..ac9a45bb 100644 --- a/src/cuda/api/stream.hpp +++ b/src/cuda/api/stream.hpp @@ -593,7 +593,7 @@ class stream_t { * you must pass whatever @ref cuda::memory::managed::allocate() returned. */ void attach_managed_region( - memory::managed::region_t region, + memory::region_t region, memory::managed::attachment_t attachment = memory::managed::attachment_t::single_stream) const { attach_managed_region(region.start(), attachment);