Photo of Gracjan Adamus

Gracjan Adamus

I started programming in high school and quickly realized how much I enjoy it. I mainly develop in C++, Python, C, and CUDA. I'm passionate about GPUs, high-performance computing, and performance-critical systems. Based in Poland.

Education

Oct 2023 – Now

Bachelor of Science - Applied Computer Science

AGH University of Kraków

Kraków, Poland

Oct 2023 – Now

Thesis: JAX implementation of a parallel MPDATA solver for CPUs, GPUs and beyond

President of CS student scientific club KERNEL in years 2025-2026, board member in 2024-2025. Member of Mars Rover Software Team of AGH Space Systems in 2024-2025.

Collaborated with a team at University of Illinois Urbana-Champaign, contributing to an open-source, multi-language project. I worked with Python wheel packaging, pybind11/nanobind bindings, CI/CD, interfacing with Fortran and various other things.

CC++PythonJavaPostgreSQLAlgorithms and Data StructuresEmbedded SystemsMachine LearningCI/CDpybind11/nanobindcibuildwheelJAX
Sep 2019 – May 2023

Math-Physics-English class

II Liceum Ogólnokształcące w Koninie

Konin, Poland

Sep 2019 – May 2023

Graduated with perfect 100% scores in Math, Advanced Math, and Advanced Physics Matura exams.

I have earned the title of Laureate (3rd Place) in a Nationwide Physics Competition organized by Poznań University of Technology, and the title of Finalist in the Nationwide Physics Competition organized by AGH University of Kraków. I have also achieved Top 10% rankings in the Kangaroo International Math Competition and a Top 1% ranking in the Fox National English Language Competition.

Work Experience

Jun 2026 – Sep 2026

Summer Student

CERN

Geneva, Switzerland

Jun 2026 – Sep 2026

Project Title: Exploration and Evaluation of non-LHC GPU Benchmarks for HEPScore4GPU.
Project Report: link
Summer Student Session Presentation: link

Selected from more than 14000 applicants, I completed a research project focused on GPU benchmarking within the IT Department, Computing for Experiments group, Worldwide LHC Computing Grid section (IT-CE-LCG).

My work involved containerizing HPC applications from various scientific domains (SPECFEM3D Globe, Quantum ESPRESSO, MILC QCD), collecting benchmark data with the HEP Benchmark Suite, and validating their reproducibility across multiple runs and on different machines (NVIDIA A100, V100, L4, T4). I also created and tested containers for SPECFEM3D Globe targeting AMD GPUs as well as CPU-only execution via MPI. I profiled the workloads with Nsight Systems and Nsight Compute. Additionally, I contributed some bug fixes and small features to HEP Benchmark Suite and HEPScore.

I presented my findings to fellow summer students and at group and section meetings. I also attended various CERN seminars and workshops, where I met notable figures such as Bjarne Stroustrup and Tim Mattson.

PythonDockerApptainerNsight SystemsNsight ComputeBash
Feb 2026 – May 2026

Junior C++ Developer

digatus

Remote

Feb 2026 – May 2026

I worked on extending a Qt application for the client's needs, writing both QML widgets and C++ modules. I also took part in testing, code reviews, and writing technical documentation. I discovered and fixed numerous bugs and created a CI pipeline for building and publishing the artifacts. On my own initiative, I built a Python TUI for real-time mocking of the data received by the app, which resulted in much faster and easier development and QA reviews.

C++QtQMLPythonCMakeGitlab CI
Jul 2025 – Sep 2025

Summer Intern

Paul Scherrer Institute

Villigen, Switzerland

Jul 2025 – Sep 2025

I was a part of an interdisciplinary team, spanning physicists and software developers. My main line of work was involved analysing space radiation data from monitors aboard ESA's satellites (IREM and RADEM). All my work was done in Python.

I created automation scripts for parsing 100s of CDF files into HDF5 format. I developed algorithms for automatic detection of space events like radiation belt passages, solar energetic particles and Forbush decreases with NumPy and pandas. I prepared a series of exemplary Jupyter Notebooks showcasing the algorithms, and providing analysis of said events. I also begun the process of porting the functions to be JIT-compilable with Numba.

PythonNumPypandasMatplotlibNumbaJupyter NotebookHDF5CDF

Personal Projects

Dec 2025 – Jan 2026

shrimp

Dec 2025 – Jan 2026

I created a web-based, high-performance image editor. It is built on top of the Nuxt 4 full-stack framework. The application utilizes WebGPU for accelerated computation. To ensure cross-browser compatibility, it seamlessly falls back to a WebAssembly implementation compiled from C++ with Emscripten.

A PostgreSQL database is used to store user information and image metadata, while the actual image files are kept in MinIO - an S3-compatible object storage. The entire application stack is containerized and orchestrated via Docker Compose.

