Abstracted two different methods of allocating resources to models:
OneToOne() which is the same method as before (default)
RoundRobin(n_chips) which cycles through chips per block / input
Ran the entire unit test suite with a manually-overwritten default of allocator=RoundRobin(n_chips=8) (on our local host; not shown) and discovered that all failed tests currently fall into one of two categories:
Convolutional weights (pop[16|32]) across chips
Use of SNIPS (precompute=False)
Multi-chip support is otherwise working and the user can override / customize the behaviour, with the following notes:
RoundRobin(n_chips) gives identical behaviour across any number of n_chips between 1 and 8 inclusive (unit-tested).
Each failure mode currently returns an error (unit-tested).
The current syntax for running a multi-chip simulation of the model is:
from nengo_loihi.hardware.allocators import RoundRobin # or OneToOne
with Simulator(model, precompute=True,
hardware_options={'allocator': RoundRobin(n_chips=8)}):
...
Todo:
[x] Is this abstraction okay for now? I realize things may change and so this is just a basic starting point that can be adapted.
[x] Is this an acceptable level of exposure to the user, even if it might change in the future? Or do we have better ways of exposing advanced configuration? (Resolution: will need to rethink global simulator configuration at the level of Nengo core)
[x] Are there more appropriate exceptions to raise?
Abstracted two different methods of allocating resources to models:
OneToOne()
which is the same method as before (default)RoundRobin(n_chips)
which cycles through chips per block / inputRan the entire unit test suite with a manually-overwritten default of
allocator=RoundRobin(n_chips=8)
(on our local host; not shown) and discovered that all failed tests currently fall into one of two categories:pop[16|32]
) across chipsprecompute=False
)Multi-chip support is otherwise working and the user can override / customize the behaviour, with the following notes:
RoundRobin(n_chips)
gives identical behaviour across any number ofn_chips
between1
and8
inclusive (unit-tested).The current syntax for running a multi-chip simulation of the model is:
Todo: