Morgan & Niemeyer - Performant and Portable High-Performance Computing at Scale via Python and Numba

Learn how Python & Numba power high-performance nuclear transport simulations across CPUs/GPUs, featuring MPI parallelization, open-source collaboration & 24x GPU speedups.

Key takeaways
  • MCDC (Monte Carlo Dynamic Code) is a Python/Numba-based framework for nuclear transport simulations that can run on both CPUs and GPUs at scale

  • The project achieves high performance using MPI for parallelization rather than shared memory, with each thread handling independent particle histories

  • Numba JIT compilation enables performant code execution but comes with limitations like lack of ahead-of-time compilation and restricted GPU operations

  • The framework can model complex time-dependent nuclear reactions, including the movement of fissile materials and neutron transport through materials

  • Performance is within 2-10x of traditional compiled codes, with 21-24x speedup when using GPUs compared to CPUs

  • Key challenges include handling AMD GPU support, debugging complexity compared to C++, and managing statistical error that converges slowly

  • The codebase is open-source, pip-installable, and designed for collaboration through GitHub

  • Monte Carlo methods allow handling 7 independent variables without discretization issues common in deterministic approaches

  • The project demonstrates that Python + Numba can enable rapid methods development while maintaining performance portability across architectures

  • Statistical error decreases by 1/√N, requiring massive particle counts to achieve acceptable error levels for simulations