Hi,
As per this previous question, I’m running SLURM=1 PARTITION=nahuku32 BOARD=ncl-ext-ghrd-01 python -m test.py
. I am using the fix-memory-leak
branch of Nengo Loihi., which has support for NxSDK 1.0.0 Below is the slightly modified script:
import nengo
import nengo_loihi
from nxsdk.graph.monitor.probes import PerformanceProbeCondition
from nxsdk.api.enums.api_enums import ProbeParameter
network = nengo.Network( )
with network:
oscillator = nengo.Ensemble(100, dimensions=1, )
oscillator_probe_list = nengo.Probe(oscillator.neurons, synapse = None)
sim = nengo_loihi.Simulator(network, precompute=True, dt=0.001)
sim.sims["loihi"].connect()
board = sim.sims["loihi"].nxsdk_board
probe_cond = PerformanceProbeCondition(tStart=1, tEnd=1000, bufferSize=100, binSize=4)
e_probe = board.probe(ProbeParameter.ENERGY, probe_cond)
t_probe = board.probe(ProbeParameter.EXECUTION_TIME, probe_cond)
sim.run_steps(1000)
print('Total Time: (in s): ', t_probe.totalHostTime/1.0e6)
print('Total Energy: (in J)', e_probe.totalEnergy/1.0e6)
print('Total Power (in W): ', e_probe.totalEnergy / t_probe.totalHostTime, '\n')
sim.sims["loihi"].close()
And this is my stack trace:
(SB3) kshivvy20@ncl-edu:~/noel_code_exact/_core$ SLURM=1 PARTITION=nahuku32 BOARD=ncl-ext-ghrd-01 python -m test.py
/homes/kshivvy20/nengo-loihi/nengo_loihi/builder/ensemble.py:154: UserWarning: NengoLoihi does not support initial values for 'voltage' being non-zero on LIF neurons. On the chip, all values will be initialized to zero.
warnings.warn(
INFO:DRV: SLURM is being run in background
INFO:DRV: Connecting to 10.212.98.104:36175
INFO:DRV: Host server up..............Done 0.18s
INFO:DRV: Encoding axons/synapses.....Done 2.53ms
INFO:DRV: Compiling Embedded snips....Done 0.29s
INFO:DRV: Compiling MPDS Registers....Done 0.05ms
INFO:HST: Args chip=0 cpu=0 /homes/kshivvy20/anaconda3/envs/SB3/lib/python3.9/site-packages/nxsdk/driver/compilers/../../../temp/1637468607.331579/launcher_chip0_lmt0.bin --chips=1 --remote-relay=0
INFO:HST: Nx...
INFO:DRV: Booting up..................Done 0.77s
INFO:DRV: Encoding probes.............Done 0.16ms
INFO:DRV: Transferring probes.........Done 7.46ms
INFO:DRV: Configuring registers.......Done 7.29ms
INFO:DRV: Transferring spikes.........Done 1.35ms
INFO:DRV: Executing...................Done 0.71s
INFO:DRV: Processing timeseries.......Error 0.05s
INFO:DRV: Executor: 1000 timesteps........Error 0.78s
Traceback (most recent call last):
File "/homes/kshivvy20/anaconda3/envs/SB3/lib/python3.9/runpy.py", line 188, in _run_module_as_main
mod_name, mod_spec, code = _get_module_details(mod_name, _Error)
File "/homes/kshivvy20/anaconda3/envs/SB3/lib/python3.9/runpy.py", line 111, in _get_module_details
__import__(pkg_name)
File "/homes/kshivvy20/noel_code_exact/_core/test.py", line 19, in <module>
sim.run_steps(1000)
File "/homes/kshivvy20/nengo-loihi/nengo_loihi/simulator.py", line 345, in run_steps
self._runner.run_steps(steps)
File "/homes/kshivvy20/nengo-loihi/nengo_loihi/simulator.py", line 523, in loihi_only
self.loihi.run_steps(steps)
File "/homes/kshivvy20/nengo-loihi/nengo_loihi/hardware/interface.py", line 253, in run_steps
d_get(self.nxsdk_board, b"cnVu")(steps, **{d(b"YVN5bmM="): not blocking})
File "/homes/kshivvy20/anaconda3/envs/SB3/lib/python3.9/site-packages/nxsdk/arch/base/nxboard.py", line 283, in run
self._run(
File "/homes/kshivvy20/anaconda3/envs/SB3/lib/python3.9/site-packages/nxsdk/arch/base/nxboard.py", line 257, in _run
self.executor.start(numSteps, aSync)
File "/homes/kshivvy20/anaconda3/envs/SB3/lib/python3.9/site-packages/nxsdk/driver/executor.py", line 84, in start
self.finish()
File "/homes/kshivvy20/anaconda3/envs/SB3/lib/python3.9/site-packages/nxsdk/driver/executor.py", line 122, in finish
self._notifyListeners(ExecutionEventEnum.POST_EXECUTION)
File "/homes/kshivvy20/anaconda3/envs/SB3/lib/python3.9/site-packages/nxsdk/driver/executor.py", line 157, in _notifyListeners
listener.postExecution()
File "/homes/kshivvy20/anaconda3/envs/SB3/lib/python3.9/site-packages/nxsdk/driver/listeners/composite_monitor.py", line 56, in postExecution
[m.postExecution() for m in self._collection.values()]
File "/homes/kshivvy20/anaconda3/envs/SB3/lib/python3.9/site-packages/nxsdk/driver/listeners/composite_monitor.py", line 56, in <listcomp>
[m.postExecution() for m in self._collection.values()]
File "/homes/kshivvy20/anaconda3/envs/SB3/lib/python3.9/site-packages/nxsdk/driver/listeners/monitors/performance_monitor.py", line 44, in postExecution
self._energyTimeMonitor.updateProbes()
File "/homes/kshivvy20/anaconda3/envs/SB3/lib/python3.9/site-packages/nxsdk/graph/nxenergy_time.py", line 934, in updateProbes
prb._updateProbe(probeData)
File "/homes/kshivvy20/anaconda3/envs/SB3/lib/python3.9/site-packages/nxsdk/graph/nxenergy_time.py", line 385, in _updateProbe
tProbeData = super()._updateProbe(rawTimeProbeData)
File "/homes/kshivvy20/anaconda3/envs/SB3/lib/python3.9/site-packages/nxsdk/graph/nxenergy_time.py", line 54, in _updateProbe
pdata = TimeProbeDataPerRun(runId=self.numRuns, data=data,
File "/homes/kshivvy20/anaconda3/envs/SB3/lib/python3.9/site-packages/nxsdk/graph/nxtime.py", line 34, in __init__
self._postProcessData(data)
File "/homes/kshivvy20/anaconda3/envs/SB3/lib/python3.9/site-packages/nxsdk/graph/nxtime.py", line 59, in _postProcessData
if self.phaseTimes[np.argmax(self.phaseTimes)] == 0xFFFFFFFF:
File "<__array_function__ internals>", line 5, in argmax
File "/homes/kshivvy20/anaconda3/envs/SB3/lib/python3.9/site-packages/numpy/core/fromnumeric.py", line 1195, in argmax
return _wrapfunc(a, 'argmax', axis=axis, out=out)
File "/homes/kshivvy20/anaconda3/envs/SB3/lib/python3.9/site-packages/numpy/core/fromnumeric.py", line 57, in _wrapfunc
return bound(*args, **kwds)
ValueError: attempt to get argmax of an empty sequence
This seems to be a NxSDK issue but I’m not sure since I was working off of a dev branch of Loihi. How should I proceed in order to extract energy readings?
Thank you!