Closes #80. Refactors the splitter logic for adding / removing connections to occur within the builder. This consolidates the connection logic into one place (
Solves the following bugs:
Bugs that have been identified that are outside the scope of this PR:
Existing issues that should now be more readily achievable:
Other future work:
The text was updated successfully, but these errors were encountered:
I ran @tcstewar's benchmark notebook with:
conditions = [ 'nengo', # the normal nengo backend 'nengo_loihi(precompute=False, target="loihi")', # using Loihi itself 'nengo_loihi(precompute=True, target="loihi")', # using Loihi itself with precompute ]
On this branch,
I added a couple very minor commits for coverage / sanity. I also rebased onto master again to pick up the testing fixes from the current/rates sync-up.
I think it's fine as is. A bunch of the weirdness with seeding can be resolved when we eventually drop support for nengo<3. This could end up simplifying a bunch of this code.
This LGTM, but we should make a card to go through the rest of the code base? e..g, There are a bunch of
Most of the work done by the splitter is now done in the builder. This should give more clarity and control over the mapping between pre-build and post-build objects. The `Split` class takes on the organizational tasks of the old `Splitter`, giving directives to the builder about what should be on- or off-chip. Several tests were added or modified to ensure that these changes did not affect built models in adverse ways. Some tests were added to ensure that the refactoring made improvements; for example, the refactored splitter no longer mutates networks, which closes #211. Simulations should now be identical whether precompute is True or False, so the tolerance in test_precompute is now set to zero. The passthrough removal process was also modified to act in the same way as `Split`, and is now named `PassthroughSplit` accordingly. Co-authored-by: Trevor Bekolay <firstname.lastname@example.org>
This partially reverts commit 70ecb8a. The patch to graph.Graph seems to be incomplete, as one process could be writing to the file to be copied while another process is attempting to read it. The includes are also not copied, so likely we need a more robust solution for writing snip files to temporary directories. The command was only changed to request one worker instead of two.