Labels instead of indices for placeable item identfication. (#1504)
New structs and types: * `cell_tag_type` (std::string): for labelling placeable items on a cell. The label refers to a number of items placed on a locset, equal to the number of locations in a locset. The number of locations in not always known to the user, so the previous way of using indices for items was no longer sufficient. * `lid_selection_policy`: for allowing a user to select a single item from a group of items sharing a label. Currently only `round_robin` and `assert_univalent` are supported. * `cell_local_label_type` and `cell_global_label_type`: for identifying the target and source of a connection or gap_junction connection. * `cell_label_ranges`, and `cell_labels_and_gids`: for propagating information about the labelled items on the cell from the cell groups back to the simulation and communicator. * `label_resolution_map` and `resolver`: for selecting an item (and retaining state) from a labelled group of items on a cell according to a user-selected policy. Changes to the model-initialization: * The `communicator` now needs `label_resolution_maps` constructed from the cell group data in order to build the `connections` vectors. * The `simulation_state` object handles the transfer of the information when it is constructed. * Spike exchange at runtime remains unchanged, because `communicator::connections` remains unchanged. Changes to cells, cell_groups and recipe: * `decor::place` expects a third label parameter, no longer returns an `lid_range`. * `lif`, `source`, and `benchmark` cells need source/target labels in their constructors. * A `cell_group` needs to save data about the gid/labels/lid_ranges of each cell, to propagate back to the `communicator` constructor. * Connections/gap junction connections are formed between {label, policy} pairs on cells instead of indices. * `num_sources`, `num_targets`, `num_gap_junction_sites` deleted from `recipe`. Additional changes: * Add MPI wrapper for exchanging vectors of strings. * Corresponding updates to unit tests, Python wrapper, C++ and Python examples, documentation. Fixes #1394
Showing
- arbor/CMakeLists.txt 1 addition, 0 deletionsarbor/CMakeLists.txt
- arbor/arbexcept.cpp 6 additions, 29 deletionsarbor/arbexcept.cpp
- arbor/benchmark_cell_group.cpp 12 additions, 2 deletionsarbor/benchmark_cell_group.cpp
- arbor/benchmark_cell_group.hpp 2 additions, 1 deletionarbor/benchmark_cell_group.hpp
- arbor/cable_cell.cpp 20 additions, 20 deletionsarbor/cable_cell.cpp
- arbor/cable_cell_param.cpp 2 additions, 3 deletionsarbor/cable_cell_param.cpp
- arbor/cell_group.hpp 6 additions, 0 deletionsarbor/cell_group.hpp
- arbor/cell_group_factory.cpp 8 additions, 8 deletionsarbor/cell_group_factory.cpp
- arbor/cell_group_factory.hpp 1 addition, 1 deletionarbor/cell_group_factory.hpp
- arbor/common_types_io.cpp 10 additions, 0 deletionsarbor/common_types_io.cpp
- arbor/communication/communicator.cpp 10 additions, 11 deletionsarbor/communication/communicator.cpp
- arbor/communication/communicator.hpp 2 additions, 0 deletionsarbor/communication/communicator.hpp
- arbor/communication/dry_run_context.cpp 25 additions, 9 deletionsarbor/communication/dry_run_context.cpp
- arbor/communication/mpi.hpp 42 additions, 0 deletionsarbor/communication/mpi.hpp
- arbor/communication/mpi_context.cpp 23 additions, 5 deletionsarbor/communication/mpi_context.cpp
- arbor/connection.hpp 5 additions, 5 deletionsarbor/connection.hpp
- arbor/distributed_context.hpp 44 additions, 13 deletionsarbor/distributed_context.hpp
- arbor/fvm_layout.cpp 5 additions, 2 deletionsarbor/fvm_layout.cpp
- arbor/fvm_lowered_cell.hpp 22 additions, 5 deletionsarbor/fvm_lowered_cell.hpp
- arbor/fvm_lowered_cell_impl.hpp 69 additions, 56 deletionsarbor/fvm_lowered_cell_impl.hpp
Please register or sign in to comment