NVIDIA / NVIDIA/cudf

[FEA] Add DECIMAL128 support to streaming groupby

Open
#24,065 0 comments 0 reactions 0 assignees View on GitHub
feature request libcudf
Dominant language
C++
Stars
9.8k
Forks
1.1k
Avg merge
3d 6m
Merged PRs (30d)
278

Description

**Is your feature request related to a problem? Please describe.**

Based on the offline discussion with @kjmph

Streaming groupby does not support `DECIMAL128`. Workloads that need it fall back to the classic `groupby::aggregate` path, which holds the full hash aggregation state for the whole input at once.

This came up while investigating TPC-H SF3K OOMs on AWS g73.48xlarge. Q18 was only fixable via host spilling, which was very slow, and `DECIMAL128` streaming groupby would help.

**Describe the solution you'd like**

Accept `DECIMAL128` in streaming groupby for keys and for the aggregations it already supports. The missing piece is 128-bit atomics for the aggregation path.

**Describe alternatives you've considered**

Host spilling. Works but too slow.

Contributor guide

Open the contributing guide

Research direction

Start by tracing the streaming groupby path and comparing it with the classic groupby::aggregate path, focusing on how supported aggregations handle numeric types. Investigate the stated 128-bit atomic requirement and existing DECIMAL128 handling. Done means DECIMAL128 works for streaming-groupby keys and its already-supported aggregations without requiring host spilling.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
data
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.