Dynamically Generating Language Bindings for HPC Libraries
- Author: Niklas Dießner
- Type: Bachelor's Thesis
- Date: 2023-01-22
- Reviewers: Jun.-Prof. Dr. Michael Kuhn, Michael Blesel
- Supervisors: Jun.-Prof. Dr. Michael Kuhn
- Download: PDF
As Python is a fairly easy to use language, it is suited for beginners and prototyping, as it offers many features making it easy to get fast results. Performancewise however Python often plays the second fiddle compared to compiled languages, like C or Rust. The gap between convenience and performance can be bridged by generating language bindings for code written in a performance focused compiled language like C, so it can be used in Python. JULEA is a storage framework fitted for High Performance Computing (HPC) applications. It is merely usable for applications written in C. By generating a wrapper automatically, this thesis aims to extend the compatibility of the JULEA clients to Python while adding as little overhead as possible in order to maintain Python support. The result is a Python module that offers support for the key value, object and item client. With the drawback of a slight, however manageable decrease in performance, said support allows the implementation of newer clients, which might be added to the C library in the future, in the module by simply modifying one script and compiling the module.