Back to gprMax
GSoC 2026

GPU Acceleration of Plane Wave (TF/SF) Source Formulations in gprMax

Problem: gprMax's devel branch GPU solver (cuda_opencl/ directory) supports CUDA, OpenCL, and Metal via shared kernel templates. But the Plane Wave (TF/SF) source from GSoC 2023 remains CPU-only Cython, forcing CPU-GPU transfers every timestep that negate GPU speedup. solution: I will create new kernel templates in cuda_opencl/ following the existing multi-backend pattern: 1) Create knl_planewave_updates.py: batched kernel updating all six 1D DPW auxiliary arrays in one launch. 2) Create knl_tfsf_injection.py: TF/SF correction injection at six boundary faces, coalescing optimized per-face with shared memory buffers. 3) Optimize boundary storage: SoA layout, 128-byte padding, precomputed index maps. 4) Testing suite: GPU vs Cython comparison across free-space, slab, oblique, and polarization cases. Why me : I built a PyCUDA heat diffusion solver with shared memory tiling, vectorized loads, and occupancy tuning, the same techniques this project needs. I have raised 8+ issues and multiple PRs to gprMax and studied all 13 files in cuda_opencl/ in depth. Deliverables: multi-backend GPU kernels for DPW update and TF/SF injection, optimized memory layout, and automated testing suite. Outcome: TF/SF runs entirely on GPU, zero CPU fallback.

Project details

Contributor

ABH123

Mentors

Not available

Technologies

Not listed in the archive