vibespatial.overlay.types

Shared overlay pipeline data structures.

Extracted from overlay_gpu.py so that multiple modules (overlay_gpu, make_valid_gpu) can import lightweight data structures without pulling in the full overlay pipeline and its CUDA kernel strings.

Phase 8 (vibeSpatial-p23.8): All four overlay data structures are device-primary with lazy host materialization. GPU-only consumers never trigger D->H copies.

Classes

SplitEventDeviceState

SplitEventTable

Split event table with lazy host materialization.

AtomicEdgeDeviceState

AtomicEdgeTable

Atomic edge table with lazy host materialization.

HalfEdgeGraphDeviceState

HalfEdgeGraph

Half-edge graph with device-primary storage and lazy host materialization.

OverlayFaceDeviceState

OverlayFaceTable

Module Contents

class vibespatial.overlay.types.SplitEventDeviceState
source_segment_ids: vibespatial.cuda._runtime.DeviceArray
packed_keys: vibespatial.cuda._runtime.DeviceArray
t: vibespatial.cuda._runtime.DeviceArray
x: vibespatial.cuda._runtime.DeviceArray
y: vibespatial.cuda._runtime.DeviceArray
source_side: vibespatial.cuda._runtime.DeviceArray | None = None
row_indices: vibespatial.cuda._runtime.DeviceArray | None = None
part_indices: vibespatial.cuda._runtime.DeviceArray | None = None
ring_indices: vibespatial.cuda._runtime.DeviceArray | None = None
class vibespatial.overlay.types.SplitEventTable

Split event table with lazy host materialization.

When produced by the GPU pipeline, all arrays live in device_state and host numpy arrays are lazily copied on first property access. GPU-only consumers that read only device_state, count, left_segment_count, right_segment_count, and runtime_selection never trigger device-to-host copies.

left_segment_count: int
right_segment_count: int
runtime_selection: vibespatial.runtime.RuntimeSelection
device_state: SplitEventDeviceState
property source_segment_ids: numpy.ndarray
property source_side: numpy.ndarray
property row_indices: numpy.ndarray
property part_indices: numpy.ndarray
property ring_indices: numpy.ndarray
property t: numpy.ndarray
property x: numpy.ndarray
property y: numpy.ndarray
property count: int
class vibespatial.overlay.types.AtomicEdgeDeviceState
source_segment_ids: vibespatial.cuda._runtime.DeviceArray
direction: vibespatial.cuda._runtime.DeviceArray
src_x: vibespatial.cuda._runtime.DeviceArray
src_y: vibespatial.cuda._runtime.DeviceArray
dst_x: vibespatial.cuda._runtime.DeviceArray
dst_y: vibespatial.cuda._runtime.DeviceArray
row_indices: vibespatial.cuda._runtime.DeviceArray | None = None
part_indices: vibespatial.cuda._runtime.DeviceArray | None = None
ring_indices: vibespatial.cuda._runtime.DeviceArray | None = None
source_side: vibespatial.cuda._runtime.DeviceArray | None = None
class vibespatial.overlay.types.AtomicEdgeTable

Atomic edge table with lazy host materialization.

Host numpy arrays are lazily copied from device_state on first access, matching the HalfEdgeGraph lazy pattern. GPU-only consumers that read only device_state, count, left_segment_count, right_segment_count, and runtime_selection never trigger the device-to-host copies.

left_segment_count: int
right_segment_count: int
runtime_selection: vibespatial.runtime.RuntimeSelection
device_state: AtomicEdgeDeviceState
property source_segment_ids: numpy.ndarray
property source_side: numpy.ndarray
property row_indices: numpy.ndarray
property part_indices: numpy.ndarray
property ring_indices: numpy.ndarray
property direction: numpy.ndarray
property src_x: numpy.ndarray
property src_y: numpy.ndarray
property dst_x: numpy.ndarray
property dst_y: numpy.ndarray
property count: int
class vibespatial.overlay.types.HalfEdgeGraphDeviceState
node_x: vibespatial.cuda._runtime.DeviceArray
node_y: vibespatial.cuda._runtime.DeviceArray
src_node_ids: vibespatial.cuda._runtime.DeviceArray
dst_node_ids: vibespatial.cuda._runtime.DeviceArray
angle: vibespatial.cuda._runtime.DeviceArray
sorted_edge_ids: vibespatial.cuda._runtime.DeviceArray
edge_positions: vibespatial.cuda._runtime.DeviceArray
next_edge_ids: vibespatial.cuda._runtime.DeviceArray
src_x: vibespatial.cuda._runtime.DeviceArray
src_y: vibespatial.cuda._runtime.DeviceArray
source_segment_ids: vibespatial.cuda._runtime.DeviceArray | None = None
source_side: vibespatial.cuda._runtime.DeviceArray | None = None
row_indices: vibespatial.cuda._runtime.DeviceArray | None = None
part_indices: vibespatial.cuda._runtime.DeviceArray | None = None
ring_indices: vibespatial.cuda._runtime.DeviceArray | None = None
direction: vibespatial.cuda._runtime.DeviceArray | None = None
class vibespatial.overlay.types.HalfEdgeGraph

Half-edge graph with device-primary storage and lazy host materialization.

All arrays (both topology and per-edge metadata) are stored on device via device_state and lazily copied to host on first property access. GPU-only consumers that read device_state, edge_count, node_count, left_segment_count, right_segment_count, and runtime_selection never trigger device-to-host copies.

left_segment_count: int
right_segment_count: int
runtime_selection: vibespatial.runtime.RuntimeSelection
device_state: HalfEdgeGraphDeviceState
property source_segment_ids: numpy.ndarray
property source_side: numpy.ndarray
property row_indices: numpy.ndarray
property part_indices: numpy.ndarray
property ring_indices: numpy.ndarray
property direction: numpy.ndarray
property src_x: numpy.ndarray
property src_y: numpy.ndarray
property dst_x: numpy.ndarray
property dst_y: numpy.ndarray
property node_x: numpy.ndarray
property node_y: numpy.ndarray
property src_node_ids: numpy.ndarray
property dst_node_ids: numpy.ndarray
property angle: numpy.ndarray
property sorted_edge_ids: numpy.ndarray
property edge_positions: numpy.ndarray
property next_edge_ids: numpy.ndarray
property edge_count: int
property node_count: int
class vibespatial.overlay.types.OverlayFaceDeviceState
face_offsets: vibespatial.cuda._runtime.DeviceArray
face_edge_ids: vibespatial.cuda._runtime.DeviceArray
bounded_mask: vibespatial.cuda._runtime.DeviceArray
signed_area: vibespatial.cuda._runtime.DeviceArray
centroid_x: vibespatial.cuda._runtime.DeviceArray
centroid_y: vibespatial.cuda._runtime.DeviceArray
left_covered: vibespatial.cuda._runtime.DeviceArray
right_covered: vibespatial.cuda._runtime.DeviceArray
class vibespatial.overlay.types.OverlayFaceTable
runtime_selection: vibespatial.runtime.RuntimeSelection
device_state: OverlayFaceDeviceState
property face_offsets: numpy.ndarray
property face_edge_ids: numpy.ndarray
property bounded_mask: numpy.ndarray
property signed_area: numpy.ndarray
property centroid_x: numpy.ndarray
property centroid_y: numpy.ndarray
property left_covered: numpy.ndarray
property right_covered: numpy.ndarray
property face_count: int