Skip to content

Conversation

@adayton1
Copy link
Member

@adayton1 adayton1 commented Jan 9, 2026

  • All these new classes are experimental.
  • Adds Context as a experimental replacement for ExecutionSpace. Unlike ExecutionSpace, it does not mix execution spaces and memory types. It just contains execution spaces (HOST and DEVICE).
  • Adds ContextManager to control the current context and synchronization of contexts. This extracts a logical subset of functionality from ArrayManager.
  • Adds ContextGuard to set the current context for the remainder of the current scope (similar idea to std::lock_guard)

Future work:

  • Make a new ManagedArray class that takes an MemoryManager template argument. All the data coherence is managed by the MemoryManager, so that the new ManagedArray class really just enforces an interface. This will allow multiple different types of memory to be used side-by-side in CHAI applications and really simplify the configuration variables. It will also allow teams to implement their own memory managers if different behavior is desired.
  • Separate out dual memory space logic into a DualMemoryManager class
  • Separate out single memory space logic into a UnifiedMemoryManager class

@adayton1 adayton1 merged commit 43bcdf7 into develop Jan 12, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants