static void Main(string[] args) { NeuronRegime nr; ModelSimulator nm; Int32 nSamples = 10000; Int32 totalTime = 1000; Boolean writePotFile = false; Double tolerance = 1.0e-8; Int32 maxTime = 100000; #if !DEBUG try { #endif if (args.Length > 0) { foreach (String arg in args) { String[] parVal = arg.Split(new char[] { '=' }); if (parVal[0][0] == '-') { parVal[0] = parVal[0].Substring(1); } if (parVal[0] == "nSamples") { nSamples = Convert.ToInt32(parVal[1]); } else if (parVal[0] == "totalTime") { totalTime = Convert.ToInt32(parVal[1]); } else if (parVal[0] == "w") { writePotFile = true; } else if (parVal[0] == "tolerance") { tolerance = Convert.ToDouble(parVal[1]); } else if (parVal[1] == "maxTime") { maxTime = Convert.ToInt32(parVal[1]); } else if ((parVal[0] == "h") || (parVal[0] == "help")) { Program.PrintHelp(); return; } else { throw new ArgumentOutOfRangeException(String.Format("Unrecognized parameter! {0}", parVal[0])); } } } #if !DEBUG } catch (Exception e) { Console.WriteLine("ERROR!"); Console.WriteLine(e.Message); Program.PrintHelp(); return; } #endif nm = new ModelSimulator(NeuronRegime.Bursting); //nm.RunModel(nm.HHLeechODE, totalTime, 0.0D); CodeTimer.Time(true, nm.HHLeechODE.ToString(), totalTime, nm.HHLeechODE.TimeStep); //nm = new ModelSimulator(NeuronRegime.Excitable); //nm.RunModel(nm.HHLeechODE, totalTime, 0.0D); /* * Console.WriteLine("Preparing to measure timestep time..."); * nr = NeuronRegime.Bursting; * nm = new ModelSimulator(nr); * System.Threading.Thread.Sleep(3000); * * Console.WriteLine("Beginning..."); * Console.WriteLine("-"); * * if (writePotFile) * { * nm.RunModel(nm.KTzLogMap, totalTime);//, 0.0D); * nm.RunModel(nm.KTzTanhMap, totalTime);//, 0.0D); * nm.RunModel(nm.RulkovMap, totalTime);//, 0.0D); * nm.RunModel(nm.IzhikevichMap, totalTime);//, 0.0D); * nm.RunModel(nm.HHLeechODE, totalTime);//, 0.0D); * } * * nm.RunTimeStepTest(nm.KTzTanhMap, nSamples, totalTime);//, 0.0D); * nm.RunTimeStepTest(nm.KTzLogMap, nSamples, totalTime);//, 0.0D); * nm.RunTimeStepTest(nm.IzhikevichMap, nSamples, totalTime);//, 0.0D); * nm.RunTimeStepTest(nm.RulkovMap, nSamples, totalTime);//, 0.0D); * nm.RunTimeStepTest(nm.HHLeechODE, nSamples, totalTime);//, 0.0D); * * Console.WriteLine("--"); * Console.WriteLine("Preparing to measure convergence time..."); * nr = NeuronRegime.Excitable; * nm = new ModelSimulator(nr); * System.Threading.Thread.Sleep(3000); * * Console.WriteLine("Beginning..."); * Console.WriteLine("-"); * * if (writePotFile) * { * nm.RunModel(nm.KTzLogMap, totalTime);//, 0.0D); * nm.RunModel(nm.KTzTanhMap, totalTime);//, 0.0D); * nm.RunModel(nm.RulkovMap, totalTime);//, 0.0D); * nm.RunModel(nm.IzhikevichMap, totalTime);//, 0.0D); * nm.RunModel(nm.HHLeechODE, totalTime);//, 0.0D); * nm.ResetModels(); * } * * nm.RunFPConvergenceTest(nm.KTzLogMap, nSamples, maxTime, tolerance);//, 0.0D); * nm.RunFPConvergenceTest(nm.KTzTanhMap, nSamples, maxTime, tolerance);//, 0.0D); * nm.RunFPConvergenceTest(nm.IzhikevichMap, nSamples, maxTime, tolerance);//, 0.0D); * nm.RunFPConvergenceTest(nm.RulkovMap, nSamples, maxTime, tolerance);//, 0.0D); * nm.RunFPConvergenceTest(nm.HHStdODE, nSamples, maxTime, tolerance);//, 0.0D); * * */ #if DEBUG Console.ReadKey(); #endif }
static void Main(string[] args) { NeuronRegime nr; ModelSimulator nm; Int32 nSamples = DEFAULT_NSAMPLES; Int32 totalTime = DEFAULT_TOTALTIME; Boolean writePotFile = DEFAULT_WRITEPOTFILE; Double tolerance = DEFAULT_TOLERANCE; Int32 maxTime = DEFAULT_MAXTIME; Int32 N = DEFAULT_N; #if !DEBUG try { #endif if (args.Length > 0) { foreach (String arg in args) { String[] parVal = arg.Split(new char[] { '=' }); if (parVal[0][0] == '-') { parVal[0] = parVal[0].Substring(1); } if (parVal[0] == "nSamples") { nSamples = Convert.ToInt32(parVal[1]); } else if (parVal[0] == "totalTime") { totalTime = Convert.ToInt32(parVal[1]); } else if (parVal[0] == "w") { writePotFile = true; } else if (parVal[0] == "tolerance") { tolerance = Convert.ToDouble(parVal[1]); } else if (parVal[0] == "maxTime") { maxTime = Convert.ToInt32(parVal[1]); } else if (parVal[0] == "N") { N = Convert.ToInt32(parVal[1]); } else if ((parVal[0] == "h") || (parVal[0] == "help")) { Program.PrintHelp(); return; } else { throw new ArgumentOutOfRangeException(String.Format("Unrecognized parameter! {0}", parVal[0])); } } } #if !DEBUG } catch (Exception e) { Console.WriteLine("ERROR!"); Console.WriteLine(e.Message); Program.PrintHelp(); return; } #endif Console.WriteLine("Preparing to measure CPU cycles per timestep..."); nr = NeuronRegime.Bursting; nm = new ModelSimulator(nr, totalTime, tolerance, maxTime, NetworkType.MeanField, N); System.Threading.Thread.Sleep(3000); Console.WriteLine("Beginning..."); Console.WriteLine("-"); if (writePotFile) { nm.RunModelForData(nm.GLExpMap, totalTime); nm.RunModelForData(nm.LIFMap, totalTime); nm.RunModelForData(nm.KTzLogMap, totalTime); nm.RunModelForData(nm.KTzTanhMap, totalTime); nm.RunModelForData(nm.RulkovMap, totalTime); nm.RunModelForData(nm.IzhikevichMap, totalTime); nm.RunModelForData(nm.HHLeechODE, totalTime);/**/ // network models nm.RunModelForData(nm.NetGLExpMap, totalTime); nm.RunModelForData(nm.NetLIFMap, totalTime); nm.RunModelForData(nm.NetKTzLogMap, totalTime); nm.RunModelForData(nm.NetKTzTanhMap, totalTime); nm.RunModelForData(nm.NetRulkovMap, totalTime); nm.RunModelForData(nm.NetIzhikevichMap, totalTime); nm.RunModelForData(nm.NetHHModelODE, totalTime); } Console.WriteLine("- Execution cycles/timestep (Cycles/timestep)"); nm.RunTimeStepTest(nm.KTzTanhMap, nSamples); nm.RunTimeStepTest(nm.KTzLogMap, nSamples); nm.RunTimeStepTest(nm.GLExpMap, nSamples); nm.RunTimeStepTest(nm.LIFMap, nSamples); nm.RunTimeStepTest(nm.IzhikevichMap, nSamples); nm.RunTimeStepTest(nm.RulkovMap, nSamples); nm.RunTimeStepTest(nm.HHLeechODE, nSamples);/**/ Console.WriteLine("--"); Console.WriteLine("Preparing to measure convergence time..."); nr = NeuronRegime.Excitable; nm = new ModelSimulator(nr, totalTime, tolerance, maxTime, NetworkType.Linear, N); System.Threading.Thread.Sleep(3000); Console.WriteLine("Beginning..."); Console.WriteLine("-"); if (writePotFile) { nm.RunModelForData(nm.GLExpMap, totalTime); nm.RunModelForData(nm.LIFMap, totalTime); nm.RunModelForData(nm.KTzLogMap, totalTime); nm.RunModelForData(nm.KTzTanhMap, totalTime); nm.RunModelForData(nm.RulkovMap, totalTime); nm.RunModelForData(nm.IzhikevichMap, totalTime); nm.RunModelForData(nm.HHLeechODE, totalTime); // network models nm.RunModelForData(nm.NetGLExpMap, totalTime); nm.RunModelForData(nm.NetLIFMap, totalTime); nm.RunModelForData(nm.NetKTzLogMap, totalTime); nm.RunModelForData(nm.NetKTzTanhMap, totalTime); nm.RunModelForData(nm.NetRulkovMap, totalTime); nm.RunModelForData(nm.NetIzhikevichMap, totalTime); nm.RunModelForData(nm.NetHHModelODE, totalTime); nm.ResetModels(totalTime, tolerance, maxTime);/**/ } nm.RunFPConvergenceTest(nm.KTzTanhMap, nSamples); nm.RunFPConvergenceTest(nm.KTzLogMap, nSamples); Console.WriteLine("*** WARNING: No FP Convergence time for GLExp model, since it fires stochastically"); Console.WriteLine("-"); Console.WriteLine("*** WARNING: No FP Convergence time for LIF model, since it fires constantly"); Console.WriteLine("-"); //nm.RunFPConvergenceTest(nm.GLExpMap, nSamples); nm.RunFPConvergenceTest(nm.IzhikevichMap, nSamples); nm.RunFPConvergenceTest(nm.RulkovMap, nSamples); nm.RunFPConvergenceTest(nm.HHStdODE, nSamples);/**/ Console.WriteLine("--"); Console.WriteLine("Preparing to measure network time step CPU cycles..."); Console.WriteLine("-"); Console.WriteLine("Linear Network (N = {0}, signal propagation)", N); nr = NeuronRegime.Excitable; nm = new ModelSimulator(nr, totalTime, tolerance, maxTime, NetworkType.Linear, N); System.Threading.Thread.Sleep(3000); nm.RunTimeStepTest(nm.NetGLExpMap, nSamples); nm.RunTimeStepTest(nm.NetLIFMap, nSamples); nm.RunTimeStepTest(nm.NetKTzLogMap, nSamples); nm.RunTimeStepTest(nm.NetKTzTanhMap, nSamples); nm.RunTimeStepTest(nm.NetRulkovMap, nSamples); nm.RunTimeStepTest(nm.NetIzhikevichMap, nSamples); nm.RunTimeStepTest(nm.NetHHModelODE, nSamples); Console.WriteLine("-"); Console.WriteLine("Mean Field Network (N = {0}, synchronization)", N); nr = NeuronRegime.Bursting; nm = new ModelSimulator(nr, totalTime, tolerance, maxTime, NetworkType.MeanField, N); System.Threading.Thread.Sleep(3000); nm.RunTimeStepTest(nm.NetGLExpMap, nSamples); nm.RunTimeStepTest(nm.NetLIFMap, nSamples); nm.RunTimeStepTest(nm.NetKTzLogMap, nSamples); nm.RunTimeStepTest(nm.NetKTzTanhMap, nSamples); nm.RunTimeStepTest(nm.NetRulkovMap, nSamples); nm.RunTimeStepTest(nm.NetIzhikevichMap, nSamples); nm.RunTimeStepTest(nm.NetHHModelODE, nSamples); #if DEBUG //Console.ReadKey(); #endif } }