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.9.tar.gz (15.0 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.9-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.9-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.9-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.9-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.9.tar.gz.

File metadata

  • Download URL: h3_turbo-0.1.9.tar.gz
  • Upload date:
  • Size: 15.0 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.9.tar.gz
Algorithm Hash digest
SHA256 160d7281985b0a206d27e76d8e60dac174f91a096a9795c27bd193eba5a59a30
MD5 9cd0ecb38d8f8e20c00b356b0b98109c
BLAKE2b-256 c6edf31a69de46bdc57711de7230a0cdd3e4c9b83d7704632532f22959ba38f5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for h3_turbo-0.1.9-cp314-cp314-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 3241f0e58303b10315f1d909584e6729e87f7a307b0720d971e414cfcdd915dc
MD5 1de12faac1de99834233bde72ef1af98
BLAKE2b-256 372d4919f58ad8f23cce075e0f5f7cb81ef104bb43e248306b669b8cc44285fc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for h3_turbo-0.1.9-cp313-cp313-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 a450efd8e84862e73a0c52d5f1f3eec0971a4dfd1af5f09c1387fa9cc776aa1a
MD5 ab1cbb594d5333efa3e0c580bd7e7dd9
BLAKE2b-256 f58f48f3aaf7cd35597be1854a4f70ad27fc8f40b28ad93c0e976107a84242ec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for h3_turbo-0.1.9-cp312-cp312-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 64ea45995fb8d4981e918d1d1133c368695f09d3227d435b4b03ce4e54b2ec41
MD5 f3b7fa89e48f99ddc1869f04e36ebeac
BLAKE2b-256 48394b726000f86c8a5ae47e34c0ac64cb568c6ae8c77b97802842c0282b4f08

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for h3_turbo-0.1.9-cp310-cp310-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 96319ffba76049cd870d2f053a979a1f943d8695d594f42dd1438b6de8bdd677
MD5 397a48f88fc5adea6441a8385d879c3c
BLAKE2b-256 26793747f1167600828ca8720abfbac198eff5f15f0fd220439dd89ed30d1caa

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