#096.1 Vulkan API: Кошмар синхронизации, часть 3: Барьеры computercloth.cpp
00:00 Введение и учебные пособия • Приветствие и анонс темы выпуска. • Упоминание учебных пособий №1 и №13 для работы с примерами. • Объяснение, что пример не требует трассировки лучей, но для её использования нужно поддерживать графические процессоры NVIDIA RTX и более поздние версии. 01:00 Функция рендеринга • Описание функции рендеринга, которая отображает объекты на экране. • Пример с холстом, падающим на сферу, и появлением ветра. 01:59 Визуализация процесса рендеринга • Добавление задержки для визуального отображения процесса рендеринга. • Без задержки рендеринг выполняется со скоростью более 1500 кадров в секунду. 02:58 Влияние задержки на рендеринг • Задержка приостанавливает вывод каждого кадра на экран. • При увеличении задержки частота кадров снижается. 06:05 Управление задержкой • Уменьшение задержки ускоряет рендеринг. • Без задержки рендеринг происходит максимально быстро. 07:59 Барьеры и синхронизация • Объяснение работы барьеров для синхронизации между центральным и графическим процессорами. • Барьеры сигнализируют центральному процессору о завершении работы графического процессора. 11:53 Применение барьеров • Использование барьеров для одновременного выполнения вычислительных и графических задач. • Примеры барьеров: compute.fences для вычислительных задач и weight fences для графических задач. 12:45 Отправка команд • Отправка команд на графический процессор через функцию VK submit. • Подчёркивание важности функций со строчной VK в Vulkan. 13:36 Отправка задачи на графический процессор • Отправляем вычислительную задачу на графический процессор через VKQ submit. • Явно указываем барьер compute.fences для организации передачи данных. • Барьер помогает организовать передачу данных с центрального процессора на графический. 14:35 Различие между барьером и семафором • Барьер не включён в информацию о передаче, это отдельный параметр для VKQ. • Семафор включён в информацию о передаче и управляет работой графического процессора. • Центральный процессор имеет отдельное пространство для ограждений. 15:30 Управление отправкой данных • Устанавливаем правила работы графического процессора через семафор и ограждение. • Используем функции VK wait for fences и VK reset fences для управления барьерами. • Параметр weight fences позволяет отправить fence-запрос для VKQ submit. 16:30 Разделение областей видимости • Разделяем вычислительные и графические операции с помощью скобок. • Скобки сохраняют область видимости переменных, предотвращая путаницу данных. • Ограждения для вычислений и графики задаются в разных местах. 19:47 Параллельное выполнение задач • Вычисления и отрисовка могут выполняться параллельно, поэтому нужны разные наборы барьеров. • Один барьер может ждать, пока другой находится в режиме сброса. • Разделяем задачи одну за другой для эффективного управления процессами. 20:57 Состояние барьеров • Барьер сначала находится в состоянии готовности, затем переходит в состояние сигнала. • Состояние сигнала означает, что процесс завершён и можно продолжать работу. • После завершения работы барьер сбрасывается в состояние отсутствия сигнала для следующей отправки. 24:20 Ошибка при неправильном использовании барьеров • Если не сбрасывать барьер в состояние отсутствия сигнала, приложение не запустится. • Vulcan требует, чтобы перед отправкой ограждения оно было в несигнальном состоянии. • Сброс барьера необходим для корректной обработки запроса на VKQ. 27:44 Управление процессом рендеринга • Обсуждение использования барьеров для управления процессом рендеринга. • Вопрос о порядке выполнения вычислений и отрисовки графики. • Идея поднятия графического блока над вычислительным для тестирования. 28:41 Проблемы с порядком выполнения • Опасения по поводу сбоя при попытке отрисовать непросчитанные данные. • Подтверждение, что вычисления всё равно выполняются раньше рендеринга. 29:15 Анализ ошибок • Появление ошибок при запуске программы. • Перестройка файла и повторный запуск. • Ошибка остаётся, несмотря на перестройку. 30:51 Логика выполнения задач • Объяснение логики передачи прав собственности на семейство Q. • Ошибка возникает из-за выполнения графических команд до вычислений. 34:21 Роль семафоров • Семафоры обеспечивают порядок выполнения работы. • Взаимодействие центрального и графического процессоров через семафоры. 36:11 Организация процесса • Использование семафоров для передачи данных между процессором и графическим процессором. • Важность правильного порядка выполнения команд. 38:01 Причины ошибок • Ошибка связана с семафорами и буфером памяти. • Необходимость ожидания завершения вычислений перед переходом к следующему этапу. 43:28 Заключение • Подведение итогов обсуждения ограждений, области видимости переменных и порядка выполнения операций. • Рекомендации по установке Vulcan API и примеров. • Упоминание о поддержке трассировки лучей графическим процессором.
00:00 Введение и учебные пособия • Приветствие и анонс темы выпуска. • Упоминание учебных пособий №1 и №13 для работы с примерами. • Объяснение, что пример не требует трассировки лучей, но для её использования нужно поддерживать графические процессоры NVIDIA RTX и более поздние версии. 01:00 Функция рендеринга • Описание функции рендеринга, которая отображает объекты на экране. • Пример с холстом, падающим на сферу, и появлением ветра. 01:59 Визуализация процесса рендеринга • Добавление задержки для визуального отображения процесса рендеринга. • Без задержки рендеринг выполняется со скоростью более 1500 кадров в секунду. 02:58 Влияние задержки на рендеринг • Задержка приостанавливает вывод каждого кадра на экран. • При увеличении задержки частота кадров снижается. 06:05 Управление задержкой • Уменьшение задержки ускоряет рендеринг. • Без задержки рендеринг происходит максимально быстро. 07:59 Барьеры и синхронизация • Объяснение работы барьеров для синхронизации между центральным и графическим процессорами. • Барьеры сигнализируют центральному процессору о завершении работы графического процессора. 11:53 Применение барьеров • Использование барьеров для одновременного выполнения вычислительных и графических задач. • Примеры барьеров: compute.fences для вычислительных задач и weight fences для графических задач. 12:45 Отправка команд • Отправка команд на графический процессор через функцию VK submit. • Подчёркивание важности функций со строчной VK в Vulkan. 13:36 Отправка задачи на графический процессор • Отправляем вычислительную задачу на графический процессор через VKQ submit. • Явно указываем барьер compute.fences для организации передачи данных. • Барьер помогает организовать передачу данных с центрального процессора на графический. 14:35 Различие между барьером и семафором • Барьер не включён в информацию о передаче, это отдельный параметр для VKQ. • Семафор включён в информацию о передаче и управляет работой графического процессора. • Центральный процессор имеет отдельное пространство для ограждений. 15:30 Управление отправкой данных • Устанавливаем правила работы графического процессора через семафор и ограждение. • Используем функции VK wait for fences и VK reset fences для управления барьерами. • Параметр weight fences позволяет отправить fence-запрос для VKQ submit. 16:30 Разделение областей видимости • Разделяем вычислительные и графические операции с помощью скобок. • Скобки сохраняют область видимости переменных, предотвращая путаницу данных. • Ограждения для вычислений и графики задаются в разных местах. 19:47 Параллельное выполнение задач • Вычисления и отрисовка могут выполняться параллельно, поэтому нужны разные наборы барьеров. • Один барьер может ждать, пока другой находится в режиме сброса. • Разделяем задачи одну за другой для эффективного управления процессами. 20:57 Состояние барьеров • Барьер сначала находится в состоянии готовности, затем переходит в состояние сигнала. • Состояние сигнала означает, что процесс завершён и можно продолжать работу. • После завершения работы барьер сбрасывается в состояние отсутствия сигнала для следующей отправки. 24:20 Ошибка при неправильном использовании барьеров • Если не сбрасывать барьер в состояние отсутствия сигнала, приложение не запустится. • Vulcan требует, чтобы перед отправкой ограждения оно было в несигнальном состоянии. • Сброс барьера необходим для корректной обработки запроса на VKQ. 27:44 Управление процессом рендеринга • Обсуждение использования барьеров для управления процессом рендеринга. • Вопрос о порядке выполнения вычислений и отрисовки графики. • Идея поднятия графического блока над вычислительным для тестирования. 28:41 Проблемы с порядком выполнения • Опасения по поводу сбоя при попытке отрисовать непросчитанные данные. • Подтверждение, что вычисления всё равно выполняются раньше рендеринга. 29:15 Анализ ошибок • Появление ошибок при запуске программы. • Перестройка файла и повторный запуск. • Ошибка остаётся, несмотря на перестройку. 30:51 Логика выполнения задач • Объяснение логики передачи прав собственности на семейство Q. • Ошибка возникает из-за выполнения графических команд до вычислений. 34:21 Роль семафоров • Семафоры обеспечивают порядок выполнения работы. • Взаимодействие центрального и графического процессоров через семафоры. 36:11 Организация процесса • Использование семафоров для передачи данных между процессором и графическим процессором. • Важность правильного порядка выполнения команд. 38:01 Причины ошибок • Ошибка связана с семафорами и буфером памяти. • Необходимость ожидания завершения вычислений перед переходом к следующему этапу. 43:28 Заключение • Подведение итогов обсуждения ограждений, области видимости переменных и порядка выполнения операций. • Рекомендации по установке Vulcan API и примеров. • Упоминание о поддержке трассировки лучей графическим процессором.




