Skip to main content

SYCL-accelerated H3 geospatial joins

Project description

H3 SYCL Bridge

⚖️ Licensing

FluidGeo H3-Turbo is offered under a dual-license model:

  • Academic & Non-Commercial: Free for research and educational purposes.
  • Commercial & Enterprise: A yearly subscription is required for production environments.
    • Features: 1,186x speedup on Blackwell, zero-copy pinned memory, and priority SYCL kernel support.

For enterprise trial keys and pricing, contact: info@fluidgeollc.com

Installation

H3-Turbo is available on PyPI and comes with pre-compiled "fat" wheels for Linux (CUDA 12.x) supporting NVIDIA Ampere, Ada Lovelace, Hopper, and Blackwell architectures.

pip install h3-turbo

Python API

H3 Turbo provides drop-in replacements for common H3 functions, optimized for NumPy arrays and GPU acceleration.

import h3_turbo
import numpy as np

# 1. Lat/Lon to Cell
lats = np.random.uniform(37.7, 37.8, 1_000_000)
lngs = np.random.uniform(-122.5, -122.4, 1_000_000)
resolution = 9

# Returns uint64 array of H3 indices
cells = h3_turbo.latlng_to_cell(lats, lngs, resolution)

# 2. Cell to Parent
parent_res = 5
parents = h3_turbo.cell_to_parent(cells, parent_res)

# 3. Grid Disk (k-ring)
k = 2
# Returns (N, max_k_size) array, padded with 0s
disks = h3_turbo.grid_disk(cells, k)

# 4. Cell to Boundary
# Returns (N, 7, 2) array of [lat, lng] coordinates
boundaries = h3_turbo.cell_to_boundary(cells)

# 5. Spatial Join (Point-in-Polygon)
# Efficiently check if points are within a set of zones
zones = np.array([0x8928308280fffff], dtype=np.uint64)
mask = h3_turbo.spatial_join(cells, zones, resolution)

Spark / Databricks Integration

H3 Turbo includes optimized Pandas UDFs for PySpark.

from pyspark.sql.functions import col
from spark_h3_turbo import (
    latlng_to_cell_udf,
    cell_to_parent_udf,
    grid_disk_udf,
    spatial_join_udf
)

# 1. Lat/Lon to Cell
df = df.withColumn("h3", latlng_to_cell_udf(9)(col("lat"), col("lon")))

# 2. Cell to Parent
df = df.withColumn("parent", cell_to_parent_udf(5)(col("h3")))

# 3. Grid Disk
df = df.withColumn("kring", grid_disk_udf(2)(col("h3")))

# 4. Spatial Join (Broadcast)
zones_list = [0x8928308280fffff] # List of H3 integers
df = df.withColumn("in_zone", spatial_join_udf(zones_list, 9)(col("h3")))

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

h3_turbo-0.1.8.tar.gz (14.9 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

h3_turbo-0.1.8-cp314-cp314-manylinux_2_39_x86_64.whl (61.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.39+ x86-64

h3_turbo-0.1.8-cp313-cp313-manylinux_2_39_x86_64.whl (61.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.39+ x86-64

h3_turbo-0.1.8-cp312-cp312-manylinux_2_39_x86_64.whl (61.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.39+ x86-64

h3_turbo-0.1.8-cp310-cp310-manylinux_2_39_x86_64.whl (61.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.39+ x86-64

File details

Details for the file h3_turbo-0.1.8.tar.gz.

File metadata

  • Download URL: h3_turbo-0.1.8.tar.gz
  • Upload date:
  • Size: 14.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for h3_turbo-0.1.8.tar.gz
Algorithm Hash digest
SHA256 3d76c9edfd5fd7474e4262a6e46ad8e16945339e3e55ffaa128011065c2f21ef
MD5 853c4159c5da653ee3984e011d3f4000
BLAKE2b-256 7d698aee3e787d4babb4920bc36b8cc3e95e0042e83ac53eb30c3ce66fe73442

See more details on using hashes here.

File details

Details for the file h3_turbo-0.1.8-cp314-cp314-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for h3_turbo-0.1.8-cp314-cp314-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 8571196c6ed269b9967cce9ff332c6630c02e0cfd97b4de986171c363910891e
MD5 a5bb97dcb5979553533fb7528cf58840
BLAKE2b-256 b63a7e8b5f0463c33124086d3505d92c02a0bb2dd4ea8a35c5e8d4c2b15a2e3d

See more details on using hashes here.

File details

Details for the file h3_turbo-0.1.8-cp313-cp313-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for h3_turbo-0.1.8-cp313-cp313-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 7aba84b75656742cc2cf32058b3e8b66859ce2a9d97b6d1240431d428b8ce38d
MD5 0bb66e24b32eafc0737a52b4239735af
BLAKE2b-256 53a7d2ee6eae3e2e267f49838bc6be0f18d774e7bcb1553c0cd8656d54f29d46

See more details on using hashes here.

File details

Details for the file h3_turbo-0.1.8-cp312-cp312-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for h3_turbo-0.1.8-cp312-cp312-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 6a8b04f3c133d94835b096013ce7bc34b34e90e3e857eb629e6cc2ba533da6cf
MD5 e542e54c1a428a6f9f25052efccb9cb4
BLAKE2b-256 209b8e30b1b5607dab1af4863a034e0d8920fb4bb4b233eb5119969ecbec505a

See more details on using hashes here.

File details

Details for the file h3_turbo-0.1.8-cp310-cp310-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for h3_turbo-0.1.8-cp310-cp310-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 338d73c32b677103dabb006a2c1fdae5455553cd2a9b38f160f576a10ae9026c
MD5 12abaa226a916e54555611b0440b05d9
BLAKE2b-256 4ebb21161d413ae08e7242a2bbe2c94bfd0e3ae5d01706c5d642a2bccf4b2a0b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page