PARSIR: a Package for Effective Parallel Discrete Event Simulation on Multi-processor Machines
<|reference_start|>PARSIR: a Package for Effective Parallel Discrete Event Simulation on Multi-processor Machines: In this article we present PARSIR (PARallel SImulation Runner), a package that enables the effective exploitation of shared-memory multi-processor machines for running discrete event simulation models. PARSIR is a compile/run-time environment for discrete event simulation models developed with the {\tt C} programming language. The architecture of PARSIR has been designed in order to keep low the amount of CPU-cycles required for running models. This is achieved via the combination of a set of techniques like: 1) causally consistent batch-processing of simulation events at an individual simulation object for caching effectiveness; 2) high likelihood of disjoint access parallelism; 3) the favoring of memory accesses on local NUMA (Non-Uniform-Memory-Access) nodes in the architecture, while still enabling well balanced workload distribution via work-stealing from remote nodes; 4) the use of RMW (Read-Modify-Write) machine instructions for fast access to simulation engine data required by the worker threads for managing the concurrent simulation objects and distributing the workload. Furthermore, any architectural solution embedded in the PARSIR engine is fully transparent to the application level code implementing the simulation model. We also provide experimental results showing the effectiveness of PARSIR when running the reference PHOLD benchmark on a NUMA shared-memory multi-processor machine equipped with 40 CPUs.<|reference_end|>
@article{quaglia2024parsir:,
    title={PARSIR: a Package for Effective Parallel Discrete Event Simulation on
  Multi-processor Machines},
    author={Francesco Quaglia},
    journal={arXiv preprint arXiv:2410.00644},
    year={2024},
    archivePrefix={arXiv},
    eprint={2410.00644},
    primaryClass={cs.DC}
}