def test_mapCompartments_2(self): """Check mapping of CompartmentGroups with soma traces.""" verbose = False c = CompartmentGroup(cxIds=np.arange(15), biasMant=np.concatenate( [range(10, 0, -1), range(5, 0, -1)]), biasExp=np.zeros(15, int), relToAbsDestCxIdxMap=np.array([], int)) layer = Layer(layerId=0, layerType='', compartmentKwargs={ "compartmentCurrentDecay": 4096, "compartmentVoltageDecay": 10, "refractoryDelay": 30, "vThMant": 40, "enableSomaTrace": 1, "threshOp": 0 }, connectionKwargs={}, coreIdMap=np.array([]), multiplicityMap=np.array([]), postLayer=None) p = Partition(partitionId=0, chipCounter=0, sizeInterleaved=-1, parentLayer=layer) p.addCompartmentGroup(c) layer.addPartition(p) board = N2Board(0) c = DnnMapper(board) core = board.allocateCores(1, 0)[0] c._mapCompartments(p, core) # pylint: disable=protected-access if verbose: c.printCore(core, compartments=True) self.assertEqual(len(core.somaState.modified), 15) self.assertEqual(core.somaState[0].vth, 40) self.assertEqual(core.vthProfileCfg[0].dynamicCfg.enableHomeostasis, 1) self.assertEqual(core.vthProfileCfg[0].dynamicCfg.aMax, 127)
def test_mapCompartments_1(self): """Check mapping of CompartmentGroups without soma traces.""" verbose = False c = CompartmentGroup(cxIds=np.arange(15), biasMant=np.concatenate( [range(10, 0, -1), range(5, 0, -1)]), biasExp=np.zeros(15, int), relToAbsDestCxIdxMap=np.array([], int)) layer = Layer(layerId=0, layerType='', compartmentKwargs={ "compartmentCurrentDecay": 4096, "compartmentVoltageDecay": 10, "refractoryDelay": 30, "vThMant": 40, "enableSomaTrace": 0, "threshOp": 0 }, connectionKwargs={}, coreIdMap=np.array([]), multiplicityMap=np.array([]), postLayer=None) p = Partition(partitionId=0, chipCounter=0, sizeInterleaved=-1, parentLayer=layer) p.addCompartmentGroup(c) layer.addPartition(p) board = N2Board(0) c = DnnMapper(board) core = board.allocateCores(1, 0)[0] c._mapCompartments(p, core) # pylint: disable=protected-access if verbose: c.printCore(core, compartments=True) self.assertEqual(len(core.cxCfg.modified), 15) self.assertEqual(core.numUpdates.numUpdates, 4) self.assertEqual(len(core.cxMetaState.modified), 4) self.assertEqual(core.cxMetaState[3].phase2, 2) self.assertEqual(core.cxMetaState[3].somaOp2, 0) self.assertEqual(core.cxMetaState[3].phase3, 2) self.assertEqual(core.cxMetaState[3].somaOp3, 0) self.assertEqual(core.cxMetaState[4].phase2, 0) self.assertEqual(core.cxMetaState[4].somaOp2, 0) self.assertEqual(core.dendriteSharedCfg[0].dsOffset, 1) self.assertEqual(core.dendriteSharedCfg[0].dmOffsets, 0) self.assertEqual(core.cxProfileCfg[0].refractDelay, 30) self.assertEqual(core.cxProfileCfg[0].decayU, 4095) self.assertEqual(core.cxProfileCfg[0].decayV, 10) self.assertEqual(core.vthProfileCfg[0].staticCfg.vth, 40)