  Researchers in biology are faced with the tough challenge of developing
high-performance computer simulations of their increasingly complex agent-based
models. BioDynaMo is an open-source agent-based simulation platform that aims
to alleviate researchers from the intricacies that go into the development of
high-performance computing. Through a high-level interface, researchers can
implement their models on top of BioDynaMo's multi-threaded core execution
engine to rapidly develop simulations that effectively utilize parallel
computing hardware. In biological agent-based modeling, the type of operations
that are typically the most compute-intensive are those that involve agents
interacting with their local neighborhood. In this work, we investigate the
currently implemented method of handling neighborhood interactions of cellular
agents in BioDynaMo, and ways to improve the performance to enable large-scale
and complex simulations. We propose to replace the kd-tree implementation to
find and iterate over the neighborhood of each agent with a uniform grid method
that allows us to take advantage of the massively parallel architecture of
graphics processing units (GPUs). We implement the uniform grid method in both
CUDA and OpenCL to address GPUs from all major vendors and evaluate several
techniques to further improve the performance. Furthermore, we analyze the
performance of our implementations for models with a varying density of
neighboring agents. As a result, the performance of the mechanical interactions
method improved by up to two orders of magnitude in comparison to the
multithreaded baseline version. The implementations are open-source and
publicly available on Github.
