Back to NumFOCUS
GSoC 2026

Parallelizing r.proj and Raster Processing Modules in GRASS

r.proj and r.param.scale are widely used GRASS raster modules that run entirely on a single core, leaving modern multi-core hardware idle. This project parallelizes both using OpenMP. For r.proj, the core blocker is the legacy readcell tile cache which is not thread-safe. The solution is a two-path architecture: a fast RAM-resident buffer for maps that fit in memory, and a thread-local tile cache fallback for larger maps. For r.param.scale, a sequential sliding buffer blocks row-level parallelism. The fix is the same RAM preload pattern: load the full raster before the parallel region and let threads work on rows independently. Proof of concept PRs show 2.5x speedup for r.proj and 1.7x speedup for r.param.scale on 100M cell rasters. r.geomorphon will be audited during the bonding period as a third target. Deliverables include production-quality parallel implementations of both modules, per-thread PJ_CONTEXT initialization, a fix for issue #5776, pixel parity regression tests, scalability benchmarks, and full documentation.

Project details

Contributor

Kaushik Raja

Mentors

Not available

Technologies

Not listed in the archive