CI: skip unaffected C++ test group on PRs and speed up slow C++ tests

Abierto
#2,258 0 comentarios 0 reacciones 0 asignados Ver en GitHub

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
32/100
Tipo de issue
Nueva funcionalidad
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
cpp, github-actions, yaml
Área
ci-cd, testing-qa

Línea de trabajo

Start with the changed-files job and the conda-cpp-tests-* jobs in pr.yaml, then the pr-builder and pr-test-summary jobs that must accept a skipped job. For the speed-up, the timings name C_API_TEST and DeterministicBBTestFixture.deterministic_reproducibility/1, plus NUMOPT_INTERNAL_TEST and ROUTING_INTERNAL_TEST. Done means the path-filtered skip works for both sides, shared code still runs both groups, and the heavy tests run faster on v100. The open questions on which tests belong on PRs need maintainer input first.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Follow-up to #2247 (split C++ tests into routing and mathopt jobs), raised by @bdice and @KyleFromNVIDIA in review.

1. Skip the unaffected group based on changed files (@bdice)

Run only the routing or only the mathopt C++ test job when a PR touches just that side.

  • Add routing and mathopt path filters to the changed-files job in pr.yaml, and gate each conda-cpp-tests-* job with them.
  • Shared code (utilities, C API, common cpp/src and cpp/include) must still run both groups.
  • pr-builder / pr-test-summary must tolerate a skipped job.

2. Make the tests faster before relying on sharding (@KyleFromNVIDIA)

Per-binary timings from PR #2247 CI run 41485888506 (commit 5722b9a4). Four binaries make up about 90% of test time in each group.

Binary Group h100 v100
NUMOPT_INTERNAL_TEST mathopt 542s 1122s
INCUMBENT_CALLBACK_TEST mathopt 152s 202s
GRPC_INTEGRATION_TEST mathopt 102s 117s
C_API_TEST mathopt 64s 232s
ROUTING_INTERNAL_TEST routing 659s 717s
ROUTING_UNIT_TEST routing 155s 155s

Candidates to investigate:

  • C_API_TEST on v100: DeterministicBBTestFixture.deterministic_reproducibility/1 takes 181s on v100 vs about 25s on h100, and is why v100 mathopt takes 36 min against 16-19 min elsewhere. Use a smaller instance or a lower work limit.
  • Duplicate coverage: deterministic B&B reproducibility runs in both NUMOPT_INTERNAL_TEST (about 100s) and C_API_TEST.
  • Routing time limits: OBJECTIVE_FUNCTION/0 and /1 take about 75s each, and the 14 CVRPTW_Retail cases about 20s each. Check whether a lower search time limit keeps results stable.
  • Large LP/MIP sweeps: mip_solve.run_small_tests (133s) and pdlp_class.run_sub_mittleman (106s). Consider a fast subset for PRs and the full set for nightly.
  • GRPC_INTEGRATION_TEST: PathSelectionTests (42s) and ErrorRecoveryTests (24s). Check for fixed sleeps or restarts.
  • Per-job setup: about 4.5 min of setup and dataset download per job, paid twice after the split.

Open questions

  • Which of the heavy tests are required for PR coverage and which can move to nightly?
  • Are the v100 slowdowns from the GPU, CPU count, or time-limit behaviour?
Lenguaje dominante
Cuda
Estrellas
1.1k
Forks
249
Merge medio
1 d 15 h
PR fusionados (30 d)
126

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de NVIDIA/cuopt

Todos los issues de NVIDIA/cuopt

Issues similares

Más issues de DevOps

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.