Detect Int64 SUM overflow on the CUDA aggregate path instead of wrapping
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 57/100
Línea de trabajo
Read crates/oxidelake-device/src/cuda/ops.rs and kernels/cuda/aggregation.cu to trace the CUDA SUM path, then compare it with the CPU overflow handling in crates/oxidelake-device/src/cpu/kernels.rs. Add the specified overflow fixture to conformance and run it against CPU, CUDA, and stock DataFusion; done means all three error and the “by design” comment is removed.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Today — crates/oxidelake-device/src/cuda/ops.rs:10-11: "Divergence from the CPU reference, by design: device SUM over Int64 wraps on overflow where the CPU path reports an error." The kernel uses atomicAdd((unsigned long long*)&sums[slot], …) (kernels/cuda/aggregation.cu:125); the CPU path errors with "SUM overflowed Int64" (crates/oxidelake-device/src/cpu/kernels.rs:439-441). Conformance has no overflow case (grep -n overflow conformance.rs → 0).
Why it is worth fixing — a documented wrong answer is still a wrong answer, and DataFusion's stock aggregate errors here. Under the equality-with-stock-DataFusion standard the conformance suite enforces, this is the one divergence left in by design.
Fix — accumulate an overflow flag on device (check __builtin_add_overflow-style before the atomic, or keep a per-slot high word and detect carry) and return EngineError::Execution("SUM overflowed Int64") on the host; add an overflow row (i64::MAX - 1 twice in one group) to conformance.
Done when — CPU, CUDA (GPU job) and stock DataFusion all error on the fixture; the "by design" comment is removed.
- Lenguaje dominante
- Rust
- Estrellas
- 1
- Forks
- 2
- Merge medio
- 1 d 11 h
- PR fusionados (30 d)
- 7
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de vyncint/oxidelake
-
dependencies documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 25/100
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 38/100
Los mantenedores suelen responder en 1 día
-
Prepare the Ballista 55 / DataFusion 55 / arrow 59 chain bump ahead of the release that fixes thriftAbiertoenhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 32/100
vyncint/oxidelake#40 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
Los mantenedores suelen responder en 1 día
Todos los issues de vyncint/oxidelake
Issues similares
-
ai_p2 bug comp-datalake
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
ClickHouse/ClickHouse#128306 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
documentation
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 1 día
-
bug triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
Los mantenedores suelen responder en 1 día
-
Remove the preset version numberAbiertoarea: ui enhancement good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
JavenKazebee/capture-room#166 ·
Los mantenedores suelen responder en 1 día