GPU-Accelerating RF Signal Propagation Simulation: From Days to Hours

Naive GPU porting of sequential RF simulation delivers modest gains. Algorithmic redesign to expose parallelism turns multi-day runtimes into hours.

GPU-Accelerating RF Signal Propagation Simulation: From Days to Hours
Written by TechnoLynx Published on 28 Apr 2026

Why GPU-accelerating a simulation doesn’t always mean parallelising what you have

RF signal propagation simulation for tower placement is computationally expensive: the physics-based calculation of how signals attenuate, reflect, and diffract across terrain involves large spatial grids, irregular terrain data, and many-to-many path calculations between candidate tower positions and receiver locations. Running this on a CPU produces runtimes measured in hours or days, depending on grid resolution and the number of candidate configurations being evaluated.

The reflex response to this runtime problem is GPU acceleration: move the computation to a GPU, exploit the parallel execution model, and expect proportional speedup. In our experience with sequential simulation codebases ported naïvely, this approach typically produces gains in the range of 3–10× (an observed pattern from CPU-to-GPU port engagements, not a guaranteed outcome) — meaningful, but not transformative. The reason is that most simulation algorithms are not written for parallelism. They are written for correctness on sequential hardware, and their internal dependencies prevent parallel execution of most work.

The transformative result — turning multi-day runtimes into hours — requires something different: algorithmic redesign before GPU porting.

The profiling step that identifies what can actually be parallelised

Before any GPU porting begins, the critical question is whether the algorithm’s internal dependency structure permits parallelism. An algorithm with deep sequential dependencies — where step N depends on the result of step N-1 — will not benefit significantly from GPU parallelism regardless of how the porting is done.

GPU kernel profiling applied to simulation workloads serves the same diagnostic function it serves for neural network inference: it identifies which operations dominate execution time and whether those operations are compute-bound, memory-bound, or serialisation-bound. For RF signal propagation, profiling typically reveals that the dominant operation — path loss calculation across terrain grids — is embarrassingly parallel in principle but implemented with sequential data access patterns that prevent the GPU from scheduling the work efficiently.

The three-phase approach to simulation acceleration

The path from multi-day CPU runtimes to hours of GPU computation follows a consistent three-phase structure:

Phase Activity What it produces
1. Algorithm audit Profile the sequential implementation; identify the top-3 execution-time operations; assess each for parallelism potential (independent work items, data dependency structure, memory access patterns) A prioritised list of operations: parallelisable as-is, parallelisable with restructuring, inherently sequential
2. Algorithmic restructuring For operations in category 2 (parallelisable with restructuring): redesign the algorithm to expose the parallelism the GPU can exploit. This typically involves reformulating sequential iteration as batch operations, replacing recursive patterns with closed-form approximations where the physics permits, and restructuring data layouts for coalesced GPU memory access A restructured algorithm with a significantly higher fraction of work that is parallelisable
3. GPU implementation Port the restructured algorithm to CUDA or OpenCL; validate correctness against the sequential reference; measure GPU utilisation to confirm the restructuring achieved the expected parallelism A validated GPU implementation with measurable speedup

In the CloudRF signal propagation and tower optimisation work we carried out, the algorithm audit identified that the terrain-based path loss calculation — which dominated execution time — had sequential dependencies introduced by an iterative grid-walking approach that was not required by the underlying physics. The RF propagation equations themselves are spatially independent: the path loss from a transmitter to any receiver point depends on the transmitter position and terrain profile between them, not on the calculation results for adjacent receiver points. The sequential implementation had introduced artificial dependencies by reusing intermediate results from neighbouring cells as an optimisation — an optimisation that was correct on sequential hardware but prevented parallelisation.

Restructuring the algorithm to calculate each receiver point independently — using a slightly more expensive but fully parallel calculation — removed these dependencies and exposed the work to GPU execution. The resulting implementation reduced simulation runtimes from multiple days to hours for production-scale terrain grids.

Why algorithmic restructuring typically outperforms kernel tuning for simulations

The algorithmic restructuring vs kernel tuning decision is particularly clear-cut for simulation workloads. Kernel tuning — optimising the CUDA implementation of a given algorithm — improves the performance of a computation that is already structured correctly for GPU execution. For a simulation algorithm that was designed for sequential execution, kernel tuning has a low ceiling: you can improve the efficiency of each sequential step, but you cannot parallelise the work if the algorithm’s structure prohibits it.

