# High-Performance Computing and ABMS for High-Resolution COVID-19 Spreading Simulation
## 4 Actor Based Modeling and Simulation
### Using Actors for Large Scale ABMS Applications  
Several researchers proposed interesting solutions for large scale ABMS applications. For example, [PERSON] and [PERSON] [48] proposed an actor-based software infrastructure, called the actor's adaptive architecture. This infrastructure supports the construction of large-scale agent-based simulations and exploits some distributed computing techniques to optimize the distribution of the agents of the application on a network of computational nodes. Moreover, this software infrastructure uses some optimization techniques to reduce the amount of data exchanged between nodes and support dynamic agents' distribution and search. [PERSON] et al. [49] proposed a simulation environment, called SWAGES, that provides an automatic and dynamic distribution of simulations that supports the minimization of the simulation times. In particular, SWAGES allows the use of different programming languages for the definition of the agent models, and provides large data collections and data analysis techniques that can help to simplify the analysis of the results. Moreover, it provides a flexible scheduler offering automatic fault detection and error recovery mechanisms, and so improving the reliability of large-scale simulations. [PERSON] et al. [28] proposed the use of actors for the distribution of simulations on the Repast software platform [22]. In particular, they defined a software infrastructure that: (i) decomposes an application into subsystems (theaters), (ii) each subsystem hosts a set of actors and can be allocated on one of the computational nodes of the application, and (iii) supports agent migration,transparent location naming and efficient communication. [PERSON] and [PERSON] [50] present an ABMS framework, called Pandora, that is designed for social scientists that uses HPC resources and implemented in the C++ programming language; moreover, Pandora provides a Python interface to the framework that should make possible the development of ABMS to people with minimal programming background. Pandora divides a simulation environment among different computer nodes, and each one of them will own a section of the environment and the agents located in this section. Moreover, data and agents located in the border between adjacent nodes will be copied and sent to neighbors at every time step of simulation, in order to keep data consistent in all the execution. Pandora was used for experimenting the tradeoff of replacing a traditional cluster with a cloud solution. Since the simulation framework requires a high-speed interconnection, this solution should provide low performance, but a cloud cluster should reduce losses and prove that even a cheap cloud cluster can provide interesting computational power for the simulations. However, the experimentation showed that the use of a cloud environment can provide a cost-effective solution. [PERSON] and [PERSON] [51] proposed an ABMS system, called Repast HPC, that extends the Repast framework ([PERSON] and [PERSON], 2006), and is developed in C++ and uses Message Passing Interface (MPI) [52] for supporting large-scale distributed computing. In particular, Repast HPC is an environment where several processes are running in parallel and where a massive number of agents can be distributed across such processes. This is possible because each process has its own scheduler for processing the local events and all the schedulers are synchronized. Finally, Repast HPC allows the definition of a shared context for each process that can host local agents and remote agents copied from another process. This solution should improve simulation performance because the interaction among local and remote agents of the same shared context does not need remote communication. [PERSON] et al. [53] presented an automated HPC system, named DRAS (Deep Reinforcement Agent for Scheduling), that takes advantage of deep reinforcement learning.