Pull request #20793 возвращает уменьшение синхронизации при операциях разделённых вычислений в llama.cpp, в первую очередь направлено на улучшение производительности CUDA. Изменения включают замену синхронных копий на асинхронные и ослабление требований к синхронизации между копиями входных данных на поддерживаемых бэкендах.
- Улучшает производительность CUDA за счёт меньшего количества синхронизаций между токенами.
- Добавляет возможность копирования CPU-to-CUDA в ggml_backend_cuda_cpy_tensor_async().
- Вводит функцию для ослабления требований к синхронизации между копиями входных данных, в настоящее время поддерживается для CUDA.
- Заменяет синхронную копию на асинхронную функцию копирования и добавляет макросы защиты для сборок без CUDA.
- Перерабатывает обнаружение бэкенда в ggml-backend.cpp для избежания конфликтов линковки и упрощает синхронизации для соответствия паттерну saaasg.
Эти изменения позволяют таким бэкендам, как Vulkan, использовать ослабленные явные синхронизации для копирований HtoD и выполнения графов, сохраняя при этом более строгие проверки для асинхронных копирований CPU-to-CUDA.