Skip to content
View prabhkodes's full-sized avatar
🏠
Working from home
🏠
Working from home

Block or report prabhkodes

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
prabhkodes/README.md

Prabhsharan Singh

I make scientific code run faster on bigger machines.
Master's in High Performance Computing · ICTP & SISSA, Trieste, Italy

Email LinkedIn Location Open to relocation

Fortran C++ CUDA OpenACC MPI OpenMP LLVM Nsight


Currently finishing a Master's in High Performance Computing at the Abdus Salam International Centre for Theoretical Physics (ICTP) — a UNESCO research centre in Trieste — run jointly with SISSA, the International School for Advanced Studies. Thesis defends December 2026.

Before that, four years building production platforms — distributed compute, CI/CD and data pipelines — at AI startups. These days I spend my time porting and profiling scientific codes for heterogeneous CPU/GPU systems.

Most of what's here was run on Leonardo at CINECA, up to 1792 cores or 40 A100s. Each badge above links to a project that uses it.

Right now

  • Master's thesis with OGS, the National Institute of Oceanography and Applied Geophysics — taking gmrecords ground-motion processing to the edge, so a seismological network processes records on the accelerometers themselves instead of shipping raw waveforms to a central server.
  • Ongoing research on xFFL with the University of Turin — cross-facility federated learning, training across HPC sites that cannot pool their data.

Finding out why code is slow — then making it fast

Project What it is Result
low_level_optimisations An out-of-tree LLVM pass that classifies loop memory access by stride and predicts vectorisability before the code runs 30% lost purely to missed vectorisation
gpu-kernel-profiling Reading Nsight Systems traces on A100 — plus tooling to extract kernel timings straight from the trace databases 11% of peak, traced to a bank conflict
fft-gpu-programming-models Six implementations of one FFT — hand-written CUDA, OpenACC and cuFFT — benchmarked head to head OpenACC 5× slower than CUDA
matrix-multiplication-parallel Dense GEMM four ways, with roofline analysis 45 TFLOP/s on 16 nodes

Scientific codes, ported and optimised

Project What it is Result
miniWeather-mpi-openacc Fortran atmospheric model taken to MPI + OpenMP + OpenACC, with parallel NetCDF, CMake and containerised CI 190 s → 2.1 s, then 8.2× on GPU
quantum-espresso-ks-scaling Profiling and GPU-porting the Davidson eigensolver inside Quantum ESPRESSO — plane-wave DFT FFT 11.3×, solver only 2.4×
jacobi-poisson-solver One Laplace problem in four parallel models — MPI+OpenMP, HDF5 parallel I/O, OpenACC, NVSHMEM 94% efficiency at 1120 cores
fisher-kpp-rumour-diffusion Reaction-diffusion PDE solved in parallel with PETSc — DMDA, Runge-Kutta time integration Matches the analytic wave speed

Making it run anywhere, and at scale

Project What it is
hpc_containers One MPI+OpenACC solver shipped four ways — native, InfiniBand-forced, Singularity, Docker — including the UCX/PMIx configuration that makes MPI work over InfiniBand inside a container
federated-learning-nextflow FedAvg as a real Nextflow/SLURM workflow, one GPU per client, model weights exchanged as files
python-hpc-interop What Python actually costs in HPC — pybind11 lands within 5% of native C++

HPC stack

Languages Fortran · C · C++20 · Python · Bash
Parallel programming MPI (OpenMPI, HPC-X) · OpenMP · OpenACC · CUDA · NVSHMEM · NCCL
GPU libraries cuBLAS · cuFFT · CuPy · NVIDIA HPC SDK
Performance analysis Nsight Systems · NVTX · perf · llvm-mca · LLVM analysis passes · roofline modelling
Scientific I/O NetCDF · HDF5 · collective MPI-IO · ParaView / VisIt
Numerical libraries PETSc · ScaLAPACK · OpenBLAS · FFTW · LAPACK
Build & test CMake · CTest · Make · Git · GitHub Actions
Clusters & containers SLURM · UCX / InfiniBand · NUMA-aware pinning · Docker · Singularity / Apptainer
Machines Leonardo (CINECA) · JUPITER (JSC) · COKA (INFN) · ICTP / SISSA / Ferrara clusters

ML stack

Frameworks PyTorch · TensorFlow · scikit-learn
Scientific Python NumPy · SciPy · Pandas · Matplotlib · Numba · pybind11 · mpi4py
Distributed & federated FedAvg · Nextflow · Kubeflow · Argo Workflows
Tracking Weights & Biases

Platform engineering stack

Cloud AWS · GCP (Cloud Run, GKE)
Orchestration Kubernetes · Docker · Ansible
Backend Django · FastAPI · Flask · REST / SOAP integrations
Data stores PostgreSQL · MongoDB · Redis · ChromaDB
Observability Prometheus · Grafana · Loki · OpenTelemetry · Sentry
Reliability Load testing · autoscaling · capacity planning · CI/CD · on-call automation

Elsewhere

Smaller collections that the projects above grew out of — cuda_stuff · open_mpi_openmp_stuff · file_io_stuff · fortran · petsc · quantum_computing

prabhsharan84@gmail.com · LinkedIn

Pinned Loading

  1. hpc_containers hpc_containers Public

    The same MPI+OpenACC solver shipped four ways — native, InfiniBand-forced, Singularity and Docker — with the container MPI/UCX configuration that makes InfiniBand actually work

    C++ 1

  2. fft-gpu-programming-models fft-gpu-programming-models Public

    Six implementations of the same FFT — hand-written CUDA, OpenACC and cuFFT — benchmarked on P100 and V100 to measure what a directive-based GPU port actually costs

    Cuda 1

  3. gpu-kernel-profiling gpu-kernel-profiling Public

    Reading Nsight Systems traces to find why a CUDA kernel is slow — transpose bandwidth on A100, a bank-conflict diagnosis, and a tool that extracts kernel timings from trace databases

    Cuda 1

  4. jacobi-poisson-solver jacobi-poisson-solver Public

    2-D Jacobi Laplace solver in four parallel models — MPI+OpenMP, HDF5 parallel I/O, OpenACC, NVSHMEM — scaling to 1120 cores and 40 A100s on Leonardo

    C++ 1

  5. miniWeather-mpi-openacc miniWeather-mpi-openacc Public

    MPI/OpenMP/OpenACC port of the miniWeather Fortran mini-app — parallel NetCDF I/O, CMake, containerised CI, and a multi-GPU scaling study on Leonardo Booster

    Fortran 1

  6. federated-learning-nextflow federated-learning-nextflow Public

    Federated learning as a real distributed workflow — FedAvg decomposed into file-communicating tasks, orchestrated by Nextflow over SLURM with one GPU per client

    Python 1