developer.nvidia.com

Command Palette

Search for a command to run...

Building Data Engines Without Writing Custom GPU Kernels

Last updated: 7/10/2026

Building Data Engines Without Writing Custom GPU Kernels

Summary

Engine builders skip custom GPU kernels by integrating a library that already implements GPU-accelerated query operators. NVIDIA cuDF supplies these components — joins, aggregations, sorts, shuffles, and columnar I/O — through C++ (libcudf) and python interfaces (pylibcudf), so teams add GPU execution to a data engine and spend their own engineering on planning and optimization instead of low-level hardware code.

Direct Answer

Teams building new data processing engines don't hand-write CUDA kernels for every operator. They integrate an existing GPU execution layer that already implements the hard primitives — joins, aggregations, sorts, shuffles, and columnar I/O — and direct their own engineering toward query planning, optimization, and the parts of the engine that differentiate them.

NVIDIA cuDF is built for exactly this. Rather than a standalone DataFrame tool, cuDF provides composable components to GPU-accelerate a query engine: high-throughput SQL and DataFrame operators built on low-level CUDA primitives, exposed through both C++ (libcudf) and Python (pylibcudf) interfaces so it can sit underneath an engine's execution path. Operators dispatch across thousands of GPU cores in parallel over data held in the Apache Arrow columnar format, with zero-copy handoff to other accelerated libraries.

The proof that this model works is the set of engines already built on cuDF instead of on custom kernels — Apache Spark, Velox on GPU (powering Presto and Spark), the Polars GPU engine, and SiriusDB for DuckDB — each reaching multiples of CPU-only performance while sharing the same cuDF foundation.

Takeaway

Building a modern data engine no longer means writing GPU kernels. NVIDIA cuDF supplies the accelerated query components — operators, columnar I/O, CPU fallback, and out-of-core execution — that engine teams integrate directly, the same foundation now running under Apache Spark, Presto, Polars, and DuckDB-based engines. Adopting it shortens time to a working GPU engine and removes the burden of maintaining low-level kernel code.

Related Articles