dc.description.abstract | Computational science is an ever-expanding research eld. It combines tech-
nologies, modern computational methods, and simulations to address prob-
lems too complex to be e ectively predicted by theory alone or too expensive
or dangerous to be reproduced in the laboratory. This scienti c domain is
a multidisciplinary eld and impacts several sciences, engineering, and hu-
manities problems. The success of the computational science approach has
resulted in an increasing demand for computing resources to improve the
performance of solutions and enable the growth of models, both in size and
quality. For these reasons, parallel and distributed computing paradigms and
exploiting Cloud Computing have become essential in computational scien-
tists' everyday lives. Cloud provides a huge amount of computational power,
easily accessible to everyone in a price-aware manner. As a result, the no-
tion of \scalability" of an application, running over parallel or distributed
systems, has become central in computational science. In a nutshell, an
application is scalable if it can e ciently exploit an increasing amount of
computational power (e.g., number of nodes or processors). In this domain,
a relevant research challenge is to provide scalability at di erent levels, from
software libraries to frameworks and tools for helping the solution of scienti c
problems. Providing scalability permits scientists to face massive and com-
plex problems in a transparent and easy as possible way. This dissertation
discusses frameworks and parallel languages that allow scientists to approach
computational science problems under the lens of the extreme scalability re-
quirement. Contributions of this work can be summarized in three principal
categories: languages and tools, Agent-based Model (ABM) and simulation,
and Optimization via Simulation (OvS).
Many real-world scienti c applications consist of orchestrating several
di erent independent tasks or methods for accomplishing a particular work-
load. These work
ows are usually computationally and time demanding,
thus exploiting parallel and distributed techniques became essential. This
dissertation presents FLY, a domain-speci c language for scienti c applica-
tions, which aims at reconciling Cloud and High-Performance Computing
paradigms. FLY adopts a multi-cloud approach by providing a powerful, ef-
fective, and pricing-e cient tool for developing scalable work
ow-based scien-
ti c applications. FLY exploits di erent and at the same time Function-as-a-
Service cloud providers as computational backends in a transparent manner.
This dissertation describes the programming model of FLY, its language def-
inition, and the FLY source-to-source compiler. Furthermore, it is discussed
a performance evaluation of FLY on a popular benchmark for distributed
computing frameworks, along with a collection of case studies with an analy-
sis of their performance results and costs. Finally, a real use case scenario is
shown that implements an Optimization via Simulation process using FLY
for carrying out a distributed evaluation of simulations on an AWS backend.
ABM is a bottom-up modeling approach, where independent decision-
making agents model a complex system. Large-scale emergent behavior in
ABMs is a ected by the dimension of the population and the complexity
of each agent's behavior. However, the computational cost of the simula-
tion grows together with the increasing of model details. This dissertation
presents the architecture and the implementation of an open-source library
for developing Agent-Based Models using the Rust language. Rust-AB is
able to exploit both sequential and parallel computing platforms. An inves-
tigation on the ability of Rust to develop ABM simulations are discussed,
as well as several models developed with Rust-AB are described. Finally, a
performance comparison against the well-known Java ABM toolkit MASON
is also presented... [edited by Author] | it_IT |