Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
ptheywood opened this issue Feb 9, 2024 · 0 comments
Open

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

ptheywood opened this issue Feb 9, 2024 · 0 comments

Comments

@ptheywood
Copy link
Member

ptheywood commented Feb 9, 2024

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:

  • exist soley on the host
  • exist on the host or the device transparently
  • Exist on the host and device, with a form of agent function which exposes a different level of parallelism
    • One thread per input message?
    • One block (or cluster if hopper+ only) per agent, with some CTA-like collective operations

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant