Nils Rottstegge
← All projects

Research · Jülich Supercomputing Centre · 2026

Adaptive Trees on a GPU

The Fast Multipole Method needs a spatial hierarchy over the particles. Dense trees waste work and memory on empty space; pointer-based sparse trees waste GPU efficiency. This project builds adaptive octrees and binary trees that sit between the two, represented as sorted arrays of space-filling-curve keys so every step is a bulk parallel primitive. Guest Student Programme 2026, August to October.

Explore the trees in 3D

All particles start in a thin disc; the rest of the domain stays coarse. 512,002 particles

vtk.js scene, about 3–4 MB · drag to rotate, scroll to zoom

My contribution

  • Adaptive octrees and binary (KDTree3D) trees in C++/CUDA on the Cornerstone representation: sorted Morton keys and leaf boundaries.
  • NFCount: refinement driven by the expected near-field work of a leaf and its neighbours, not by particle count alone.
  • TreeView: reconstructs the internal FMM hierarchy directly from the leaves in a few parallel passes, without pointers or host readback.
  • GPU optimisations: cooperative stencil evaluation, caching and compaction, fixed-capacity buffers, overlapping streams and CUDA Graphs.

Results

  • Tree update and hierarchy construction up to 2.4× faster than Cornerstone (baseline).
  • Complete FMM execution up to 4.8× faster than with a dense tree.

Technologies

  • C++20
  • CUDA
  • CUDA Graphs
  • CUB
  • CMake
  • Catch2 / CTest
  • JUPITER

Links