Skip to content

First Principles for Multidimensional Array Data

Carter Edwards edited this page Oct 16, 2018 · 1 revision

First Principles for Multidimensional Array Data

Codomain

  • The codomain element space is a subset of elements residing within a contiguous span of memory.
  • Elements are (typically) of the same type and in-memory representation.

Domain

  • The domain index space is a Cartesion product of integer ranges.
  • Index ranges are (typically) dense.
  • The number of integer ranges is the rank of the domain index space.

Layout

  • The layout is a mapping from the domain index space to the codomain element space.
  • A layout mapping is (typically) an O(rank) computation.
    • Common rank-2 layout mappings are row major and column major.
  • A layout mapping is typically, but not required to be, injective.

License (definition: permission or freedom to act)

  • A computation may have a temporary license to operate on the codomain of a multidimensional array
  • Read (const): computation does not modify elements
  • Read-volatile: computation does not modify elements with expectation that elements are concurrently modified
  • Read-restrict: computation does not modify elements with guarantee that elements are not modified
  • Write: computation modifies elements
  • Write-volatile: computation modifies elements with expectation that elements are concurrently read
  • Write-restrict: computation claims exclusive access to elements for modification
  • Write-atomic: computation modifies elements with expectation that elements are concurrently modified

Locality

  • Characterization of a computations' accesses to elements with respect to the location(s) of those elements in memory
  • Dependent upon computations' scheduling and patterns in execution resources, and elements' scheduling and layout in memory resources
Clone this wiki locally