Array Updates
Open
Nobody has claimed this yet.
Core
GPU
Reviewed
- Dominant language
- C++
- Stars
- 196
- Forks
- 34
- Avg merge
- 4d 1h
- Merged PRs (30d)
- 11
Description
From #627
I envision making the following changes in each PR (roughly in order)
- Extending Array to multiple dimensions - #627
- Replacing MCArray with Array (now that multiple dimensions are possible - #657
- Adding a View (ArrayView?) class that provides indexing/access to a pointer it does not own, while removing the external data feature from Array - #678
- Adding GPU support via a template parameter for the memory space of the Array/ArrayView - this needs to include a dynamic option so the memory space can be set at runtime - #695
Other (smaller?) feature requests/tasks:
- Support for alternate striding: see https://github.com/LLNL/axom/pull/627#discussion_r688185293 and https://github.com/LLNL/axom/pull/627#discussion_r685551077
- Using
axom::StackArrayinstead ofstd::arrayfor the return values (and internal storage) ofshape()et al - this will require some feature additions toStackArray- #695 - Remove
std::inner_productfrom index calculations so it can run on a GPU - #695 - Refactor
axom::numerics::Matrixto inherit fromaxom::Array - Move Array helper/related classes into their own header files - #684
- Update
ArrayIteratorto be aware of the shape of multidimensional arrays (https://github.com/LLNL/axom/pull/678#discussion_r729414721) - Fuzzy equality comparisons for Arrays/ArrayViews of floating-point types (https://github.com/LLNL/axom/pull/678#discussion_r729413987) and also StackArray?
- Default-initialize memory, but provide an option (dummy argument to constructor maybe?) to leave memory uninitialized - #709
- Add another layer of policy classes that allow for the host/device annotations to match the
MemorySpacewhen it's locked down - point of contact @samuelpmishLLNL - Swapping Arrays located in different memory spaces - see https://github.com/LLNL/axom/pull/695#discussion_r742433506
- Dealing with allocator IDs that are "compatible" with a memory space but are different from the "primary" allocator for that space (e.g., pooled allocators) - see https://github.com/LLNL/axom/pull/695#discussion_r742433949 and https://github.com/LLNL/axom/pull/695#discussion_r743272000 - primarily we'd want to use this to make sure that we don't throw a spurious error when constructing
ArrayViews or in similar contexts - Possible extension to
detail::getAllocatorID(FIXME needs clarification) - see https://github.com/LLNL/axom/pull/695#discussion_r743249511 - Ranges for iterating over each dimension - https://github.com/LLNL/serac/pull/596#discussion_r751448475
-
const Array<T>toArrayView<const T>conversion - #709 - Enhance checks for non-default-constructible types - see https://github.com/LLNL/axom/pull/709#discussion_r752507807
- Add
initializer_listconstructors toaxom::Array- see #808
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.