CI: nightly Cython build with bounds checking enabled
Los mantenedores suelen responder en 1 día
@ramakrishnap-nv ya está trabajando en esto.
Desde el 3/11/2026.
- #2262 de @ramakrishnap-nv — abierto
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 22/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- python
- Área
- build-system, ci-cd
Línea de trabajo
Start with the file-level # cython: boundscheck=False and wraparound=False header in python/cuopt/cuopt/linear_programming/solver/solver_wrapper.pyx, and with how CYTHON_FLAGS reaches the build through rapids-cmake. Confirm whether a header directive overrides the flag, then measure the cost of checks in the nogil loops. Done means a nightly CI job builds with checks and runs the Python tests, with the design decision recorded. The issue has no chosen approach, so agree on one with maintainers first.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Problem
python/cuopt/cuopt/linear_programming/solver/solver_wrapper.pyx sets # cython: boundscheck=False and # cython: wraparound=False at file level. Out-of-bounds indexing in its nogil loops is therefore silent: CI passes and the result is garbage rather than an error. That is how #2249 (introduced with _compute_slack_csr in #1615) went unnoticed in 26.10.
Proposal
Add a nightly (not per-PR) CI job that builds the Python extension with bounds checking enabled and runs the Python test suite. A checked build would have raised IndexError as soon as the DataModel tests hit the bounds-only path.
Caveat to resolve first
A # cython: header comment in a file overrides command-line directives, so passing --directive boundscheck=True through rapids-cmake's CYTHON_FLAGS would not affect this file. Options:
- Remove the file-level header and use
@cython.boundscheck(False)/@cython.wraparound(False)only on the specific hot functions that need it, then enable checks globally in the checked build. - Make the header conditional in the checked configuration.
Neither has been tried. The overhead of checks in the hot loops should be measured, which is why release builds should stay unchecked.
Related: #2249, #2253, #1615.
- Lenguaje dominante
- Cuda
- Estrellas
- 1.1k
- Forks
- 249
- Merge medio
- 1 d 15 h
- PR fusionados (30 d)
- 126
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 NVIDIA/cuopt
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 32/100
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 Medio día Aptitud para principiantes 50/100
Los mantenedores suelen responder en 1 día
-
[BUG] Out-of-bounds read when solving a DataModel with lower/upper constraint boundsPosiblemente ocupada @ramakrishnap-nv la tomó hace 2 días. Abiertobug
Dificultad 3/5 Medio día Aptitud para principiantes 55/100
Los mantenedores suelen responder en 1 día
Todos los issues de NVIDIA/cuopt
Issues similares
-
`package.json`: build tools listed as runtime dependencies, exact pins causing duplicate installsAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
themesberg/flowbite-vue#471 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
crossbario/autobahn-python#2042 ·
Los mantenedores suelen responder en 1 día
-
maintenance
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
apache/maven-resources-plugin#569 ·
Los mantenedores suelen responder en 1 día
-
Not compatible with cmake-4.5Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
dwavesystems/minorminer#298 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100