OpenSWMM Engine  6.0.0-alpha.4
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.4)
Loading...
Searching...
No Matches
GpuPluginStub.cpp File Reference

Placeholder GPU surface-solver plugin (Phase 0 scaffold). More...

#include "../solver/GpuPluginAbi.h"
#include <cstring>
Include dependency graph for GpuPluginStub.cpp:

Functions

OPENSWMM_GPU_ABI int openswmm_gpu_probe (OpenSwmmGpuProbe *out)
 Query the plugin for a usable GPU device.
 
OPENSWMM_GPU_ABI void * openswmm_make_gpu_explicit_solver (const OpenSwmmGpuProbe *)
 Construct the Kokkos explicit LTS marcher surface solver.
 

Detailed Description

Placeholder GPU surface-solver plugin (Phase 0 scaffold).

Implements the GpuPluginAbi.h contract with NO actual GPU backend. It exists so the runtime discovery / dlopen / fallback wiring can be built and exercised without a device toolchain. The probe reports "no device", so the core's auto-selection falls back to the serial CPU ExplicitInertialSolver.

This translation unit deliberately depends on NOTHING beyond the C ABI header and the C++ standard library — no Kokkos — so it compiles with a plain host compiler on every platform.

Author
Caleb Buahin caleb.nosp@m..bua.nosp@m.hin@g.nosp@m.mail.nosp@m..com
License\n Apache-2.0

Function Documentation

◆ openswmm_gpu_probe()

OPENSWMM_GPU_ABI int openswmm_gpu_probe ( OpenSwmmGpuProbe * out)

Query the plugin for a usable GPU device.

Must be cheap and side-effect-free beyond backend initialization.

Parameters
outCaller-allocated struct to fill. Zero-initialized on entry by the plugin.
Returns
0 on success with at least one usable device; non-zero if no device is available or the probe failed. A non-zero return tells the core to fall back to the CPU solver.

◆ openswmm_make_gpu_explicit_solver()

OPENSWMM_GPU_ABI void * openswmm_make_gpu_explicit_solver ( const OpenSwmmGpuProbe * probe)

Construct the Kokkos explicit LTS marcher surface solver.

The only solver factory in the contract: the core dlsym()s it and falls back to the serial CPU ExplicitInertialSolver when a plugin does not export it. Implements BOTH cell closures (FLAT and VFR). Returns an ISurfaceSolver* (as void*) owned by the caller, or NULL.