// línea open-source
← productos

Craton Bolt

Entran cadenas SQL. Sale PTX de NVIDIA en tiempo de ejecución. La GPU hace el resto.

32.4×
vs Polars · aritmética sobre 50 M filas
< 25 µs
Plan + lower + codegen / consulta
742
Tests de integración y PTX-golden
v0.7.0 · pre-1.0
Desarrollo activo

Problemas modernos requieren soluciones modernas.

La mayoría de los motores de dataframes sobre GPU encadenan kernels precompilados y rebotan los resultados intermedios por la memoria global entre cada uno. Craton Bolt hace lo contrario: compila cada consulta SQL en un único kernel PTX de NVIDIA nuevo en tiempo de ejecución, lo carga a través del driver de CUDA y ejecuta todo el árbol de expresiones fusionado en registros.

Toda la tubería — parseo, planificación, codegen, lanzamiento — es Rust puro. No hay capa de C++, ni biblioteca de kernels precompilada, ni FFI a un motor de consultas de terceros. Todo lo que está por debajo de cuModuleLoadData es el driver de CUDA de NVIDIA; todo lo que está por encima es Rust.

La memoria de GPU está verificada por el borrow checker. Las asignaciones son handles tipados, el acceso de lectura presta una vista compartida y la escritura toma una exclusiva — y los lanzamientos de kernel exigen esos préstamos. El uso-tras-liberación, la doble liberación y el aliasing mutable/compartido entre kernels se convierten en errores de compilación, igual que Rust ya garantiza para la memoria de CPU.

Compilar cada consulta en JIT cuesta casi nada: la planificación más el codegen se mantienen por debajo de 25 µs sin importar el tamaño del conjunto de datos. En una carga aritmética fusionada sobre 50 M de filas eso supone una mejora de 32.4× frente a Polars multihilo, y en GROUP BY de alta cardinalidad supera tanto a Polars como a DuckDB. Apache-2.0 y, con honestidad, pre-1.0 — la API pública aún es inestable y no está lista para producción.

Fusión de kernels vía PTX en tiempo de ejecución

Un único kernel PTX por consulta mantiene todo el árbol de expresiones fusionado en registros — en lugar de encadenar kernels precompilados y rebotar resultados intermedios por la memoria global como hacen RAPIDS / cuDF.

Memoria de GPU verificada por el borrow checker

Las asignaciones de GPU son handles tipados (GpuVec<T>), prestados en solo lectura o en exclusiva. El uso-tras-liberación, la doble liberación y el aliasing compartido/mutable entre kernels se rechazan en tiempo de compilación — las mismas garantías que Rust da para la memoria de CPU.

Rust puro, sin capa de C++

Toda la tubería — parseo, planificación, codegen, lanzamiento — es Rust puro sobre la API cruda del driver de CUDA. Sin biblioteca de kernels precompilada y sin FFI a un motor de consultas de terceros.

Amplia superficie SQL

Proyección, filtros, agregados, GROUP BY, todos los tipos de JOIN, operaciones de conjuntos, CTEs (incluido WITH RECURSIVE), funciones de ventana, ORDER BY / LIMIT / HAVING, además de aritmética Decimal128 y de fechas/horas ejecutada en la GPU.

La Ventaja Técnica

Por qué los expertos eligen Craton Bolt

01

Codegen de PTX en tiempo de ejecución

Cada consulta se reduce a un IR en forma SSA de operaciones y luego a un módulo PTX nuevo emitido en Rust y ensamblado a SASS por el driver (cuModuleLoadData). Una caché LRU de módulos con clave KernelSpec (clave de 128 bits) más una caché en disco que se auto-invalida hacen que las formas de consulta repetidas se salten la recompilación. Apunta a sm_70 (Volta) y posteriores.

02

Modelo de memoria CUDA-Oxide

GpuVec<T> posee la memoria del dispositivo; GpuView y el GpuViewMut !Sync / !Copy la prestan. Los búferes están alineados con Arrow, así que los resultados se descargan directamente en RecordBatches de arrow-rs. La igualdad y LIKE sobre Utf8 codificado por diccionario se pliegan a predicados de pertenencia de índices enteros puros en la GPU.

03

GROUP BY, JOINs y ordenación por niveles

Kernels de GROUP BY multinivel en memoria compartida y particionados por hash; hash-join build/probe en GPU para las formas INNER / LEFT / RIGHT / FULL / CROSS que califican, con repliegues en host; ordenación bitónica y radix en GPU para ORDER BY. Requiere CUDA 12+ y una GPU NVIDIA con capacidad de cómputo 7.0+; el crate compila en cualquier sitio gracias a la feature cuda-stub.

¿Listo para asegurar
el futuro?

Solicitar Briefing