Closed arvoelke closed 4 years ago
Discussion point: supporting 1 might just be adding unnecessary complexity, as currently it appears that the simulator doesn't support a hybrid of precompute=True
and bidirectional communication with the host. That is, whenever precompute=True
, it is assumed that both host models (before and after) can be run in a single run_steps
command without needing to send/receive any data between time-steps. It is not clear if this assertion is being validated anywhere.
But a practical example where one might want to do this: a learning example where an input signal is known ahead of time. The learning loop requires interaction on each time-step, but the input can be precomputed independently.
Result of internal discussion. Two points: 1) We're worried that it's already kind of confusing for users what parts of a model will be on or off chip, and this might make it worse (by making the on/off logic more complicated). 2) Our goal is to remove the precompute=True
option (once the realtime communication speed is improved), so then this wouldn't be an issue. So overall, our plan is just to leave this as-is for now.
A user can always manually specify ensembles to be off chip (by setting the on_chip
config parameter for the ensemble to false), which should allow a user to manually achieve the same result if there are subgraphs that they know they want to have off-chip.
A user can always manually specify ensembles to be off chip (by setting the on_chip config parameter for the ensemble to false), which should allow a user to manually achieve the same result if there are subgraphs that they know they want to have off-chip.
True but this wouldn't be quite what I wanted because I still want the other parts of the graph to be precomputed in order to simulate as quickly as possible. This may be related to #254 and similar issues with I/O efficiency. If we can get the same performance as precompute=True
while running it interactively with the host (as in precompute=False
) then I agree this is a non-issue (as are some of the other issues related to the splitter).
Is there an issue for tracking the removal of precompute=True
and associated targets / performance benchmarks?
chip -> host -> chip
loop withprecompute=True
, raise aBuildError
. Instead these subgraphs can be identified and kept off-chip. The maximally-precomputable subgraphs would be precomputed.