code-saturne / code-saturne/code_saturne
SIGSEGV in cs_sles_solve_ccc_fv when CS_CUDA_ALLOC_DEVICE_UVM is not set (v9.1.0)
- Lenguaje dominante
- C++
- Estrellas
- 307
- Forks
- 102
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
## Description
`cs_sles_solve_ccc_fv` allocates its extended solver buffers using `CS_ALLOC_DEVICE` (device-only memory). Those buffers are subsequently passed to the CPU-side convergence check, which dereferences them on the host and causes a SIGSEGV.
Setting `CS_CUDA_ALLOC_DEVICE_UVM=1` before launching the solver works around the crash: it remaps `cs_alloc_mode_device` to `CS_ALLOC_HOST_DEVICE_SHARED` at initialisation time (see `cs_base_cuda.cu:777`), making the buffers accessible from both host and device.
## Steps to reproduce
1. Build code_saturne v9.1.0 with CUDA support.
2. Run any case that exercises the CUDA sparse linear solver (`cs_sles_solve_ccc_fv`) without setting `CS_CUDA_ALLOC_DEVICE_UVM`.
3. Observe SIGSEGV during the convergence check after the first solver call.
## Workaround
```bash
export CS_CUDA_ALLOC_DEVICE_UVM=1
```
Set this before invoking the solver. It prevents the crash by ensuring solver buffers are in unified/shared memory.
## Expected behaviour
`cs_sles_solve_ccc_fv` should either allocate convergence-check buffers in host-accessible memory directly, or the convergence check should use a device-to-host copy rather than a direct host dereference.
## Environment
- code_saturne version: 9.1.0
- CUDA version: 13.1
- GPU architecture: sm_75
- OS: Ubuntu (x86_64)
Guía de contribución
Línea de trabajo
Comienza en cs_sles_solve_ccc_fv e inspecciona cómo sus búferes extendidos del solver llegan a la comprobación de convergencia del lado de la CPU. Compara el comportamiento de asignación con cs_base_cuda.cu:777 y reproduce una compilación CUDA sin CS_CUDA_ALLOC_DEVICE_UVM. Se considera terminado cuando el solver ya no falla con un segmentation fault sin el workaround, mientras que el workaround existente de Unified Memory sigue siendo válido.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- cpp
- Área
- hpc
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Tranquilo
- Claridad
- Bastante claro
- Aptitud para principiantes
- 48/100