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.