Skip to content
Snippets Groups Projects
  • Ben Cumming's avatar
    Refactor domain decomposition for arbitrary gid distribution. (#326) · cba9d458
    Ben Cumming authored and Sam Yates's avatar Sam Yates committed
    Changes to `domain_decomposition`:
      * `domain_decomposition` performs two pass load balancing in constructor:
          1. first pass performs global load balance,
          2. second pass distributes cells locally between cpu and gpu cell_groups.
        The current logic for this is very simple and naive, and will be replaced with a load balancer which returns a lighter domain decomposition description in a follow up pull request.
      * Provides a simple `group_description` type that contains gid, `cell_kind` and target backend information for `cell_group_factory`.
    
    Changes to `communicator`:
      * Constructor takes a `domain_decomposition` and recipe.
      * The interface for adding connections and constructing connection table has been removed, as this is now performed within the constructor.
      * Construction is more complicated, as connections are partitioned by source gid which requires multiple passes over the connection information in the recipe.
      * `make_event_queues` updated: spikes and connections are now partitioned by source domain, and an optimization dynamically chooses to iterate over either connection or spike list, whichever is shorter.
      * The `exchange` method now sorts `local_spikes` before global gather to facilitate the optimized spike/connection searching.
    
    Changes to `miniapp`:
      * Automatically use gpu if available and compiled with gpu support.
      * Banner prints out useful information about number of cores, gpus and ranks.
      * Remove -g cell group size flag.
    
    Changes to `cell_group`:
      * `cell_group` interface take a list of gid values instead of a range.
      * Updated internal `cell_group` logic to convert between gid and local indices: use a vector for local index to gid map, and a hash table for gid to local index in `cell_group` implementations that need this lookup.
    
    changes to unit tests
      * tests for the domain decomposition
      * tests for the communicator that test ring and all2all networks
    cba9d458