-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathnotes.txt
More file actions
288 lines (265 loc) · 13.2 KB
/
notes.txt
File metadata and controls
288 lines (265 loc) · 13.2 KB
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
Version 2.4.1
* Incremental direct connection only done on change
* Direct connection at startup is the non-incremental one for performance
* Made minimal simulation kernel more complete
Version 2.4.0
+ Allow realtime interrupts on arbitrary ports
+ Allow realtime simulation to monitor specific ports
* Fixed bug while removing a port
* Fixed bug when adding a model during simulation
* Incremental update of direct connection
* Fixed external interrupts blocking internal transitions
* Set elapsed time attribute to None when you shouldn't access it
Version 2.3.1
+ Added nicer configuration for the optimized, minimal simulation kernel
Version 2.3.0
+ Added an optimized simulation kernel for sequentiel simulation
* Much faster direct connection algorithm
* Fixed bug in checkpointing when no state saving was being done
Version 2.2.4
+ Add setuptools installation
* Fixed bug in Dynamic Structure DEVS simulation for (dis)connectPorts
* Fixed bug in realtime simulation
* Fixed bug with checkpointing
* Restructured project
Version 2.2.3
* Fixed bug in the GVT algorithm where 'red' messages could be transient
* Changed termination detection algorithm to prevent bottlenecks
* Fixed missing import in realtime backend for exception handling
* Updated GVT test for previously reformed GVT algorithm
Version 2.2.2
* Changed realtime backend to not use threads in the 'threadless' variants
* Fixed elapsed attribute at initialisation
* Fixed allocator crashing due to new Z function support
* Fixed locking fairness for GVT setting (faster relocation/allocation)
* Fixed basic boundary relocator for when dynamic allocation
Version 2.2.1
+ Added user events in the loggers (optional) for 'state changes'
+ Allow continuing a previous simulation by calling simulate again
+ Added Z functions (output-to-input, input-to-input and output-to-output)
* Changed the reinit interface to make continuing possible
* Fixed massive memory leak by forgetting to set the
'temporaryIrreversible' flag in local simulation
* Change to the termination detection: wait for 100ms before sending
* Fixed complete horizon revertion (beyond GVT!)
* Activity-log file is only generated when useful
* ManualRelocator generates activity traces
Version 2.2.0
+ Added templates for scheduler, relocator, tracer and experiment files
+ Allow custom activity functions for pre-transition and post-transition
+ Allow the definition of custom schedulers, defined externally
+ Pass the horizon to the relocators
+ No state saving when relocation caused sequential simulation
+ Allow local checkpointing (in most cases)
+ Possibility for a 'test cycle' which saves message count (+visualize)
+ Test cycle simulation creates an 'advised' initial distribution
+ Schedulers can now be configured per-node instead of globally
+ Allow for pull based termination conditions (NOT recommended)
+ Tracers are a lot more plugable, multiple tracers can work simultaneous
+ Realtime interrupts can happen with method calls on the simulator
+ Initial allocation can be loaded from file
+ Allowed local nested simulation in a distributed simulation
+ Included a model of a subset of PythonPDEVS
+ Much faster tracing due to trace message grouping (remove all RTT calls)
+ Method to reset a models alterations before reinitialising it
+ Method to force sequential simulation
+ Ignore state saving when sequential simulation is possible due to
relocations
+ Added scaled realtime
+ Relocators can use a 'last state only' approach
* File reading for realtime happens on-demand
* Fixed GVT algorithm
* Fixed checkpoint restoration with severely broken files
* Rewrite of the realtime backend, works much better now
* Yielding of the main thread for anti-messages and relocations
* Split of the simulator configuration
* Various bugfixes
* External messages are processed differently, should give slight speedup
* Removal of (most) global variables
* Classic DEVS simulation bugfixes
- Removed auto-allocation: use the new 'allocators' instead
- Removed PyRO support
Version 2.1.5
+ Added optional memoization
+ Added the basis of an activity relocator, still very slow
+ User can choose between manual relocation, or automatic relocation
+ Relocation now uses 'async locking' and remote kernels will have a quick
stop feature to prevent many transitions that will simply be removed
+ Added Dirty Heap scheduler
+ Added 'discrete time' Scheduler
+ Added Minimal List scheduler
+ Progress bar visualizes when an error happens, process is now killable
+ Dynamic Structure DEVS added for local simulation
+ Added a polymorphic scheduler (still very unstable)
+ Activity tracking in distributed simulation now returns something usable
+ Added Classic DEVS simulation as an option
+ Added a random number generator for deterministic simulation
* Fixed deadlock in distributed simulation for an overfilled threadpool
* Activity is only counted for not-reverted functions
* Fixed the Syslog logger (some messages were in wrong order, some forgotten)
* Fixed GVT algorithm, deadlocks and incorrect GVTs should be solved
* Fixed termination algorithm
Version 2.1.4
+ Added a Cell DEVS styled activity tracer
+ Added a Cell DEVS styled location tracer
+ Added Cell DEVS styled tracer 'gnuplot' and 'libav' animation script
+ Start of Sphinx documentation
+ Added PyRO tests
+ Realtime simulation keeps track of the termination_time
* Realtime backend is now compliant with Python3
* Fixed PyRO simulation for nodes without actual models
* Default message copy method now uses pickle's HIGHEST PROTOCOL
* Fixed the *elapsed* attribute for the confluent transition function
Version 2.1.3
+ Added marshal library for use in the state saver
+ Added HeapSet scheduler
+ Added NoAge scheduler (only use when ALWAYS ta > 0)
+ Added SortedList scheduler
+ VCD and XML traces can also be saved to a user-defined filename
+ Added automatic model-to-node allocation as an option
+ Added some additional checks in the configuration setting
+ Checkpoint recovery for XML and VCD tracing is possible
+ Termination condition became somewhat more fine grained
+ Draw the model to a user-defined file
+ Added model reinitialisation: simply rerun simulate()
+ Added API for changing a model after it has been distributed (for reinit)
* Split up the state savers
* Game Loop realtime backend is now user-configurable for FPS
* Added some configuration options
* Nested simulation was completely rewritten
* Logging now respects the logging settings and messages before this
configuration are queued
* Fixed a simulation bug where some messages get resent due to revertions
* Fixed PyRO simulation
* Fixed several problems with relocation, still somewhat buggy
* Cleaned up tests
* Fixed memory leak in the MPI backend
* Fixed Python3 compliance
* Message scheduler became much cleaner and more maintainable
* Anti messages are sent 'en masse'
* Model distribution is faster by a factor 10 due to different pickling
- Nested simulation only works if both the nesting and the nested
simulation are local
- Configuration options for the nested simulation are removed as they are
no longer necessary
Version 2.1.2
+ Added a looping backend for realtime simulation
+ Looping realtime backend builtin in the simulator with calls
realtime_finished() and realtime_loop_call()
+ Allow even huge models to be transfered and checkpointed, by removing
artificial recursion when pickling fails otherwise (includes small test)
+ Added basic tests for VCD and XML tracing
+ Allow direct simulation of AtomicDEVS models
+ Added tests for the three different realtime backends
+ Added small smoke test for checkpointing
+ Model can be marked as 'used in termination condition'
+ Model has the new simSettings function to do model-specific configs
+ Lots of internal documentation added
+ Check for whether or not the number of used locations is actually
available
+ Edge labels can be hidden when drawing the model for small graphs
* Fixed a massive performance degradation in the MPI redirection
* Don't attempt to load an incomplete checkpoint (and subsequently crash)
* Minor changes to realtime simulation backends
* Relocation directives can be denied in case it is a model used in
termination condition
* Used dictionary comprehension instead of for loop at some places
* Progress bar now always ends with 'completely done' instead of partial
* Minor code cleanup
* Fixed a race condition in the external message scheduler
* Message scheduler was leaking memory by not cleaning up everything
- Termination condition can no longer run on any node, runs on controller
Version 2.1.1
+ Message copy can be ignored for performance (as in nearly all other
simulators)
+ Added realtime test
* Fixed several realtime termination bugs
* Realtime component now uses sys.stdin instead of raw_input
* Fixed PyRO middleware usage
* Fixed some critical bugs in the XML and VCD tracers
* Local simulation no longer runs on a thread for easy profiling/debugging
* Huge performance improvement for when lots of models are transitioning
* Changed the signalling protocol from message based (as in the abstract
simulator) to an optimized implementation
* Fixed some bugs in the scheduler
* Increased performance for the scheduler
* Bugfix for when a revertion was caused by an anti-message
Version 2.1
+ Models can be drawn before simulation using GraphViz
+ Added model migration
+ A node can now host any number of models, even atomics
+ Added model migration, including directives
+ Added an API to set all simulation options, with some sanity checking
+ Added a fetch_all option to the simulator to reconstruct the model
locally
+ Added automatic detection of middleware
+ Added RootDEVS class
+ Added progress visualisation, rather handy in distributed simulation
* Huge alterations to the internal representation of models
* Reduced code size by completely refactoring model and simulation setup
* Simulation can now be killed with ctrl-c without hanging
* Coupled models get completely removed by direct connection
* Direct connection works only once on the root model
* Model is constructed locally and then broadcast to other kernels
* Fixed fossil collection race condition
* Simplified checkpoint restoration and creation
* Cleaned up tests
* Simplified Solver core due to more agressive direct connection
- Removed the plethora of (incompatible) IDs in models
- Removed the mpirunner.py scripts
- Removed checks for wrong local invocations, should no longer happen
- Removed RemoteCDEVS class
- Removed irreversibility (except locally) due to problems with model relocation
- Removed remote code execution for model construction, normal code
execution is still possible
- Removed special Cython parts and build scripts
Version 2.0
+ Further optimisations to the main simulation algorithm
+ Added Parallel DEVS simulation
+ Output function now returns a dictionary of outputs
+ Realtime simulation can use manual and automated input simultaneously
+ Added distributed simulation, both PyRO and MPI4Py
+ Added syslog logger
+ Added checkpointing
+ Allow for termination time instead of termination condition
+ Added direct saving to file of output
+ Allow nested simulation in distributed environment
+ Made Python3 compliant
+ Made PyPy compliant
+ Made Cython compliant
+ Messages got their own class
+ Added NestingException exception for nesting problems
+ Added irreversibility for faster distributed simulation
+ Added actual automated tests using Python unittest instead of ad-hoc manual testing
* Split up several files due to huge amount of additions
* Optimized memory consumption of VCD and XML output
* Modularised simulation tracing
* Updated examples
* Transitions now take an additional argument indicating the input
* Fixed realtime simulation bugs
- Removed Classic DEVS simulation
- Removed Peek and Poke methods
- Removed Root output in verbose tracing
Version 1.2
+ Allow realtime simulation using Python threads and TkInter events
Version 1.1
+ Added custom 'copy()' function for messages
+ Added direct connection
* Optimized message scheduler
* Optimized message passing
- Removed INFINITY object, redirected to a float
Version 1.0.5
+ Added VCD tracing option
* Fixed non-determinism bug in sorting colliding models
Version 1.0.4
+ Added XML tracing option
Version 1.0.3
* Cleanup of terminology
* Use True/False instead of 1/0
Version 1.0.2
+ Added code to display atomic DEVS' initial conditions
Version 1.0.1
* Deal with DeprecationWarning
* Default timeAdvance returns INFINITY
Version 1.0
+ Initial version