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
}