blob: 652fa26c8b101cba12373fb565c29957a7645f59 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
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;
}
|