TypeScriptNuxt 4Vue.jsWebAssemblyWebGPUDockerDocker ComposePostgreSQLS3 Object Storage
Aug 2025 – Sep 2025

mole-cli

Aug 2025 – Sep 2025

I developed a cross-platform C++17 library for building interactive, shell-like CLI applications with minimal boilerplate. C++ functions can be turned into callable commands with just one line. Thanks to template metaprogramming, function argument types don't need to be provided - they are automatically deduced, and also used to generate the help command output.

The library natively supports user-defined types, and CLIs can be nested to form sub-menus. With minimal changes to the original functions, different commands can share state across invocations. Input and output streams can also be controlled, allowing the resultant executable to be used as a script runner. The entire project is fully tested on CI, with GoogleTest and Valgrind across Linux, Windows, and macOS.

C++CMakeGoogleTestGithub Actions
Sep 2024 – Dec 2024

mole_math

Sep 2024 – Dec 2024

I developed a lightweight, matrix-based math library in C. I implemented parallelized computation using OpenMP for multi-threaded CPU execution and CUDA for GPU acceleration. I used preprocessor macros to simulate default arguments that control which computing backend will be used. If an argument is not provided, a simple heuristic is used to make that decision. Makefile handles the compilation and installation of the library. I also built a small Flask webapp to host the project's documentation.

COpenMPCUDAMakefileCTest

Open Source

Since: Oct 2025

nanobind_json

Maintainer

Since: Oct 2025

nanobind_json serves as a seamless bridge for nlohmann::json objects with nanobind. A single header include is all you need to pass JSON data between Python and C++. The library is mentioned in the official nanobind documentation after a small email exchange with Wenzel Jakob.

I have taken over maintenance of the library, and fixed all issues to make it compatible with current nanobind versions. I also added tests and CI workflows. The library is built and tested on Linux, Windows, and macOS with their respective default compilers (gcc, MSVC, clang).

C++Pythonnanobindnlohmann::jsonPytestCMakeGithub Actions
Since: Jan 2025

PyPartMC

Contributor

Since: Jan 2025

I participated in bi-weekly meetings of teams at University of Illinois Urbana-Champaign and AGH University of Kraków. I was responsible for porting our library's C++ to Python bindings from pybind11 to nanobind, and switching to cibuildwheel for our wheel building procedure on the Github Actions CI. I developed an input checker, which helps to guard the users from making simple mistakes like typos. I also fixed the pdoc documentation, with the most hacky piece of Python code I have ever written.

PythonC++pybind11/nanobindCMakecibuildwheelGithub Actions

Presentations

TalkAug 2026

My journey of fixing an unmaintained package, spanning Python, C++, nanobind and Github Actions

Python Maven

Online

I was invited to give an online talk for the Python Maven community meetups. The bulk of my presentation was the same as my nanobind_json talk at Pykonik - however, with no strict time constraints, I could expand on the topic. I also added a small nanobind "crash-course" at the end, showcasing how to build a basic package, export class properties, use STL constructs, and even how to write your own custom type casters.

TalkJul 2026

Engineering Fortran-to-Python Bindings in C++ with nanobind[_json] and cibuildwheel

EuroSciPy 2026 - European Conference on Python in Science

Kraków, Poland

I presented the lessons learned from the development of PyPartMC. I detailed our architecture for bridging the languages by leveraging Fortran’s ISO C Bindings and utilizing them in Python via C++ and nanobind.

I went over the technical hurdles required to make the library Pythonic, such as managing the garbage collection of Fortran objects or using nanobind_json. I shared our CI and packaging journey, using cibuildwheel to achieve a single pip install across all platforms, automating git submodules with Dependabot and employing undocumented CMake trickery to control our scikit-build-core build process.

PosterJul 2026

PyPartMC: A Pythonic interface enhancing Fortran-based simulation package

EuroSciPy 2026 - European Conference on Python in Science

Kraków, Poland

In the poster, I outline the architecture of a multi-language project called PyPartMC, to which I am a contributor. PyPartMC serves as a Pythonic interface to PartMC, which is a 20-year-old, robust Fortran package for atmospheric aerosol simulations.

I describe the process of creating complex bindings from Fortran to Python, using Fortran's ISO C Bindings and nanobind. I also mention other architectural challenges, such as garbage collection and the maintainability of git submodules.

TalkMay 2026

Dr. nanobind_json or: How I Learned to Stop Worrying and Fix an Unmaintained Package

Pykonik Tech Talks - Kraków Python User Group

Kraków, Poland

I presented my journey of fixing the nanobind_json package. I started by providing background on what pybind11 and nanobind are, and why I even needed the nanobind_json utility. I went over the interesting bugs that I encountered, and how a single line could cost me a couple of hours of work. I also showed how I developed the testing and CI for the library.