FLAMEGPU / FLAMEGPU2

FLAME GPU 2 is a GPU accelerated agent based modelling framework for CUDA C++ and Python
https://flamegpu.com
MIT License
105 stars 20 forks source link

Agent type for low-population highly parallel workload agents #1184

Open ptheywood opened 7 months ago

ptheywood commented 7 months ago

FLAME GPU 2 is not currently usable for all types of agent models, primarily targetting models with many (~10k/100k/1000k) realtively light/small agents (low per-agent memory). This is due to the GPU abstraction of 1 agent == 1 thread.

However, somtimes a population of agents will be relativly small, but may need to interact with a larger population of agnets, justifying the use of FLAME GPU.

E.g. an economics model with a small number of financial institutions which need to interact with a large population of individuals / buisnesses.

Currently, this could be implemented by having a "normal" flamegpu agent population for the individuals / buisnesses, and using host-layer or step functions to manually implement the financial institution agent's logic, in serial on the host.

From a modellers perspective, it would be much nicer if this type of agent could be modelled within the FLAME GPU API itself. These agents could:

Some combinations of the above might be required to support all models, or other cases not included here.

This may also require some form of sparse per-agent data structure, similar to #1048 but for agent variables.

Naming options previously mentioned (for search purposes) but none are great included: fat agents (used internally already for another purpose), wide agents, host agents, macro agents