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:
- Coordinator (Block 0): Processes H2K commands, sends K2H responses
- Worker Blocks (1..N): Compute FDTD steps, exchange halos via K2K
- 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§
- Persistent
Fdtd Config - Configuration for persistent FDTD kernel generation.
Functions§
- generate_
persistent_ fdtd_ kernel - Generate a complete persistent FDTD kernel.