GSoC Coding Period Week 10 Report

What I worked on in week 10:

This week went to mostly trying a slightly cleaner approach to parallelizing r.proj. But first, I went through mentor review and feedback on my other PRs. On PR #7785, I restarted the pytest script for r.geomorphon based on review feedback. I built a new DEM that produces all ten landform classes and replaced the old testsuite coverage. I also moved the parallel identity tests moved out of it and will land on PR #7783 after the pytest PR merges. On #7783 I addressed a readability feedback, moved functions below main, passed its parameters through structs instead of a long argument list, and removed a dead code block. I also tightened some comments on PR #7766.

The rest of the week went into r.proj. Mentors told me to try a simpler approach than the one I’m using in PR #7627 because the sizing approach is complicated. So I worked on a cleaner one. Instead of searching for band sizes by guess and check, the module now projects the output edges once when the run starts into a table and sizes every band from that. Because the values are in a table, it makes it much easier for the module to find how much a band can handle without having to guess a number and check. The module just simply reads down the table until the memory cap doesn’t allow any more rows, cutting down sizing time and improving speedups on previously lacking scenarios. But while testing it I found a problem with the approach on strongly curved projections at low memory caps. I was able to fix it, and verified the output stays bitwise identical to serial.

What I’m doing in week 11:

I’m running a big benchmark for the cleaner r.proj approach, opening it as a separate draft PR, and responding to any mentor feedback+review that comes in the other open PRs.

What’s blocking me? Nothing this week

Thanks,
Kaushik