Giter Club home page Giter Club logo

flamegpu-old.github.io's Introduction

FLAME GPU

http://www.flamegpu.com

Current version: 1.5.0

FLAME GPU (Flexible Large-scale Agent Modelling Environment for Graphics Processing Units) is a high performance Graphics Processing Unit (GPU) extension to the FLAME framework.

It provides a mapping between a formal agent specifications with C based scripting and optimised CUDA code. This includes a number of key ABM building blocks such as multiple agent types, agent communication and birth and death allocation. The advantages of our contribution are three fold.

  1. Agent Based (AB) modellers are able to focus on specifying agent behaviour and run simulations without explicit understanding of CUDA programming or GPU optimisation strategies.
  2. Simulation performance is significantly increased in comparison with desktop CPU alternatives. This allows simulation of far larger model sizes with high performance at a fraction of the cost of grid based alternatives.
  3. Massive agent populations can be visualised in real time as agent data is already located on the GPU hardware.

Documentation

The FLAME GPU documentation and user guide can be found at http://docs.flamegpu.com, with source hosted on GitHub at FLAMEGPU/docs.

Getting FLAME GPU

Pre-compiled Windows binaries are available for the example projects in the FLAME-GPU-SDK, available as an archive for each release.

Source is available from GitHub, either as a zip download or via git:

git clone https://github.com/FLAMEGPU/FLAMEGPU.git

Or

git clone [email protected]:FLAMEGPU/FLAMEGPU.git

Building FLAME GPU

FLAME GPU can be built for Windows and Linux. MacOS should work, but is unsupported.

Dependencies

  • CUDA 8.0 or later
  • Compute Capability 2.0 or greater GPU (CUDA 8)
    • Compute Capability 3.0 or greater GPU (CUDA 9)
  • Windows
    • Microsoft Visual Studio 2015 or later
    • Visualisation:
      • freeglut and glew are included with FLAME GPU.
    • Optional: make
  • Linux
    • make
    • g++ (which supports the cuda version used)
    • xsltproc
    • Visualistion:
      • GL (deb: libgl1-mesa-dev, yum: mesa-libGL-devel)
      • GLU (deb: libglu1-mesa-dev, yum: mesa-libGLU-devel)
      • GLEW (deb: libglew-dev, yum: glew-devel)
      • GLUT (deb: freeglut3-dev, yum: freeglut-devel)
    • Optional: xmllint

Windows using Visual Studio

Visual Studio 2015 solutions are provided for the example FLAME GPU projects. Release and Debug build configurations are provided, for both console mode and (optionally) visualisation mode. Binary files are places in bin/x64/<OPT>_<MODE> where <OPT> is Release or Debug and <MODE> is Console or Visualisation.

An additional solution is provided in the examples directory, enabling batch building of all examples.

make for Linux and Windows

make can be used to build FLAME GPU simulations under linux and windows (via a windows implementation of make).

Makefiles are provided for each example project examples/project/Makefile), and for batch building all examples (examples/Makefile).

To build a console example in release mode:

cd examples/EmptyExample/
make console

Or for a visualisation example in release mode:

cd examples/EmptyExample/
make visualisation

Debug mode executables can be built by specifying debug=1 to make, i.e make console debug=1.

Binary files are places in bin/linux-x64/<OPT>_<MODE> where <OPT> is Release or Debug and <MODE> is Console or Visualisation.

For more information on building FLAME GPU via make, run make help in an example directory.

Note on Linux Dependencies

If you are using linux on a managed system (i.e you do not have root access to install packages) you can provide shared object files (.so) for the missing dependencies.

I.e. libglew and libglut.

Download the required shared object files specific to your system configuration, and place in the lib directory. This will be linked at compile time and the dynamic linker will check this directory at runtime.

Alternatively, to package FLAME GPU executables with a different file structure, the .so files can be placed adjacent to the executable file.

Usage

FLAME GPU can be executed as either a console application or as an interactive visualisation. Please see the documentation for further details.

# Console mode
usage: executable [-h] [--help] input_path num_iterations [cuda_device_id] [XML_output_override]

# Interactive visualisation
usage: executable [-h] [--help] input_path [cuda_device_id]

For further details, see the documentation or see executable --help.

Running a Simulation on Windows

