#include "perftools.hpp" #include "sim_causality.hpp" #include "system_helpers.hpp" void realMain(Time start, Time until) { SimCausality s(start); uint64_t totalEventsProcessed(0), eventsProcessed(-1); const uint64_t eventsPerChunk{10000}; Timer timerAll; uint64_t trueMarks[2] = {}, totalMarks[2] = {}; std::cout << "miau" << std::endl; while (s.ct < until && until > s.queues.min()) { eventsProcessed = eventsPerChunk - s.run(until, eventsPerChunk); totalEventsProcessed += eventsProcessed; std::cout << "\r\033[K" << s.ct << "\t" << totalEventsProcessed / timerAll.diff() << " Hz(p)\t" << "ETA " << ceil( (until() - s.ct()) / (s.ct() - start()) * timerAll.diff()); std::cout << std::flush; std::cerr << "MARKSTAT\t" << s.ct << "\t" << s.trueMarks[1] - trueMarks[1] << "\t" << s.totalMarks[1] - totalMarks[1] << "\t" << s.trueMarks[0] - trueMarks[0] << "\t" << s.totalMarks[0] - totalMarks[0] << "\t" << "\n"; trueMarks[1] = s.trueMarks[1]; trueMarks[0] = s.trueMarks[0]; totalMarks[0] = s.totalMarks[0]; totalMarks[1] = s.totalMarks[1]; } s.run(until, -1); if (s.inactiveNeurons) { std::cout << s.inactiveNeurons << " neurons remained inactive during replay time:\n"; bool first(0); for (int i=0; i<1000; i++) { if (!s.hasFired[i]) { if (first) { first = false; }else{ std::cout << ", "; } std::cout << i; } } std::cout << std::endl; }else{ std::cout << "Last neuron went active at " << s.lastNeuronActivation() << "\n"; } std::cout << s.trueMarks [1] << " of " << s.totalMarks[1] << " spike arrivals are 0-egal (" << 100 * double(s.trueMarks[1]) / s.totalMarks[1] << " %)\n" << s.trueMarks [0] << " of " << s.totalMarks[0] << " random spikes are 0-egal" << 100 * double(s.trueMarks[0]) / s.totalMarks[0] << " %)\n"; } int main(int argc, char **argv) { assert(argc == 3); char *tail; Time start(strtod( argv[1], &tail)); assert(*tail == 0); Time stop( strtod( argv[2], &tail)); assert(*tail == 0); assertSimDir(); garantueeStackSize(64 * 1024 * 1024); realMain(start, stop); return 0; }