Parallel network simulations with NEURON (Migliore et al 2006)

 Download zip file   Auto-launch 
Help downloading and running models
Accession:64229
The NEURON simulation environment has been extended to support parallel network simulations. The performance of three published network models with very different spike patterns exhibits superlinear speedup on Beowulf clusters.
Reference:
1 . Migliore M, Cannia C, Lytton WW, Markram H, Hines ML (2006) Parallel network simulations with NEURON. J Comput Neurosci 21:119-29 [PubMed]
Citations  Citation Browser
Model Information (Click on a link to find other models with that property)
Model Type: Realistic Network;
Brain Region(s)/Organism:
Cell Type(s):
Channel(s):
Gap Junctions:
Receptor(s):
Gene(s):
Transmitter(s):
Simulation Environment: NEURON;
Model Concept(s): Methods;
Implementer(s): Hines, Michael [Michael.Hines at Yale.edu];
/
netmod
pardentategyrus
readme.html *
bgka.mod *
CaBK.mod *
ccanl.mod *
Gfluct2.mod *
gskch.mod *
hyperde3.mod *
ichan2.mod *
LcaMig.mod *
nca.mod *
tca.mod *
DG500_M7.hoc *
dgnetactivity.jpg *
dgnettraces.jpg *
init.hoc
initorig.hoc *
M2I10sp.txt
modstat *
mosinit.hoc *
parRI10sp.hoc
perfrun.hoc
RI10sp.hoc
test1.sh *
time *
                            
proc prun() {
        pnm.set_maxstep(10)
        runtime=startsw()
        waittime = pnm.pc.wait_time
        stdinit()
        pnm.psolve(tstop)
        waittime = pnm.pc.wait_time - waittime
        runtime = startsw() - runtime
	steptime = pnm.pc.step_time
	sendtime = pnm.pc.send_time	
//        printf("%d wtime %g\n", pnm.myid, waittime)
}

proc poststat() {
	pnm.pc.post("poststat", pnm.myid, steptime, sendtime, waittime)
}

proc getstat() {local i, id
	idmax = 0
	waitmax = waittime
	stepmax = steptime
	sendmax = sendtime
	idmin = 0
	waitmin = waittime
	stepmin = steptime
	sendmin = sendtime
	if (pnm.nwork > 1) {
		pnm.pc.context("poststat()\n")
		for i=0, pnm.nwork-2 {
			pnm.pc.take("poststat", &id, &steptime, &sendtime, &waittime)
			if (waittime > waitmax) {
				idmax = id
				waitmax = waittime
				stepmax = steptime
				sendmax = sendtime
			}
			if (waittime < waitmin) {
				idmin = id
				waitmin = waittime
				stepmin = steptime
				sendmin = sendtime
			}
		}
	}
}

proc perf2file() { localobj perf
	perf = new File()
	perf.aopen("perf.dat")
	perf.printf("%d %g %g %g    %d %g %g %g    %d %g %g %g\n", \
		pnm.nhost, tstop, setuptime, runtime,\
		idmax, waitmax, stepmax, sendmax, \
		idmin, waitmin, stepmin, sendmin)
	perf.close
}

proc spike2file() { localobj outf
	outf = new File()
	outf.wopen("out.dat")
	for i=0, pnm.idvec.size-1 {
		outf.printf("%g\t%d\n", pnm.spikevec.x[i], pnm.idvec.x[i])
	}
	outf.close
}