Towards a Fully Non-blocking Share-everything PDES Platform
Shared-memory multi-core platforms are changing the nature of Parallel Discrete Event Simulation (PDES) because of the possibility to fully share the workload of events to be processed across threads. In this context, one rising PDES paradigm - referred to as share-everything PDES - is no longer based on the concept of (temporary) biding of simulation objects to worker threads. Rather, each worker threads can - at any time - pick from a fully shared event pool an event to process which can be destined to whatever simulation object.
While attention has been posed on the design of concurrent shared pools, allowing non-blocking parallel operations, the scenario where two (or more) threads pick events destined to the same simulation object still lacks adequate synchronization support.
In fact, these events are currently sequentialized and processed in a critical section touching the simulation object state, thus leading threads to mutually block each other.
In this research project, we aim to design and implement a share-everything speculative PDES engine that prevents mutual thread blocks because of the access to a same object state relying on disjoint LP accesses.
However, avoiding threads to mutually block each other is only a step versus a fully non-blocking PDES. Along this path, this research project aims to design mechanisms able to manage the same state in a non-blocking way. This task is orthogonal to the previous one, providing effects on the progress of the simulation itself.
During this project, the non-blocking property will be seen as a vertical attribute of the engine (not only of the event pool). This vertical view demands for both innovative event-dispatching schemes and, at the same time, innovative interactions with (and management of) the fully-shared event pool, which are features that we will embed in our innovative design.