Objective: To provide array slicing functionality from the global address space, and to determine the semantics of the result of distributed array slicing, that is, whether to make the result of a slice a distributed array view, or a copy, or user-specifiable.
Relevance: Array slicing and array views are a key feature of existing NumPy, and providing their distributed analogue will be useful and familiar to existing NumPy users. Array slices will result in a new array, but whether they share the underlying data buffer with the original array is complicated by the distributed nature of ODIN. Shared distributed array views are non-trivial, and this task will explore the feasibility of distributed array views with shared-memory semantics.
Description: Distributed array slicing has ambiguities that will require exploration and prototyping to determine the best strategy for different usecases: should distributed views be supported for all slicing operations? If an array slice results in a sub-optimally distributed array, should the sliced array be redistributed for performance reasons? How can the end-user control different array slicing options?
Objective: To provide array slicing functionality from the global address space, and to determine the semantics of the result of distributed array slicing, that is, whether to make the result of a slice a distributed array view, or a copy, or user-specifiable.
Relevance: Array slicing and array views are a key feature of existing NumPy, and providing their distributed analogue will be useful and familiar to existing NumPy users. Array slices will result in a new array, but whether they share the underlying data buffer with the original array is complicated by the distributed nature of ODIN. Shared distributed array views are non-trivial, and this task will explore the feasibility of distributed array views with shared-memory semantics.
Description: Distributed array slicing has ambiguities that will require exploration and prototyping to determine the best strategy for different usecases: should distributed views be supported for all slicing operations? If an array slice results in a sub-optimally distributed array, should the sliced array be redistributed for performance reasons? How can the end-user control different array slicing options?