La solicitud de extracción #20793 reintroduce una reducción en la sincronización durante las operaciones de cálculo dividido en llama.cpp, dirigida principalmente a mejoras de rendimiento en CUDA. Los cambios implican intercambiar copias sincrónicas por copias asíncronas y relajar los requisitos de sincronización entre las copias de entrada en backends compatibles.
- Mejora el rendimiento de CUDA mediante menos sincronizaciones entre tokens.
- Añade la capacidad de copia de CPU a CUDA a ggml_backend_cuda_cpy_tensor_async().
- Introduce una función para relajar los requisitos de sincronización entre copias de entrada, actualmente compatible con CUDA.
- Intercambia la copia sincrónica con la función de copia asíncrona y añade protecciones de macro para compilaciones no-CUDA.
- Reestructura la detección del backend en ggml-backend.cpp para evitar conflictos de enlace y simplifica las sincronizaciones para adherirse al patrón saaasg.
Estas modificaciones permiten que backends como Vulkan adopten sincronizaciones explícitas relajadas para copias HtoD y ejecución de gráficos, mientras mantiene comprobaciones más estrictas para copias asíncronas de CPU a CUDA.