MASS CUDA#

MASS, short for Multi Agent Spacial Simulation, is a library for implementing agent-based simulations. It provides high level APIs for customizing behavior of agents and the environment while maintaining high performance. MASS CUDA is the CUDA implementation of MASS, which provides similar APIs as the C++ implementation but executed on Nvidia GPUs.

In MASS, ABM simulations are modeled using two concepts: Places and Agents

Places#

Places represent the environment of an ABM simulation. It is a N-dimensional grid where each cell is named a Place. Each Place maintains certain data as its attributes and can access neighboring instances around it. Users can customize the behavior of all the Place instances of a Places in terms of member functions, which will be invoked on all the instances concurrently.

Agents#

Agents represents a collection of autonomous entities. Each individual instance is called an Agent, which can reside on and interact with Place instances. Similar to Place instances, each Agent instance maintains it own data as attributes and can have customized behavior as member functions, which will also be invoked concurrently on all instances. However, unlike Place instances, Agent instances are not fixed during the simulation. They can move to other Place instances (migration), spawn children, or terminate themselves.

In MASS, an Agents is strongly associated with a Places and each Agent instance must reside on a Place instance of the associated Places. It’s currently not allowed for an Agent instance to migrate to a Place instance of another Places. However, having Agent instances of different Agents residing on the same Place instance is allowed.

Execution Model in MASS CUDA#

In MASS CUDA, all the Place and Agent instances are maintained and executed on the GPU. Each instance is assigned to one CUDA thread to execute its customed member functions.