Description
Non-Python codebases that use metaprogramming present significant challenges to cross-language development. These challenges are further compounded with the inclusion of GPU processing. While common methods of Python/GPU interoperation are covered by popular Python frameworks, these frameworks do not trivialize this use case.
In this talk, we will discuss the process of integrating a Python code for Monte Carlo particle transport (MCDC) (https://github.com/CEMeNT-PSAAP/MCDC) with a template-based CUDA C++ framework which applies inversion of control (Harmonize) (https://github.com/CEMeNT-PSAAP/harmonize). We will discuss managing the complexity of cross-language dependency injection, relevant implementation strategies, and pitfalls to avoid.