Algorithmic restructuring, by contrast, changes what fraction of the total computation can be parallelised. For simulations where the dominant operations are mathematically independent but have been implemented with sequential data structures, restructuring to expose that independence can shift GPU utilisation from the 15–20% range typical of naïve ports into the 70–90% range achievable when the work matches the hardware execution model (figures observed across our GPU acceleration engagements; the specific lift depends on the original algorithm’s dependency structure).

The implication is that the ROI on GPU hardware for simulation workloads is not determined by the hardware specification — it is determined by whether the algorithm has been designed to exploit parallel execution. The hardware is a prerequisite, not the variable.

The algorithm audit checklist: what to look for in the code

The algorithm audit (Phase 1) is the highest-leverage activity in the entire acceleration project. The following checks, applied to the existing sequential implementation, identify whether the dominant operations are restructurable and what the restructuring will involve.

# What to look for in the code What it indicates Restructuring response
1 Loops over a spatial grid where iteration i reads results written in iteration i-1 (forward sweeps, marching schemes) Artificial sequential dependency — may or may not be required by the underlying mathematics Inspect the physics: if the equation at each cell depends only on inputs (not on neighbour results), the dependency is an implementation artefact and can be removed
2 Recursive function calls in the inner loop Sequential dependency by construction; difficult to parallelise directly Rewrite as iterative computation with explicit state, or replace with a closed-form approximation where the physics permits
3 Accumulator variables that aggregate across many work items (sum, max, min over the full grid) Reduction pattern — parallelisable but requires care Replace with GPU-friendly parallel reduction (CUB, Thrust, or hand-rolled tree reduction in CUDA)
4 Indirect memory access via index arrays (output[i] = compute(input[index[i]])) Memory access is uncoalesced — GPU bandwidth will be the bottleneck even after parallelisation Restructure data layout to make the access pattern contiguous, or accept the bandwidth penalty if restructuring is more expensive than the gain
5 Conditional branches inside the inner loop where branch direction varies between adjacent work items Warp divergence — GPU threads in the same warp will serialise across the branches Sort or partition work items by branch direction before dispatch, so each warp executes a single branch
6 Calls to library functions (FFT, linear solve, sparse matrix-vector multiply) Already-optimised primitives are available on GPU Replace with cuFFT, cuSOLVER, cuSPARSE, or equivalent; do not re-implement
7 Floating-point precision assumed to be 64-bit throughout Default precision may exceed what the physics requires Quantify the precision the physics actually requires; if 32-bit is sufficient, the GPU throughput gain is approximately 2× with no algorithmic change
8 Disk I/O or host-device transfers inside the hot loop Transfer cost may dominate computation cost Move I/O outside the loop; batch transfers; use pinned memory and asynchronous copies

A codebase where checks 1–3 reveal artificial sequential dependencies is a strong candidate for the algorithmic restructuring path — the gain ceiling is high. A codebase where the dominant operations are inherently sequential (check 2 with no closed-form alternative) is a candidate for hybrid CPU-GPU execution rather than full GPU porting; the team should plan accordingly rather than discovering this after weeks of porting effort.

What remained imperfect

The restructured CloudRF implementation achieved its target throughput, but two limitations were intrinsic to the approach and remain worth naming for any team planning a similar acceleration:

First, the restructured calculation is slightly more expensive per receiver point than the original sequential implementation. The original code reused intermediate results from neighbouring cells precisely because doing so saved arithmetic. Removing the reuse to enable parallelism increased the total work performed; the speedup comes from doing more work in parallel, not less work overall. On hardware with limited parallelism (a small GPU, or a CPU fallback path), the restructured algorithm runs slower than the original. The implementation maintains both code paths for this reason.

Second, the path loss model itself is an approximation of the underlying electromagnetic physics. The acceleration project did not change the physical fidelity of the simulation — it changed the runtime at fixed fidelity. Higher-fidelity propagation models (full-wave electromagnetic solvers, ray-tracing with diffraction modelling) remain orders of magnitude more expensive than the path loss approach and were out of scope. Teams that need higher physical fidelity will face a larger engineering project than the one described here.

Planning throughput as the business metric

The practical value of reducing a tower-placement simulation from multi-day to hours is not the raw runtime number — it is the planning throughput multiplier. As an operational measurement from the CloudRF signal-propagation deployment: if a planning cycle previously evaluated 5 candidate tower configurations per week (limited by simulation time), a 20× speedup enables 100 configurations per week (project-specific measurement from that deployment, not a benchmarked industry rate). That multiplier changes the scope of what can be optimised: instead of selecting between a small number of candidate positions, the team can evaluate a large configuration space and converge on genuinely optimal placements.

