def init_sim(self): comm = A.mpi_comm() context = A.context(threads=1, gpu_id=None, mpi=A.mpi_comm()) self.rank = context.rank self.ranks = context.ranks recipe = lifN_recipe(context.ranks) dd = A.partition_load_balance(recipe, context) # Confirm decomposition has gid 0 on rank 0, ..., gid N-1 on rank N-1. self.assertEqual(1, dd.num_local_cells) local_groups = dd.groups self.assertEqual(1, len(local_groups)) self.assertEqual([self.rank], local_groups[0].gids) return A.simulation(recipe, dd, context)
def run(dT, n_pairs=1, do_plots=False): recipe = single_recipe(dT, n_pairs) context = arbor.context() domains = arbor.partition_load_balance(recipe, context) sim = arbor.simulation(recipe, domains, context) sim.record(arbor.spike_recording.all) reg_sched = arbor.regular_schedule(0.1) handle_mem = sim.sample((0, 0), reg_sched) handle_g = sim.sample((0, 1), reg_sched) handle_apost = sim.sample((0, 2), reg_sched) handle_apre = sim.sample((0, 3), reg_sched) handle_weight_plastic = sim.sample((0, 4), reg_sched) sim.run(tfinal=600) if do_plots: print("Plotting detailed results ...") for (handle, var) in [(handle_mem, 'U'), (handle_g, "g"), (handle_apost, "apost"), (handle_apre, "apre"), (handle_weight_plastic, "weight_plastic")]: data, meta = sim.samples(handle)[0] df = pandas.DataFrame({'t/ms': data[:, 0], var: data[:, 1]}) seaborn.relplot(data=df, kind="line", x="t/ms", y=var, ci=None).savefig('single_cell_stdp_result_{}.svg'.format(var)) weight_plastic, meta = sim.samples(handle_weight_plastic)[0] return weight_plastic[:, 1][-1]
def test_simulation(self): rcp = recipe() ctx = arb.context() dom = arb.partition_load_balance(rcp, ctx) sim = arb.simulation(rcp, dom, ctx) sim.run(tfinal=30)
def art_spiking_sim(context, art_spiker_recipe): dd = arbor.partition_load_balance(art_spiker_recipe, context) return arbor.simulation(art_spiker_recipe, dd, context)
return self.the_props recipe = single_recipe(cell, [probe]) # (4) Create an execution context context = arbor.context() # (5) Create a domain decomposition domains = arbor.partition_load_balance(recipe, context) # (6) Create a simulation sim = arbor.simulation(recipe, domains, context) # Instruct the simulation to record the spikes and sample the probe sim.record(arbor.spike_recording.all) probe_id = arbor.cell_member(0, 0) handle = sim.sample(probe_id, arbor.regular_schedule(0.02)) # (7) Run the simulation sim.run(tfinal=100, dt=0.025) # (8) Print or display the results spikes = sim.spikes()
decomp = arbor.partition_load_balance(recipe, context) print(f'{decomp}') hint = arbor.partition_hint() hint.prefer_gpu = True hint.gpu_group_size = 1000 print(f'{hint}') hints = dict([(arbor.cell_kind.cable, hint)]) decomp = arbor.partition_load_balance(recipe, context, hints) print(f'{decomp}') meters.checkpoint('load-balance', context) sim = arbor.simulation(recipe, decomp, context) meters.checkpoint('simulation-init', context) spike_recorder = arbor.attach_spike_recorder(sim) # Attach a sampler to the voltage probe on cell 0. # Sample rate of 10 sample every ms. samplers = [arbor.attach_sampler(sim, 0.1, arbor.cell_member(gid,0)) for gid in range(ncells)] tfinal=100 sim.run(tfinal) print(f'{sim} finished') meters.checkpoint('simulation-run', context)
self.props.catalogue = arb.load_catalogue(cat) d = arb.decor() d.paint('(all)', 'dummy') d.set_property(Vm=0.0) self.cell = arb.cable_cell(self.tree, arb.label_dict(), d) def global_properties(self, _): return self.props def num_cells(self): return 1 def cell_kind(self, gid): return arb.cell_kind.cable def cell_description(self, gid): return self.cell if not Path(cat).is_file(): print("""Catalogue not found in this directory. Please ensure it has been compiled by calling") <arbor>/scripts/build-catalogue cat <arbor>/python/examples/cat where <arbor> is the location of the arbor source tree.""") exit(1) rcp = recipe() ctx = arb.context() dom = arb.partition_load_balance(rcp, ctx) sim = arb.simulation(rcp, dom, ctx) sim.run(tfinal=30)
def test_probe_addr_metadata(self): recipe = cc_recipe() context = A.context() dd = A.partition_load_balance(recipe, context) sim = A.simulation(recipe, dd, context) all_cv_cables = [A.cable(0, 0, 1)] m = sim.probe_metadata((0, 0)) self.assertEqual(1, len(m)) self.assertEqual(A.location(0, 0.0), m[0]) m = sim.probe_metadata((0, 1)) self.assertEqual(1, len(m)) self.assertEqual(all_cv_cables, m[0]) m = sim.probe_metadata((0, 2)) self.assertEqual(1, len(m)) self.assertEqual(A.location(0, 0.02), m[0]) m = sim.probe_metadata((0, 3)) self.assertEqual(1, len(m)) self.assertEqual(A.location(0, 0.03), m[0]) m = sim.probe_metadata((0, 4)) self.assertEqual(1, len(m)) self.assertEqual(all_cv_cables, m[0]) m = sim.probe_metadata((0, 5)) self.assertEqual(1, len(m)) self.assertEqual(all_cv_cables, m[0]) m = sim.probe_metadata((0, 6)) self.assertEqual(1, len(m)) self.assertEqual(A.location(0, 0.06), m[0]) m = sim.probe_metadata((0, 7)) self.assertEqual(1, len(m)) self.assertEqual(all_cv_cables, m[0]) m = sim.probe_metadata((0, 8)) self.assertEqual(1, len(m)) self.assertEqual(A.location(0, 0.08), m[0].location) self.assertEqual(1, m[0].multiplicity) self.assertEqual(0, m[0].target) m = sim.probe_metadata((0, 9)) self.assertEqual(1, len(m)) self.assertEqual(1, len(m[0])) self.assertEqual(A.location(0, 0.09), m[0][0].location) self.assertEqual(1, m[0][0].multiplicity) self.assertEqual(1, m[0][0].target) m = sim.probe_metadata((0, 10)) self.assertEqual(1, len(m)) self.assertEqual(A.location(0, 0.10), m[0]) m = sim.probe_metadata((0, 11)) self.assertEqual(1, len(m)) self.assertEqual(all_cv_cables, m[0]) m = sim.probe_metadata((0, 12)) self.assertEqual(1, len(m)) self.assertEqual(A.location(0, 0.12), m[0]) m = sim.probe_metadata((0, 13)) self.assertEqual(1, len(m)) self.assertEqual(all_cv_cables, m[0]) m = sim.probe_metadata((0, 14)) self.assertEqual(1, len(m)) self.assertEqual(A.location(0, 0.14), m[0]) m = sim.probe_metadata((0, 15)) self.assertEqual(1, len(m)) self.assertEqual(all_cv_cables, m[0]) m = sim.probe_metadata((0, 16)) self.assertEqual(1, len(m)) self.assertEqual(all_cv_cables, m[0])
def init_sim(self, recipe): context = A.context() dd = A.partition_load_balance(recipe, context) return A.simulation(recipe, dd, context)