# High-Performance Computing and ABMS for High-Resolution COVID-19 Spreading Simulation
## 2 Agent Based Modelling and Simulation  
Agent-based modeling and simulation (ABMS) is a computational model for simulating phenomena in order to understand their behavior and what governs their results [3] and which exploits multi-agent systems and simulation models [7]. In particular, in an ABMS application, a simulation model is built on a generative and bottom-up process that integrates three types of components: the agents, who can perform one or more different behaviors, the environment in which the agents act by perceiving its state and acting accordingly, and, finally, the mechanisms that guide the interaction between the agents and exploit the direct and indirect exchange of information between system agents [8; 9]. In particular, the generative and bottom-up nature of ABMS models offers great potential for addressing phenomena in which conventional modeling and simulation paradigms have difficulty in capturing their fundamental characteristics [10]. In fact, with an ABMS approach, instead of analyzing a phenomenon only in its entirety (as happens in discrete simulation systems), it is possible to analyze it, not only in its entirety but also in its components [11]. Furthermore, since a wide variety of research and application fields uses ABMS models, it follows that ABMS models can have very different characteristics when supporting the simulation of very different phenomena. According to [12], the most suggested ABMS models for complex systems modeling are cellular automata [13], flocking systems [14], and geographic information systems [15]. The success and diffusion of ABMS techniques is also due to the availability of software platforms that facilitate the development of models, the execution of simulations and the analysis of results [16; 17; 18; 19]; in particular, among these software platforms, the best known and most used are: ASCAPE [20], MASON [21], Repast [22], AnyLogic [23] and NetLogo [24]. However, such platforms do not provide all the elements necessary to develop real intelligent agents, and so the development of the necessary models for some kinds of ABMS application may require the integration of an AI language (e.g., Prolog) or/and of some machine learning libraries. For example, [PERSON] et al. [25] proposed an intelligent information technology for integrating declarative languages and present an example of application that shows (i) how this technology allows the interoperability between NetLogo and Prolog, and (ii) how this kind of solution allows the resolution of decision-making problems and increases the efficiency of inference in a simulation environment. Moreover, as introduced above, an important factor that can consolidate ABMS applications' importance is the availability of software platforms that allow the development of highly complex and large-sized applications. A great deal of work has been done in this direction using compute clusters and graphics processing units (GPU)s. Among the main works, we can highlight [26; 27; 28; 29; 30]. However, the proposed solutions cannot solve all the problems that must be faced in developing complex ABMS applications with a large number of agents. This is due to many factors [31]; one of the most critical points is that the actions of agents drive the simulation, and each agent decided what to do by interacting with several other agents who, during the simulation, can always be the same or change, bit by bit, with a very high computational cost (n\({}^{2}\)) due to the need to identify the new agents at each simulation step. This is a big problem for applications running on a cluster of computers because, like this type of solution, execution is only effective if the processors spend most of their time processing rather than communicating [32]. Furthermore, it is often necessary to maintain the same order of execution of the agents to ensure the repeatability of the results, but in a multi-node system, this involves the use of synchronization protocols that at least increase execution times [33].