Assuming the GameOfLife example has been compiled for visualisation, there are several options for running the example.

  1. Run the included batch script in bin/x64/: GameOfLife_visualisation.bat
  2. Run the executable directly with an initial states file
    1. Navigate to the examples/GameOfLife/ directory in a command prompt
    2. Run ..\..\bin\x64\Release_Visualisation\GameOfLife.exe iterations\0.xml

Running a Simulation on Linux

Assuming the GameOfLife example has been compiled for visualisation, there are several options for running the example.

  1. Run the included bash script in bin/linux-x64/: GameOfLife_visualisation.sh
  2. Run the executable directly with an initial states file
    1. Navigate to the examples/GameOfLife/ directory
    2. Run ../../bin/linux-x64/Release_Visualisation/GameOfLife iterations/0.xml

How to Contribute

To report FLAME GPU bugs or request features, please file an issue directly using Github. If you wish to make any contributions, please issue a Pull Request on Github.

Publications

Please cite FLAME GPU using

@article{richmond2010high,
  doi={10.1093/bib/bbp073},
  title={High performance cellular level agent-based simulation with FLAME for the GPU},
  author={Richmond, Paul and Walker, Dawn and Coakley, Simon and Romano, Daniela},
  journal={Briefings in bioinformatics},
  volume={11},
  number={3},
  pages={334--347},
  year={2010},
  publisher={Oxford Univ Press}
}

For an up to date list of publications related to FLAME GPU and it's use, visit the flamegpu.com website.

Authors

FLAME GPU is developed as an open-source project by the Visual Computing research group in the Department of Computer Science at the University of Sheffield. The primary author is Dr Paul Richmond.

Copyright and Software Licence

FLAME GPU is copyright the University of Sheffield 2009 - 2018. Version 1.5.X is released under the MIT open source licence. Previous versions were released under a University of Sheffield End User licence agreement.

Release Notes

  • Documentation now hosted on readthedocs, http://docs.flamegpu.com and https://github.com/flamegpu/docs
  • Supports CUDA 8 and CUDA 9
    • Removed SM20 and SM21 support from the default build settings (Deprecated / Removed by CUDA 8.0 / 9.0)
  • Graph communication for agents with new example
  • Updated Visual Studio version to 2015
  • Improved linux support by upgraded Makefiles
  • Additional example projects
  • Template example has been renamed EmptyExample
  • tools/new_example.py to quickly create a new example project.
  • Various bugfixes
  • Adds step-functions
  • Adds host-based agent creation for init and step functions
  • Adds parallel reductions for use in init, step and exit functions
  • Additional command line options
  • Environmental variables can now be loaded from 0.xml
  • Adds the use of colour agent variable to control agent colour in the default visualisation
  • Additional controls for the default visualisation
  • Macro definitions for default visualisation colours
  • Macro definitions for message partitioning strategy
  • Adds instrumentation for simple performance measurement via preprocessor macros
  • Improved functions.xslt output for generating template functions files.
  • Improved state model diagram generator
  • Updated Circles Example
  • Purged binaries form history, reducing repository size
  • Updated Visual Studio Project files to 2013
  • Improved Visual Studio build customisation
  • Fixed double precision support within spatial partitioning
  • Compile-time spatial partition configuration validation
  • Added support for continuous agents reading discrete messages.
  • Minor bug fixes and added missing media folder
  • FLAME GPU 1.4 for CUDA 7 and Visual Studio 2012

##Problem reports

To report a bug in this documentation or in the software or propose an improvement, please use the FLAMEGPU GitHub issue tracker.

flamegpu-old.github.io's People

Contributors

jcbpyle avatar mondus avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flamegpu-old.github.io's Issues

Temporary fix for publications list on abandoned public site

Re my Q5 and Q6 and answer to them here:

FLAMEGPU/FLAMEGPU2#354 (comment)

Q5 publications list here includes some missing from public site:
https://flamegpu.github.io/publications/

Could this be updated to include last few years and made easily accessible? (Does not include some very useful papers from 2017-18 and hopefully others even later).

Some links from main publicly available list are broken and should be fixed:
http://www.flamegpu.com/publications

Q6. If I am pointed to a markdown version of publications list to update I could add a few items I have come across though I imagine it would be better to generate direct from a bib file that somebody should have.

@mondus said:

Q5: The website is out of date. We have a prototype new site which we will deploy with the first release of FLAME GPU 2. New papers will be published on the architecture when we are ready.

Q6: Our new site will be github driven so you will be able to issue a pull request to add publications. For now you could add an issue to https://github.com/FLAMEGPU/flamegpu.github.io/issues which is an old port of our current site which will be used as a starting point for the new one.

  1. I understand from answer to Q5 and others that focus is on getting an initial release of FGPU2 leaves little time and requires avoiding distractions.

  2. Meanwhile I suggest at least adding a link from outdated list to:

https://flamegpu.github.io/publications/

Here is a sample broken link.

This works from unpublished new site:

http://www.paulrichmond.shef.ac.uk/cv/publications/pedestrians.pdf

But this does not work from published old site:

http://www.paulrichmond.staff.shef.ac.uk/publications/pedestrians.pdf

Both are for:

Richmond Paul, Romano Daniela(2008), A High Performance Framework For Agent Based Pedestrian Dynamics On GPU Hardware, Proceedings of EUROSIS ESM 2008 (European Simulation and Modelling), October 27-29, 2008, Universite du Havre, Le Havre, France

Several others similar. I assume wholesale link rot when folder moved from /cv/ to /publications/.

At present the old site conveys the impression of a project abandoned around 2012.

  1. Plus an "edit on Github" link to markdown for that page.

  2. However that page appears to be written in html with broken rendering on Github:

https://github.com/FLAMEGPU/flamegpu.github.io/blob/master/_pages/publications.md

See section for:

"Publications Using FLAME GPU

2014+"

After 3rd reference (Konan S), there are 9 list items (starting with de Paiva Oliveira and ending with Hermellin, E.) broken on github but readable at:

https://flamegpu.github.io/publications/

  1. Not feasible to submit edits to html pages on Github in view of above. Needs to be markdown version that jekyll then generates html from. That can presumably be generated directly from a bib file used to maintain list.

  2. BTW direct link to publications works but it is inaccessible via the "About" drop down menu (on my browser). That doesn't matter as long as there is a PROMINENT direct link from public site to a reasonably current list of publications (with a "back soon notice from the phoenix ;-)

  3. I also suggest adding item numbers (within section labels). If there is a markdown version with a sample item number I can add pull requests for numbering the rest, also for adding doi and perhaps some missing items as I catch up with the literature.

  4. PS Do you consider BioDynaMo as another potential general purpose ABM for GPUs platform?

"BioDynaMo: an agent-based simulation platform for scalable
computational biology research"

bioRxiv preprint June 8, 2020. https://doi.org/10.1101/2020.06.08.139949

It dismisses FGPU along with others:

"SBML integration.Existing agent-based simulators [5,10โ€“20] do not integrate with
the well-established SBML standard. Therefore, users of these simulators do not benefit
from the large collection of available chemical reaction networks described in SBML
format. In contrast, BioDynaMo allows users to simulate SBML models in each agent."

FGPU is included as item 20 in the "10-20"!

If BioDynaMo or any others are comparable for general purpose ABMs it could also be a good idea to add a section for listing them as earlier FGPU papers mention FGPU as the only such framework available for GPUs.

Anyway, SBML could be added to the future input output list for FGPU along with hdf5.

Recent papers about ABM frameworks sometimes display incomprehension about FGPU, eg:

Koschienko MASS CUDA s2.3 p142
Y. Demazeau et al. (Eds.): PAAMS 2019, LNAI 11523, pp. 139โ€“152, 2019.
https://doi.org/10.1007/978-3-030-24209-1_12

A Survey on Agent-based Simulation using
Hardware Accelerators Jiajian Xiao et al
arxive [cs.MA] 1807.01014

Incomprehension is encouraged by lack of access to a current publications list.

  1. Richmond Paul, Coakley Simon, Romano Daniela(2009), A High Performance Agent Based Modelling Framework on Graphics Card Hardware with CUDA, Proc. of 8th Int. Conf. on Autonomous Agents and Multiagent Systems (AAMAS 2009 link), May, 10-15, 2009, Budapest, Hungary

Correct title is:

A High Performance Agent Based Modelling Framework
on Graphics Card Hardware with CUDA
(Extended Abstract)

I tracked this down despite broken link and different page numbering from the published proceedings:

http://www.paulrichmond.staff.shef.ac.uk/publications/aamas09.pdf

But was unable to find a full version. If there is one, please provide a link. Otherwise I suggest to save others the time of looking for it by adding a note:

(The 2 page Extended Abstract is the only version available).

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.