-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Passthrough removal is too aggressive #212
Comments
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 `SplitterDirective` class takes on the organizational tasks of the old `Splitter`, giving directives to the builder about what should be on- or off-chip. Also: - Add unit tests for splitter refactoring. - Raise `BuildError` if learning objects are on_chip. Fixes #208 and #209. - Pass no decoder cache to sub-models. Decoder cache wasn't working due to lack of context manager which is normally constructed by the top-level network build. Fixes #207. - Various improvements to passthrough removal, including not removing useful passthrough nodes. Outstanding issues include: #210, #212, #213 - Handle sliced probes. Closes #205. - Check that splitter handles sliced probes. Closes #206. - Test that splitter does not mutate network. Closes #211.
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 `SplitterDirective` class takes on the organizational tasks of the old `Splitter`, giving directives to the builder about what should be on- or off-chip. Also: - Add unit tests for splitter refactoring. - Raise `BuildError` if learning objects are on_chip. Fixes #208 and #209. - Pass no decoder cache to sub-models. Decoder cache wasn't working due to lack of context manager which is normally constructed by the top-level network build. Fixes #207. - Various improvements to passthrough removal, including not removing useful passthrough nodes. Outstanding issues include: #210, #212, #213 - Handle sliced probes. Closes #205. - Check that splitter handles sliced probes. Closes #206. - Test that splitter does not mutate network. Closes #211.
Result of internal discussion: While this would be nice to support, it's difficult because we don't know which parts of the model will be on or off chip until after the passthrough removal completes (since it can change which parts are on/off chip). We could work around that by reworking that whole build pipeline, but it also seems relatively low priority, since a) removing passthroughs on the host side should have relatively little impact, and b) the main use case for nengo-loihi is models where most or all of the model is running on-chip (so adding that feature wouldn't affect them). So our plan for now is just to update the documentation to clarify that remove-passthroughs removes all passthroughs (on or off chip). |
Passthrough nodes should only be removed if they are connecting chip -> chip (according to the
convert_passthroughs
docstring), that is, any nodes betweenx
andy
(not shown).However, it will remove passthrough nodes that are on host that never connect back to the chip. For example, if those nodes are not probed.
The ideal output should be:
because none of the nodes here are in between chip -> chip connections.
The text was updated successfully, but these errors were encountered: