Skip to content

Add optional CUDA LiDAR terrain sweeps - #2

Draft
jpooley-hearst wants to merge 1 commit into
lmux:masterfrom
jpooley-hearst:codex/cuda-lidar-terrain
Draft

Add optional CUDA LiDAR terrain sweeps#2
jpooley-hearst wants to merge 1 commit into
lmux:masterfrom
jpooley-hearst:codex/cuda-lidar-terrain

Conversation

@jpooley-hearst

Copy link
Copy Markdown

Summary

  • add an optional standalone CUDA terrain-sweep executable without changing the existing CPU build
  • prepare GDAL-readable LiDAR DTM/DSM inputs as bounded local AEQD rasters with explicit nodata and provenance
  • cache sector-major terrain profiles once and reuse them across as many as 16 explicitly configured pattern/power/height scenarios
  • support RAM-bounded disk spooling, exact 1 kW base-field export, azimuth shards, GeoTIFF conversion, and census aggregation
  • add neutral examples, validation documentation, Python regression coverage, and CI for the terrain/output tools

Design

The contribution lives under cuda/ and builds as signalserver-cuda. The existing src/Makefile, signalserver, signalserverHD, and signalserverLIDAR paths are unchanged.

A run shares transmitter location, frequency, terrain, radius, and sampling geometry. Terrain profiles and prefix state are reused; each [variant.NAME] is an explicitly requested scenario, so pattern and power inputs are not cross-joined.

The LiDAR preparation path accepts GeoTIFF, COG, VRT, and other GDAL-readable sources. It creates signed-int16 DTM and optional uint8 DSM-minus-DTM clutter rasters, validates metadata and binary sizes, and carries nodata through cache, GPU propagation, and output.

Validation boundary

Free-space output has an analytic regression baseline. The included CUDA P.1812 and ITM implementations remain experimental and emit model_validation=unvalidated_implementation plus a runtime warning. The documentation explicitly excludes them from regulatory, safety, or other decision-grade use until independent reference-vector validation is complete.

Verification

  • CUDA 13.2 / MSVC Release configure and build
  • 16 Python/GDAL terrain, GeoTIFF, merge, and census regression tests
  • synthetic GPU suite covering cache build/reuse, DTM/CHM nodata, direct versus spooled output, exact base-field export, complementary azimuth shards, long profiles, edge masking, and experimental-model warning metadata
  • final smoke invariant: direct=spool, shards=full
  • staged diff audit for private names, local paths, secrets, generated binaries, bytecode, empty files, and whitespace errors

@jpooley-hearst
jpooley-hearst force-pushed the codex/cuda-lidar-terrain branch from 5ecb13a to ec6905e Compare August 3, 2026 21:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant