[Haskell-cafe] [ANN] Aivika: A parallel distributed discrete event simulation library
david.sorokin at gmail.com
Sat Apr 23 09:43:13 UTC 2016
I’m glad to announce the first add-on module  of Aivika simulation library that allows creating and running parallel distributed discrete event simulations. It is destined for clusters and supercomputers, although it works on a stand-alone notebook too.
My module implements an optimistic strategy that implies transparent rollbacks. It is mainly inspired by ideas of the Time Warp algorithm, which first publication is dated early 80s.
Please note that this is the first version. It is mainly experimental, but it already shows good results. For example, when using the reproducible random number generators on different nodes, I always get the same simulation results. Furthermore, for testing purposes, I rewrote one of my examples with discrete processes and the shared resource so that it uses too much messages just to see how it works.
The add-on module allows doing everything that the generalized version  of Aivika can do in a part related to the discrete event simulation.
Moreover, the parallel nodes can communicate to each other sending and receiving asynchronous messages, but these messages have the send and receive times. If the node receives the past message, a transparent rollback occurs so that the node can process the received message. When rolling the computation back, the node sends so called anti-messages to cancel the invalidated messages that came from the node. It allows us to have a predictable distributed simulation satisfying the time constraints and causality.
There are different customization parameters that allow tuning the library. For example, by default the library waits 5 seconds to consider the local time of the node defined. Therefore, when running test models, you can see a small delay, which is necessary for finishing the synchronization between the nodes and so called time server.
Unfortunately, there is a lack of documentation. But the main idea is as follows. The generalized version  is almost the same as the core library  which already has a documentation. The represented add-on  just allows using the generalized version for creating and running parallel distributed discrete event simulations within the specified computation.
More information about the Haskell-Cafe