Module persistent_fdtd

Module persistent_fdtd 

Source
Expand description

Persistent FDTD kernel code generation.

Generates CUDA code for truly persistent GPU actors that run for the entire simulation lifetime with:

  • Single kernel launch
  • H2K/K2H command/response messaging
  • K2K halo exchange between blocks
  • Grid-wide synchronization via cooperative groups

§Architecture

The generated kernel is structured as:

  1. Coordinator (Block 0): Processes H2K commands, sends K2H responses
  2. Worker Blocks (1..N): Compute FDTD steps, exchange halos via K2K
  3. Persistent Loop: Runs until Terminate command received

§Memory Layout

Kernel Parameters:
- control_ptr:      PersistentControlBlock* (mapped memory)
- pressure_a_ptr:   float* (device memory, buffer A)
- pressure_b_ptr:   float* (device memory, buffer B)
- h2k_header_ptr:   SpscQueueHeader* (mapped memory)
- h2k_slots_ptr:    H2KMessage* (mapped memory)
- k2h_header_ptr:   SpscQueueHeader* (mapped memory)
- k2h_slots_ptr:    K2HMessage* (mapped memory)
- routes_ptr:       K2KRouteEntry* (device memory)
- halo_ptr:         float* (device memory, halo buffers)

Structs§

PersistentFdtdConfig
Configuration for persistent FDTD kernel generation.

Functions§

generate_persistent_fdtd_kernel
Generate a complete persistent FDTD kernel.