  Super-Droplet Method (SDM) is a probabilistic Monte-Carlo-type model of
particle coagulation process, an alternative to the mean-field formulation of
Smoluchowski. SDM as an algorithm has linear computational complexity with
respect to the state vector length, the state vector length is constant
throughout simulation, and most of the algorithm steps are readily
parallelizable. This paper discusses the design and implementation of two
number-crunching backends for SDM implemented in PySDM, a new free and
open-source Python package for simulating the dynamics of atmospheric aerosol,
cloud and rain particles. The two backends share their application programming
interface (API) but leverage distinct parallelism paradigms, target different
hardware, and are built on top of different lower-level routine sets. First
offers multi-threaded CPU computations and is based on Numba (using Numpy
arrays). Second offers GPU computations and is built on top of ThrustRTC and
CURandRTC (and does not use Numpy arrays). In the paper, the API is discussed
focusing on: data dependencies across steps, parallelisation opportunities, CPU
and GPU implementation nuances, and algorithm workflow. Example simulations
suitable for validating implementations of the API are presented.
