Is your feature request related to a problem? Please describe.
There is a significant amount of redundancy among the static_map/static_multimap/static_reduction_map classes. This is a large maintenance overhead and means optimizations made to one data structure do not translate to the others.
Furthermore, there are several configuration options we'd like to enable, like using AoS vs SOA, scalar vs. CG operations, etc.
I'd also like to enable adding a static_set and static_multiset classes that could share the same backend.
Describe the solution you'd like
List of things I'd like to address:
My current thinking is to create an open_address_impl class that provides an abstraction for a logical array of "slots" and exposes operations on those slots. All the core logic and switching for things like AoS/SoA, atomic_ref/atomic can/should be implemented in this common impl class.
Is your feature request related to a problem? Please describe.
There is a significant amount of redundancy among the
static_map/static_multimap/static_reduction_mapclasses. This is a large maintenance overhead and means optimizations made to one data structure do not translate to the others.Furthermore, there are several configuration options we'd like to enable, like using AoS vs SOA, scalar vs. CG operations, etc.
I'd also like to enable adding a
static_setandstatic_multisetclasses that could share the same backend.Describe the solution you'd like
List of things I'd like to address:
cuda::atomictocuda::atomic_ref#183atomic_refinstead ofatomic.std::spanwithstd::dynamic_extentto support both dynamic and statically sized capacities.static_setandstatic_multisetbitwise_equalMy current thinking is to create an
open_address_implclass that provides an abstraction for a logical array of "slots" and exposes operations on those slots. All the core logic and switching for things like AoS/SoA, atomic_ref/atomic can/should be implemented in this common impl class.