#129 Конвейерный кэш, часть 2. Вычисления CUDA, часть 7. Загрузка кэша с диска и тестирование

00:00 Введение в тему • Обсуждение кэш-памяти конвейера в CUDA Education. • Объяснение алгоритма без использования графического процессора. • Передача массива из 32 чисел на графический процессор. 00:59 Вычисления на графическом процессоре • Графический процессор выполняет вычисления по формуле Бине. • Получение результатов на стороне шейдера. • Передача результатов обратно на центральный процессор и вывод на экран. 01:52 Кэш-память конвейера • Создание и сохранение пайплайна на диск. • Преобразование пайплайна в машинный код. • Использование сохранённого пайплайна без повторной компиляции. 03:08 Логика вычислений • Анализ выходных данных для первых трёх входных данных. • Понимание, что выходные данные похожи, но не идентичны. • Влияние кэша на определение необходимости изменений конвейера. 04:50 Проблемы с кэшем • Драйвер может решить, что сохранённый конвейер не нуждается в изменениях. • Сохранение конвейера с определённым набором констант специализации. • Загрузка конвейера с диска и его использование. 08:31 Изменение констант специализации • Изменение константы специализации для запуска только первых двух элементов. • Получение всех 32 элементов при изменении значения на 2. • Ошибка при изменении значения на 3, 5, 7 или 9. 12:56 Оптимизация драйвера • Драйвер оптимизирует процесс, используя кэшированный конвейер. • Исправление ошибок во время выполнения. • Ненадёжность и опасность такого подхода. 13:53 Заключение • Драйвер следит за процессом и манипулирует данными. • Получение результата, как если бы было 32 элемента, даже если их меньше. • Вина драйвера в возникновении противоречивых ошибок. 14:51 Проверка поведения системы • Автор проверяет, как система обрабатывает данные, заменяя последовательность Фибоначчи на элементы буфера. • При вводе разных чисел система выдаёт только соответствующие значения. • Разделение значений помогает избежать ошибок при незначительных изменениях. 16:37 Добавление логики для сохранения кэша • Удаление файла по умолчанию и вставка нового файла для сохранения кэша пайплайна. • Новый файл сохраняет кэш пайплайна на диск после его создания. 18:22 Запуск приложения с сохранением кэша • Запуск приложения с сохранением файла кэша на диск. • Проверка размера файла кэша: 7782 байта. 19:00 Влияние количества конвейеров на размер файла • Увеличение количества создаваемых конвейеров увеличивает размер файла кэша. • Пример: при увеличении количества конвейеров с 1 до 10 размер файла увеличивается с 8 до 92 килобайт. 19:53 Работа с несколькими конвейерами • При наличии нескольких конвейеров с разными конфигурациями драйвер ищет нужный конвейер в большом файле. • Поиск происходит быстро и эффективно. 21:21 Создание кэша для единственного пайплайна • Создание кэша для пайплайна с константой специализации 32. • Сохранение кэша на диск. 22:11 Запуск приложения с кэшированным файлом • Запуск приложения, которое использует кэшированный файл. • Проверка наличия файла в кэше и его загрузка при необходимости. 23:49 Ограничения при компиляции пайплайна • Установка ограничения: если требуется компиляция нового пайплайна, создание VK Pipeline завершится ошибкой. • Загрузка кэшированного файла и проверка его соответствия требованиям. 26:27 Тестирование константы специализации • Изменение константы специализации на 33 приводит к ошибке, так как кэш не соответствует требованиям. • Проверка других значений константы специализации: 500, 30, 9, 5, 2. 31:08 Проблема с константой 2 • При выборе константы 2 драйвер считает файл хорошим, даже если первые два элемента не совпадают. • Ошибка возникает при выборе константы 3. 32:01 Оптимизация драйвера и кэш-конвейер • Драйвер оптимизирует код, используя кэш-конвейер. • Отрицательные числа вызывают сбой из-за несоответствия кэшированному файлу. • Кэш-конвейер преобразует код шейдера в упрощённый код для машинного языка. 33:52 Обновление шейдера и сохранение кэша • Для обновления шейдера необходимо перекомпилировать его. • После перекомпиляции нужно заново сохранить кэш пайплайна. • Новые инструкции в шейдере требуют повторного сохранения кэша. 36:05 Проверка обновлённого файла • Запуск приложения после обновления шейдера показывает новые результаты. • Размер файла кэша уменьшился с 8 до 7 КБ. 38:26 Загрузка кэша и проверка результатов • Загрузка кэша с диска проверяет, что драйвер замечает изменения. • Ввод 32 успешно загружается, 33 и 500 — нет. • Попытки с отрицательными числами также заканчиваются неудачей. 40:26 Роль кэша конвейера в играх • Кэш конвейера ускоряет работу сложных конвейеров. • В AAA-играх кэш используется для поддержания частоты кадров. • Драйвер может оптимизировать код не всегда оптимальным образом. 44:11 Заключение и рекомендации • Константы специализации контролируют поведение шейдера. • Для работы с курсом требуется Vulcan SDK и видеокарта с поддержкой Vulcan. • Примеры кода требуют поддержки трассировки лучей.

