gko::experimental::distributed::Partition

  • vectors and matrices are row-wise distributed

  • each row has an owning process

  • represented by partition

    • image to show partition

  • stored as collection of half-open intervals called ranges

  • each range belongs to a part, i.e. process

Creating

  • multiple creation patterns supported

    • specify the part for each index

    • provide only ranges and part-ids

      • can leave out part-ids, then each range will belong to part-id same as range-id

    • uniform sizes for a given global size and number of parts

  • partition can’t be changed after created

Helper Functions

  • require communication

  • each part specifies only its own size, global size and ranges are inferred

  • each part specifies only its own range, …, checks if no gaps globally

Accessing

  • only const accessors

  • scalar query functions

    • get_size

    • get_num_ranges

    • get_num_parts

    • get_num_empty_parts

  • array query functions

    • compressed range bounds

    • range starting indices

    • part id per range

    • part size