For any organisation running simulation workloads on CPU infrastructure — signal propagation, physics simulation, financial risk modelling, climate modelling — the GPU audit question is not “will GPU make this faster” but “what has to change in the algorithm before GPU acceleration can deliver the speedup that the hardware is capable of?” A GPU Audit assesses the current algorithm structure and identifies whether the path to acceleration runs through GPU porting alone or requires algorithmic redesign first.

Distillation vs Quantisation for Multi-Platform Edge Inference: How to Choose

Distillation vs Quantisation for Multi-Platform Edge Inference: How to Choose

28/04/2026

Distillation and quantisation both shrink models for edge inference, but for three-or-more platforms only distillation keeps quality consistent.

What Cross-Platform GPU Performance Portability Requires

What Cross-Platform GPU Performance Portability Requires

26/04/2026

Source-level portability is not performance portability. Competitive speed across GPU vendors needs architecture-aware abstraction and per-target tuning.

Cloud GPU vs On-Premise AI Accelerators: A Total Cost Analysis

Cloud GPU vs On-Premise AI Accelerators: A Total Cost Analysis

25/04/2026

Cloud GPU suits variable, short-term workloads. On-premise is cheaper for sustained utilisation above 60%. The break-even is calculable, not philosophical.

How to Optimise AI Inference Latency on GPU Infrastructure

How to Optimise AI Inference Latency on GPU Infrastructure

24/04/2026

Inference latency optimisation targets model compilation, batching, and memory management — not hardware speed. TensorRT and quantisation are key levers.

Algorithmic Restructuring vs Kernel Tuning: Choosing the Higher-Leverage GPU Optimisation

Algorithmic Restructuring vs Kernel Tuning: Choosing the Higher-Leverage GPU Optimisation

23/04/2026

Kernel tuning improves constant factors. Algorithmic restructuring changes complexity class. Identify your bottleneck type before committing effort.

How to Profile GPU Kernels to Find the Real Bottleneck

How to Profile GPU Kernels to Find the Real Bottleneck

22/04/2026

GPU profiling separates compute-bound from memory-bound kernels. Nsight Compute roofline analysis shows where a kernel sits and what would move it.

The Hidden Cost of GPU Underutilisation

The Hidden Cost of GPU Underutilisation

21/04/2026

Most GPU workloads use 30–50% of available compute. Without profiling, the waste is invisible. Bandwidth, occupancy, and serialisation are the root causes.

CUDA vs OpenCL vs SYCL: Choosing a GPU Compute API

CUDA vs OpenCL vs SYCL: Choosing a GPU Compute API

20/04/2026

CUDA delivers the deepest optimisation on NVIDIA hardware. OpenCL and SYCL offer portability. Choose based on lock-in tolerance and performance needs.

GPU Performance Per Dollar — Why Cost, Efficiency, and Value Are Not the Same Metric

GPU Performance Per Dollar — Why Cost, Efficiency, and Value Are Not the Same Metric

17/04/2026

Performance per dollar. Tokens per watt. Cost per request. These sound like the same thing said differently, but they measure genuinely different dimensions of AI infrastructure economics. Conflating them leads to infrastructure decisions that optimize for the wrong objective.

Precision Is an Economic Lever in Inference Systems

Precision Is an Economic Lever in Inference Systems

17/04/2026

Precision isn't just a numerical setting — it's an economic one. Choosing FP8 over BF16, or INT8 over FP16, changes throughput, latency, memory footprint, and power draw simultaneously. For inference at scale, these changes compound into significant cost differences.

Precision Choices Are Constrained by Hardware Architecture

Precision Choices Are Constrained by Hardware Architecture

17/04/2026

You can't run FP8 inference on hardware that doesn't have FP8 tensor cores. Precision format decisions are conditional on the accelerator's architecture — its tensor core generation, native format support, and the efficiency penalties for unsupported formats.

Steady-State Performance, Cost, and Capacity Planning

Steady-State Performance, Cost, and Capacity Planning

17/04/2026

Capacity planning built on peak performance numbers over-provisions or under-delivers. Real infrastructure sizing requires steady-state throughput — the predictable, sustained output the system actually delivers over hours and days, not the number it hit in the first five minutes.

Why Benchmarks Mislead AI Hardware Procurement — and How to Use Them Correctly

16/04/2026

A benchmark result starts with full context — workload, software stack, measurement conditions. By the time it reaches a procurement deck, all that context is gone. The failure mode is not wrong benchmarks but context loss during propagation.

Building an Audit Trail: Benchmarks as Evidence for Governance and Risk