Иконка канала Ленинский Букварь
256 подписчиков
12+
2 просмотра
2 месяца назад
12+
2 просмотра
2 месяца назад

00:00 Введение в тему • Обсуждение кэш-памяти конвейера в CUDA Education. • Объяснение алгоритма без использования графического процессора. • Передача массива из 32 чисел на графический процессор. 00:59 Вычисления на графическом процессоре • Графический процессор выполняет вычисления по формуле Бине. • Получение результатов на стороне шейдера. • Передача результатов обратно на центральный процессор и вывод на экран. 01:52 Кэш-память конвейера • Создание и сохранение пайплайна на диск. • Преобразование пайплайна в машинный код. • Использование сохранённого пайплайна без повторной компиляции. 03:08 Логика вычислений • Анализ выходных данных для первых трёх входных данных. • Понимание, что выходные данные похожи, но не идентичны. • Влияние кэша на определение необходимости изменений конвейера. 04:50 Проблемы с кэшем • Драйвер может решить, что сохранённый конвейер не нуждается в изменениях. • Сохранение конвейера с определённым набором констант специализации. • Загрузка конвейера с диска и его использование. 08:31 Изменение констант специализации • Изменение константы специализации для запуска только первых двух элементов. • Получение всех 32 элементов при изменении значения на 2. • Ошибка при изменении значения на 3, 5, 7 или 9. 12:56 Оптимизация драйвера • Драйвер оптимизирует процесс, используя кэшированный конвейер. • Исправление ошибок во время выполнения. • Ненадёжность и опасность такого подхода. 13:53 Заключение • Драйвер следит за процессом и манипулирует данными. • Получение результата, как если бы было 32 элемента, даже если их меньше. • Вина драйвера в возникновении противоречивых ошибок. 14:51 Проверка поведения системы • Автор проверяет, как система обрабатывает данные, заменяя последовательность Фибоначчи на элементы буфера. • При вводе разных чисел система выдаёт только соответствующие значения. • Разделение значений помогает избежать ошибок при незначительных изменениях. 16:37 Добавление логики для сохранения кэша • Удаление файла по умолчанию и вставка нового файла для сохранения кэша пайплайна. • Новый файл сохраняет кэш пайплайна на диск после его создания. 18:22 Запуск приложения с сохранением кэша • Запуск приложения с сохранением файла кэша на диск. • Проверка размера файла кэша: 7782 байта. 19:00 Влияние количества конвейеров на размер файла • Увеличение количества создаваемых конвейеров увеличивает размер файла кэша. • Пример: при увеличении количества конвейеров с 1 до 10 размер файла увеличивается с 8 до 92 килобайт. 19:53 Работа с несколькими конвейерами • При наличии нескольких конвейеров с разными конфигурациями драйвер ищет нужный конвейер в большом файле. • Поиск происходит быстро и эффективно. 21:21 Создание кэша для единственного пайплайна • Создание кэша для пайплайна с константой специализации 32. • Сохранение кэша на диск. 22:11 Запуск приложения с кэшированным файлом • Запуск приложения, которое использует кэшированный файл. • Проверка наличия файла в кэше и его загрузка при необходимости. 23:49 Ограничения при компиляции пайплайна • Установка ограничения: если требуется компиляция нового пайплайна, создание VK Pipeline завершится ошибкой. • Загрузка кэшированного файла и проверка его соответствия требованиям. 26:27 Тестирование константы специализации • Изменение константы специализации на 33 приводит к ошибке, так как кэш не соответствует требованиям. • Проверка других значений константы специализации: 500, 30, 9, 5, 2. 31:08 Проблема с константой 2 • При выборе константы 2 драйвер считает файл хорошим, даже если первые два элемента не совпадают. • Ошибка возникает при выборе константы 3. 32:01 Оптимизация драйвера и кэш-конвейер • Драйвер оптимизирует код, используя кэш-конвейер. • Отрицательные числа вызывают сбой из-за несоответствия кэшированному файлу. • Кэш-конвейер преобразует код шейдера в упрощённый код для машинного языка. 33:52 Обновление шейдера и сохранение кэша • Для обновления шейдера необходимо перекомпилировать его. • После перекомпиляции нужно заново сохранить кэш пайплайна. • Новые инструкции в шейдере требуют повторного сохранения кэша. 36:05 Проверка обновлённого файла • Запуск приложения после обновления шейдера показывает новые результаты. • Размер файла кэша уменьшился с 8 до 7 КБ. 38:26 Загрузка кэша и проверка результатов • Загрузка кэша с диска проверяет, что драйвер замечает изменения. • Ввод 32 успешно загружается, 33 и 500 — нет. • Попытки с отрицательными числами также заканчиваются неудачей. 40:26 Роль кэша конвейера в играх • Кэш конвейера ускоряет работу сложных конвейеров. • В AAA-играх кэш используется для поддержания частоты кадров. • Драйвер может оптимизировать код не всегда оптимальным образом. 44:11 Заключение и рекомендации • Константы специализации контролируют поведение шейдера. • Для работы с курсом требуется Vulcan SDK и видеокарта с поддержкой Vulcan. • Примеры кода требуют поддержки трассировки лучей.

, чтобы оставлять комментарии