Custom Embedded SNIPS

Hi,
I am running a Nengo application with the Loihi backend and preCompute=False, because I need the IO capabilities.
In addition, I want to run a separate embedded SNIP on a different lakemont processor, which changes some of the Neuron parameters at a given (hard-coded) time - so no read or write channel between host and SNIP are needed.
A nxsdk_board=sim.sims["loihi"].nxsdk_board and subsequent nxsdk_board.createProcess() seems to do some preparation, but the additional SNIP doesn’t seem to be compiled/linked or executed.

Is there a mechanism to accomplish this? Or would I need to build in the required functionality into the nengo_io template?

Any ideas highly appreciated!
Thank you!

Here’s the line where we actually create the nengo_io snip. We use createSnip; looking at NxSDK, it looks like createProcess has been deprecated.

Note that this is called before we connect to the board, so you’ll want to do something like:

sim = nengo_loihi.Simulator(network)
board = sim.sims["loihi"].nxsdk_board
board.createSnip(...)
with sim:
    sim.run(1.0)

Making sure you’re doing both of those things might solve your problem.

It should be possible to have multiple snips running on the same chip, either on different Lakemonts or on the same Lakemont. For efficiency, it’s probably better to use a different Lakemont by setting e.g. lmtId=1 when you call createSnip (we use the default lmtId=0 when we call it). As I said, though, it should be fine to have multiple snips running on the same Lakemont, so I don’t think this is the cause of your problem.

Finally, if none of that helps, you can always modify the nengo_io template to do your stuff as part of our snip. It might be the easiest way to get something working, even if it’s not the best long-term solution.