16/04/2026

High-value AI hardware decisions need traceable evidence, not slide-deck bullet points. When benchmarks are documented with methodology, assumptions, and limitations, they become auditable institutional evidence — defensible under scrutiny and revisitable when conditions change.

The Comparability Protocol: Why Benchmark Methodology Defines What You Can Compare

16/04/2026

Two benchmark scores can only be compared if they share a declared methodology — the same workload, precision, measurement protocol, and reporting conditions. Without that contract, the comparison is arithmetic on numbers of unknown provenance.

How to Choose AI Hardware and GPU for AI Workloads: A Decision Framework

16/04/2026

Hardware selection is a multivariate decision under uncertainty — not a score comparison. This framework walks through the steps: defining the decision, matching evaluation to deployment, measuring what predicts production, preserving tradeoffs, and building a repeatable process.

How Benchmarks Shape Organizations Before Anyone Reads the Score

16/04/2026

Before a benchmark score informs a purchase, it has already shaped what gets optimized, what gets reported, and what the organization considers important. Benchmarks function as decision infrastructure — and that influence deserves more scrutiny than the number itself.

Accuracy Loss from Lower Precision Is Task‑Dependent

16/04/2026

Reduced precision does not produce a uniform accuracy penalty. Sensitivity depends on the task, the metric, and the evaluation setup — and accuracy impact cannot be assumed without measurement.

Precision Is a Design Parameter, Not a Quality Compromise

16/04/2026

Numerical precision is an explicit design parameter in AI systems, not a moral downgrade in quality. This article reframes precision as a representation choice with intentional trade-offs, not a concession made reluctantly.

Mixed Precision Works by Exploiting Numerical Tolerance

16/04/2026

Not every multiplication deserves 32 bits. Mixed precision works because neural network computations have uneven numerical sensitivity — some operations tolerate aggressive precision reduction, others don't — and the performance gains come from telling them apart.

Throughput vs Latency: Choosing the Wrong Optimization Target

16/04/2026

Throughput and latency are different objectives that often compete for the same resources. This article explains the trade-off, why batch size reshapes behavior, and why percentiles matter more than averages in latency-sensitive systems.

Quantization Is Controlled Approximation, Not Model Damage

16/04/2026

When someone says 'quantize the model,' the instinct is to hear 'degrade the model.' That framing is wrong. Quantization is controlled numerical approximation — a deliberate engineering trade-off with bounded, measurable error characteristics — not an act of destruction.

GPU Utilization Is Not Performance — Why Low GPU Utilization Often Means the Right Thing

15/04/2026

The utilization percentage in nvidia-smi reports kernel scheduling activity, not efficiency or throughput. This article explains the metric's exact definition, why it routinely misleads in both directions, and what to pair it with for accurate performance reads.

FP8, FP16, and BF16 Represent Different Operating Regimes

15/04/2026

FP8 is not just 'half of FP16.' Each numerical format encodes a different set of assumptions about range, precision, and risk tolerance. Choosing between them means choosing operating regimes — different trade-offs between throughput, numerical stability, and what the hardware can actually accelerate.

Peak Performance vs Steady‑State Performance in AI

15/04/2026

AI systems rarely operate at peak. This article defines the peak vs. steady-state distinction, explains when each regime applies, and shows why evaluations that capture only peak conditions mischaracterize real-world throughput.

The Software Stack Is a First‑Class Performance Component

15/04/2026

Drivers, runtimes, frameworks, and libraries define the execution path that determines GPU throughput. This article traces how each software layer introduces real performance ceilings and why version-level detail must be explicit in any credible comparison.

The Mythology of 100% GPU Utilization

15/04/2026

Is 100% GPU utilization bad? Will it damage the hardware? Should you be worried? For datacenter AI workloads, sustained high utilization is normal — and the anxiety around it usually reflects gaming-era intuitions that don't apply.

Why Benchmarks Fail to Match Real AI Workloads

15/04/2026

The word 'realistic' gets attached to benchmarks freely, but real AI workloads have properties that synthetic benchmarks structurally omit: variable request patterns, queuing dynamics, mixed operations, and workload shapes that change the hardware's operating regime.

Why Identical GPUs Often Perform Differently

15/04/2026

'Same GPU' does not imply the same performance. This article explains why system configuration, software versions, and execution context routinely outweigh nominal hardware identity.

Training and Inference Are Fundamentally Different Workloads

15/04/2026

A GPU that excels at training may disappoint at inference, and vice versa. Training and inference stress different system components, follow different scaling rules, and demand different optimization strategies. Treating them as interchangeable is a design error.

