summaryrefslogtreecommitdiff
path: root/core/track_causality.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/track_causality.cpp')
-rw-r--r--core/track_causality.cpp72
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;
+}
contact: Jan Huwald // Impressum