Exemple #1
0
    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)
Exemple #2
0
    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)