Software

Open tools for high-performance scientific computing

I build open-source software that lets researchers express complex mathematics at a high level while still using modern CPUs, GPUs, clusters, and cloud platforms effectively.

Python · DSL · Compiler

Devito

A symbolic finite-difference domain-specific language and just-in-time compiler. Devito turns high-level symbolic equations into optimized parallel code for CPUs and GPUs, supporting OpenMP, MPI, OpenACC, and heterogeneous systems.

Symbolic APIsCode generationHPC

GitHub · Documentation

Julia · Linear algebra · Inversion

JUDI

A matrix-free linear algebra framework for wave-equation-based inversion. JUDI combines a concise Julia interface with Devito’s optimized numerical kernels for scalable seismic and medical imaging workflows.

JuliaOptimizationImaging

GitHub · Documentation

Scientific ecosystem

Research software built around real computational problems

JUDI4Cloud

Task-parallel wave-equation workloads on Azure Batch through a high-level Julia interface.

View project →

TimeProbeSeismic

Low-memory adjoint-state imaging using randomized trace estimation and probing methods.

View project →

PhotoAcoustic.jl

Differentiable photoacoustic simulation and inversion for physics-based machine learning workflows.

View project →

ImageGather

Surface and subsurface offset-gather tools for quality control of seismic inverted models.

View project →

pysegy

Lazy, header-aware SEGY access compatible with local storage, cloud object stores, fsspec, and Dask.

View project →

XConv

Memory-efficient convolutional layers for PyTorch and Flux using randomized gradient estimation.

View project →

SlimOptim

Julia implementations of optimization methods designed for costly PDE-constrained problems.

View project →

InvertibleNetworks.jl

Reversible neural-network components for memory-efficient training, variational inference, and normalizing flows.

View project →

Beyond individual repositories

Maintaining the foundations

My open-source work also includes continuous integration, release automation, Julia registries, cloud deployment, community support, and contributions to projects such as SymPy. Sustainable research software is as much about this infrastructure as it is about algorithms.