Skip to content
Snippets Groups Projects
Commit cba9d458 authored by Ben Cumming's avatar Ben Cumming Committed by Sam Yates
Browse files

Refactor domain decomposition for arbitrary gid distribution. (#326)

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
parent 98537ff2
No related branches found
No related tags found
No related merge requests found
Showing
with 436 additions and 327 deletions
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment