OpenSWMM Engine  6.0.0-alpha.1
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.1)
Loading...
Searching...
No Matches
GpuPluginAbi.h
Go to the documentation of this file.
1
25
26#ifndef OPENSWMM_ENGINE_2D_GPU_PLUGIN_ABI_H
27#define OPENSWMM_ENGINE_2D_GPU_PLUGIN_ABI_H
28
29/*
30 * Export/visibility marker for the two ABI entry points.
31 *
32 * The declaration here and the definition in each plugin .cpp must agree on
33 * linkage or MSVC rejects the definition with C2375 ("redefinition; different
34 * linkage") — a plain `extern "C"` declaration followed by an
35 * `__declspec(dllexport)` definition is a mismatch. A plugin translation unit
36 * defines OPENSWMM_GPU_PLUGIN_BUILD (see the gpu CMakeLists) so it both
37 * declares and defines the symbols as dllexport. The core never link-imports
38 * these (it resolves them via dlsym/GetProcAddress), so the non-plugin case is
39 * a no-op marker.
40 */
41#if defined(_WIN32)
42# if defined(OPENSWMM_GPU_PLUGIN_BUILD)
43# define OPENSWMM_GPU_ABI __declspec(dllexport)
44# else
45# define OPENSWMM_GPU_ABI
46# endif
47#elif defined(__GNUC__)
48# define OPENSWMM_GPU_ABI __attribute__((visibility("default")))
49#else
50# define OPENSWMM_GPU_ABI
51#endif
52
53#ifdef __cplusplus
54extern "C" {
55#endif
56
60#define OPENSWMM_GPU_ABI_VERSION 2
61
70
79
92
101
111
112#ifdef __cplusplus
113} /* extern "C" */
114#endif
115
116#endif /* OPENSWMM_ENGINE_2D_GPU_PLUGIN_ABI_H */
OPENSWMM_GPU_ABI int openswmm_gpu_probe(OpenSwmmGpuProbe *out)
Query the plugin for a usable GPU device.
Definition GpuPluginCuda.cpp:45
OpenSwmmGpuVendor
Definition GpuPluginAbi.h:63
@ OPENSWMM_GPU_VENDOR_OPENMP
Definition GpuPluginAbi.h:68
@ OPENSWMM_GPU_VENDOR_HIP
Definition GpuPluginAbi.h:66
@ OPENSWMM_GPU_VENDOR_CUDA
Definition GpuPluginAbi.h:65
@ OPENSWMM_GPU_VENDOR_SYCL
Definition GpuPluginAbi.h:67
@ OPENSWMM_GPU_VENDOR_NONE
Definition GpuPluginAbi.h:64
OPENSWMM_GPU_ABI void * openswmm_make_gpu_inertial_solver(const OpenSwmmGpuProbe *probe)
Construct the GPU LOCAL-INERTIAL surface solver (MOMENTUM=inertial).
Definition GpuPluginOmp.cpp:77
OPENSWMM_GPU_ABI void * openswmm_make_gpu_surface_solver(const OpenSwmmGpuProbe *probe)
Construct the GPU surface solver.
Definition GpuPluginCuda.cpp:71
#define OPENSWMM_GPU_ABI
Definition GpuPluginAbi.h:50
Definition GpuPluginAbi.h:72
unsigned long long device_mem_bytes
Definition GpuPluginAbi.h:77
int device_count
Definition GpuPluginAbi.h:74
char device_name[128]
Definition GpuPluginAbi.h:76
int abi_version
Definition GpuPluginAbi.h:73
int vendor
Definition GpuPluginAbi.h:75