Performance Ownership Spans Hardware and Software Teams

15/04/2026

When an AI workload underperforms, attribution is the first casualty. Hardware blames software. Software blames hardware. The actual problem lives in the gap between them — and no single team owns that gap.

Performance Emerges from the Hardware × Software Stack

15/04/2026

AI performance is an emergent property of hardware, software, and workload operating together. This article explains why outcomes cannot be attributed to hardware alone and why the stack is the true unit of performance.

Power, Thermals, and the Hidden Governors of Performance

14/04/2026

Every GPU has a physical ceiling that sits below its theoretical peak. Power limits, thermal throttling, and transient boost clocks mean that the performance you read on the spec sheet is not the performance the hardware sustains. The physics always wins.

Why AI Performance Changes Over Time

14/04/2026

That impressive throughput number from the first five minutes of a training run? It probably won't hold. AI workload performance shifts over time due to warmup effects, thermal dynamics, scheduling changes, and memory pressure. Understanding why is the first step toward trustworthy measurement.

CUDA, Frameworks, and Ecosystem Lock-In

14/04/2026

Why is it so hard to switch away from CUDA? Because the lock-in isn't in the API — it's in the ecosystem. Libraries, tooling, community knowledge, and years of optimization create switching costs that no hardware swap alone can overcome.

GPUs Are Part of a Larger System

14/04/2026

CPU overhead, memory bandwidth, PCIe topology, and host-side scheduling routinely limit what a GPU can deliver — even when the accelerator itself has headroom. This article maps the non-GPU bottlenecks that determine real AI throughput.

Why AI Performance Must Be Measured Under Representative Workloads

14/04/2026

Spec sheets, leaderboards, and vendor numbers cannot substitute for empirical measurement under your own workload and stack. Defensible performance conclusions require representative execution — not estimates, not extrapolations.

Low GPU Utilization: Where the Real Bottlenecks Hide

14/04/2026

When GPU utilization drops below expectations, the cause usually isn't the GPU itself. This article traces common bottleneck patterns — host-side stalls, memory-bandwidth limits, pipeline bubbles — that create the illusion of idle hardware.

Why GPU Performance Is Not a Single Number — and What to Evaluate Instead of 'Best GPU for AI'

14/04/2026

AI GPU performance is multi-dimensional and workload-dependent. This article explains why scalar rankings collapse incompatible objectives and why 'best GPU' questions are structurally underspecified.

Are GPU Benchmarks Accurate? What They Actually Measure vs Real-World Performance

14/04/2026

A benchmark result is not a hardware measurement — it is an execution measurement. The GPU, the software stack, and the workload all contribute to the number. Reading it correctly requires knowing which parts of the system shaped the outcome.

Why Spec-Sheet Benchmarking Fails for AI — How GPU Benchmarks Actually Work

14/04/2026

GPU spec sheets describe theoretical limits. This article explains why real AI performance is an execution property shaped by workload, software, and sustained system behavior.

NVIDIA Data Centre GPUs: what they are and why they matter

19/03/2026

NVIDIA data centre GPUs explained: architecture differences, when to choose them over consumer GPUs, and how workload type determines the right GPU configuration in a data centre.

CUDA vs OpenCL: Which to Use for GPU Programming

16/03/2026

CUDA and OpenCL compared for GPU programming: programming models, memory management, tooling, ecosystem fit, portability trade-offs, and a practical decision framework.

Planning GPU Memory for Deep Learning Training

16/02/2026

GPU memory estimation for deep learning: calculating weight, activation, and gradient buffers so you can predict whether a training run fits before it crashes.

CUDA AI for the Era of AI Reasoning

11/02/2026

How CUDA underpins AI inference: kernel execution, memory hierarchy, and the software decisions that determine whether a model uses the GPU efficiently or wastes it.

Choosing Vulkan, OpenCL, SYCL or CUDA for GPU Compute

28/01/2026

A practical comparison of Vulkan, OpenCL, SYCL and CUDA, covering portability, performance, tooling, and how to pick the right path for GPU compute across different hardware vendors.

GPU vs TPU vs CPU: Performance and Efficiency Explained

10/01/2026

CPU, GPU, and TPU compared for AI workloads: architecture differences, energy trade-offs, practical pros and cons, and a decision framework for choosing the right accelerator.

GPU Computing for Faster Drug Discovery

7/01/2026

GPU computing in drug discovery: how parallel workloads accelerate molecular simulation, docking calculations, and deep learning models for compound property prediction.

Back See Blogs
arrow icon