CUDA Spotlight: Paul Richmond
GPU-Accelerated Agent-Based Simulation of Complex Systems
This week's Spotlight is on Paul Richmond, a Vice Chancellor's Research Fellow at the University of Sheffield (a CUDA Research Center). Paul's research interests relate to the simulation of complex systems and to parallel computer hardware.
Within his current position he is developing novel software enabling modelers to accelerate large simulations of interacting autonomous individuals (agents) for the purposes of interactive visualization, prediction and intelligent decision support.
This interview is part of the CUDA Spotlight Series.
Q & A with Paul Richmond
NVIDIA: Paul, tell us about the FLAME GPU software which you developed.
The Flexible Large-scale Agent Modelling Environment for the GPU (FLAME GPU) is a piece of software which enables high level descriptions communicating agents to be automatically translated to GPU hardware. With FLAME GPU, simulation performance is enormously increased over traditional agent-based modeling platforms and interactive visualization can easily be achieved. The GPU architecture and the underlying software algorithms are abstracted from users of the FLAME GPU software, ensuring accessibility to users in a wide range of domains and application areas.
NVIDIA: How does FLAME GPU leverage GPU computing?
One of the most exciting aspects of GPU-accelerated simulation is that simulations can often be run faster than real-time. For example, a pedestrian evacuation model can be matched to real-world conditions and an evacuation plan can be simulated, essentially looking into the future for potential danger or problems. This forms the basis of my current work into using such agent simulation techniques for prediction and decision making.
NVIDIA: What challenges did you face?
The main challenge in parallelizing a generic agent-based model is ensuring that agents can be maintained in homogeneous groups. The use of a state-based representation is the main technique which is used to ensure homogenous grouping of agent behaviors.
The creation of spare lists of agents is another area which is challenging to performance. Spare lists can be introduced by agents transitioning between states or through the creation and deletion of agents during simulation. Parallel stream compaction, a process of using prefix scan to remove empty gaps in agent lists, is used heavily in many places within the FLAME GPU software to prevent sparse data.
NVIDIA: Which CUDA features and GPU libraries do you use?
I am currently re-engineering a large amount of the FLAME GPU code to take advantage of newer GPU features such as concurrency through parallel streams, GPUDirect for multi GPU architectures and faster sorting methods based on improved atomics performance.
NVIDIA: What is ACRC and how is it using the outputs of FLAME GPU?
NVIDIA: Tell us about Osteolytica.
During the training program I met with Dr. Andrew Chantry, a clinical researcher in the school of medicine. We discussed a particular problem related to not having a robust method for quantifying the extent of cancer-induced osteolytic lesion damage of bone samples obtained through microCT volumetric scans.
I realized that GPU computing could be used to provide a novel algorithm for localized bone surface reconstruction, effectively providing a metric to measure damage. This software is now used heavily within Dr. Chantry's research to evaluate cancer treatments and the university is exploring commercialization options.
NVIDIA: When did you first see the promise of GPU computing?
NVIDIA: What are you looking forward to in the next five to ten years?
More generally, I suspect that over the next ten years limitations in scaling simulations will be not be in hardware, instead software will have to evolve to become increasingly parallel. Platforms such as CUDA are extremely helpful for programming GPU devices. However, in some cases additional algorithms and data parallel techniques will be required.I am interested in the idea that biological brain function can offer some insight into how future hardware and software techniques can scale to the extreme levels evident in nature.
Bio for Paul Richmond
Dr. Paul Richmond is a Vice Chancellor Research Fellow in the Department of Computer Science at the University of Sheffield. He is currently working on the acceleration of complex systems simulations using accelerator architectures such as GPUs. His research interests relate to the software engineering challenges of how complex systems can be described using high level or domain specific tools and how automated mapping to parallel and distributed hardware architectures can be achieved.Paul is particularly interested in applying agent-based techniques to cellular biology, computational neuroscience, pedestrian and transport systems as well as working with industry through the University of Sheffield's new Advanced Digital Research Center (ACRC), of which he is a member.