Skip to content

GPU batched TOPMODEL — 31.3x speedup at 2.7M catchments, PASS #60

Description

@consigcody94

Summary

The TOPMODEL runoff generation kernel (exponential transmissivity + saturation deficit) can run on GPU with one thread per catchment. At the NWM's 2.7M catchments, this achieves 31.3x speedup with max relative error 5.87e-07 (FP32 precision).

Benchmark (RTX 3060)

Catchments CPU GPU Speedup Max rel error
100K 7 ms 0.40 ms 17.7x 4.76e-07
1M 69 ms 2.36 ms 29.2x 5.30e-07
2.7M (NWM) 184 ms 5.87 ms 31.3x 5.87e-07

Zero NaN, zero failures. The GPU uses CUDA __expf() for the transmissivity exponential which gives slightly different rounding than CPU expf() — both are within FP32 precision.

Code

https://github.com/consigcody94/parallel-prefix-rt/blob/master/benchmarks/cuda/owp_extended_kernels.cu

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions