Giter Club home page Giter Club logo

flamegpu2-circles-benchmark-vis's Introduction

FLAMEGPU2 Circles Benchmark Visualisation

This repository contains a FLAME GPU 2 implementation of the Circles agent based model, to visualise the model benchmarked in https://github.com/FLAMEGPU/FLAMEGPU2-circles-benchmark and extract drift data for plotting.

Benchmark Description and Results

There is a single experiment within this example which mean measures drift of the agents per time step. This gives an indication of population stability and convergence towards a stable state. The communication radius is varied to show how this effects the emergent behaviour of the populations.

If the example is built with the CMAKE FLAMEGPU_VISUALISATION option enabled then the experiment runs a single experimental configuration with a fixed communication radius.

An example visualisation can be viewed on YouTube.

Circles model visualisation

The is an example of raw data in the sample/data directory with a description of the machine configurations used to generate it in each directory.

The results below are from a RTX 2080 Ti.

Drift Experiment

  • Communication Radius is varied between 1.0 and 5.0 with a step of 1.0
  • Population size is fixed at 64000
  • Environment width is fixed at 40.0
  • The number of simulation steps is 3000
  • 10 simulations are completed with unique seeds for each communication radius

Combined Figure

Building and Running the 3D Visualisation

Detail of dependencies and the cmake build process are described in full in the FLAMEGPU2-example-template repository and are not repeated here. For visualisation purposes, this should be built with visualisation enabled (e.g. -DFLAMEGPU_VISUALISATION=ON) and seatbelts off (e.g. -DFLAMEGPU_SEATBELTS=OFF passed to the cmake configuration step) to disable additional run-time checks.

For example, to build for Volta (SM_70) GPUs under Linux:

# Configure 
cmake . -B build -DCMAKE_BUILD_TYPE=Release -DFLAMEGPU_VISUALISATION=ON -DFLAMEGPU_SEATBELTS=OFF -DCMAKE_CUDA_ARCHITECTURES=70
# Build
cmake --build build -j`nproc` 

The generated binary can then be executed to run the visualisation, which will begin paused. Press p to unpause (or re-pause) the simulation.

cd build
./bin/Release/circles-benchmark-vis

Building and Running the Drift Benchmark

Detail of dependencies and the cmake build process are described in full in the FLAMEGPU2-example-template repository and are not repeated here. The benchmark should be built with seatbelts off (e.g. -DFLAMEGPU_SEATBELTS=OFF passed to the cmake configuration step) to disable additional run-time checks.

For example, to build for Volta (SM_70) GPUs under Linux:

# Configure 
cmake . -B build -DCMAKE_BUILD_TYPE=Release -DFLAMEGPU_SEATBELTS=OFF -DCMAKE_CUDA_ARCHITECTURES=70
# Build
cmake --build build -j`nproc` 

Running the generated executable will run the benchmark and generate output files:

cd build
./bin/Release/circles-benchmark-vis

This will produce a number of .csv files in the build directory.

Note: The FLAMEGPU2_INC_DIR environment variable may need to be set to ./_deps/flamegpu2-src/include/ for run-time compilation (RTC) to succeed if the source directory is not automatically found.

Plotting Results

Figures can be generated from data in CSV files via a python script.

Dependencies

It is recommended to use python virtual environment or conda environment for plotting dependencies.

I.e. for Linux to install the dependencies into a python3 virtual environment and plot the results from all experiments output to the build directory.

# From the root of the repository
# Create the venv
python3 -m venv .venv
# Activate the venv
source .venv/bin/activate
# Install the dependencies via pip
python3 -m pip install -Ur requirements.txt
# Plot using csv files contained within the build directory
python3 plot_publication.py -i build -o build/figures
# Use -h / --help for more information on optional plotting script parameters.

The sample figures were generated from the root directory using

python3 plot_publication.py -i sample/data/2080Ti-11.4-471.41/alpha.2-2080Ti-11.4-beltsoff -o sample/figures/2080Ti-11.4-471.41/alpha.2-2080Ti-11.4-beltsoff

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.