distributed-ranges icon indicating copy to clipboard operation
distributed-ranges copied to clipboard

mhp::distributed_mdarray

Open lslusarczyk opened this issue 1 year ago • 0 comments

Summary

Created two-dimensional distributed matrix data structure. distributed_matrix

Concepts

  • A distributed_range is a forward_range with a segments that returns a range of remote_ranges.
  • A remote_range is a forward_range with a rank stating which memory locale it is in.

Feature details

Implement distributed matrix data structure, which automatically distributes a dense matrix among multiple memory locales. It should provide

  • Tile Partitioning - matrix automatically partitions a matrix into multiple tiles using a block cyclic distribution strategy that is customizable by the user by choosing either block or interleave on leading dimension.
  • Each tile is a remote_range matrix view that can be viewed individually using the tile method.
  • support halo exchange
  • Matrix Access: that is elements of the dense matrix can be access globally using operator[], which returns a remote reference to the corresponding element.
  • support an iterator interface, where the iterator iterates over every stored element of the matrix returning a tuple value holding the corresponding row and column index as well as scalar value.

Te structure needs to

  • be tested and functional on MPI backend.
  • support new Distributed Mdspan Algorithms: mdfor_each, mdfor_each_stencil, mdfor_each_tile
  • support new Distributed Mdspan Views: mdsubspan

lslusarczyk avatar Nov 07 '23 12:11 lslusarczyk