vibespatial.constructive.centroid

GPU-accelerated centroid computation for all geometry types.

Tier 1 NVRTC kernels (ADR-0033) for computing geometric centroids directly from OwnedGeometryArray coordinate buffers. ADR-0002 METRIC class precision dispatch: fp32 + Kahan + coordinate centering on consumer GPUs, native fp64 on datacenter GPUs.

Covers Point, MultiPoint, LineString, MultiLineString, Polygon, and MultiPolygon families. Polygon/MultiPolygon kernel source is imported from polygon_constructive.py (not duplicated).

Zero host/device transfers mid-process. When data is already device-resident (vibeFrame path), kernels read directly from DeviceFamilyGeometryBuffer pointers with no copy.

Attributes

cp

Functions

centroid_owned(...)

Compute centroid directly from OwnedGeometryArray coordinate buffers.

centroid_native_tabular_result(owned, *[, ...])

centroid_expression_owned(owned, *, component[, ...])

Compute a centroid coordinate as a private device expression.

centroid_expressions_owned(owned, *[, source_token])

Compute centroid x/y as paired private device expressions.

Module Contents

vibespatial.constructive.centroid.cp = None
vibespatial.constructive.centroid.centroid_owned(owned: vibespatial.geometry.owned.OwnedGeometryArray, *, dispatch_mode: vibespatial.runtime.ExecutionMode | str = ExecutionMode.AUTO, precision: vibespatial.runtime.precision.PrecisionMode | str = 'auto') vibespatial.geometry.owned.OwnedGeometryArray

Compute centroid directly from OwnedGeometryArray coordinate buffers.

Supports all geometry families: Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon.

GPU path uses ADR-0002 METRIC-class precision dispatch. Returns a device-resident Point OwnedGeometryArray (GPU path) or host-resident Point OwnedGeometryArray (CPU path).

Zero host/device transfers mid-process. When owned.device_state is populated (vibeFrame path), GPU kernels read directly from device pointers with no copy.

vibespatial.constructive.centroid.centroid_native_tabular_result(owned: vibespatial.geometry.owned.OwnedGeometryArray, *, dispatch_mode: vibespatial.runtime.ExecutionMode | str = ExecutionMode.AUTO, precision: vibespatial.runtime.precision.PrecisionMode | str = 'auto', crs=None, geometry_name: str = 'geometry', source_rows=None, source_tokens: tuple[str, Ellipsis] = (), attrs: dict[str, object] | None = None)
vibespatial.constructive.centroid.centroid_expression_owned(owned: vibespatial.geometry.owned.OwnedGeometryArray, *, component: str, source_token: str | None = None)

Compute a centroid coordinate as a private device expression.

Physical shape: segmented geometry centroid reduction to one fp64 device coordinate per source row. The native output carrier is NativeExpression and the sanctioned consumers are rowsets, grouped reducers, and native attribute assembly. Public geometry.centroid continues to export a point geometry result.

vibespatial.constructive.centroid.centroid_expressions_owned(owned: vibespatial.geometry.owned.OwnedGeometryArray, *, source_token: str | None = None)

Compute centroid x/y as paired private device expressions.