diff options
Diffstat (limited to 'core/track_causality.cpp')
-rw-r--r-- | core/track_causality.cpp | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/core/track_causality.cpp b/core/track_causality.cpp new file mode 100644 index 0000000..652fa26 --- /dev/null +++ b/core/track_causality.cpp @@ -0,0 +1,72 @@ +#include "perftools.hpp" +#include "sim_causality.hpp" +#include "system_helpers.hpp" + +void realMain(Time start, Time until) { + SimCausality<Lists::all_ro> 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; +} |