Особенности шедулера в NVidia
1. Работает 2 очереди, зеленое - пиксельный шейдер, оранжевое - асинхроный компьют шейдер. На NVidia когда активна графическая очередь, на асинхронную компьют очередь выделяется не более 30% варпов.
2. По какой-то причине графическая очередь вытесняет компьют очередь.
3. Заканчивается рендер пасс и начинается обновление юниформ для следующего рендер пасса. Небольшой всплеск похож на рендеринг до фрагментного шейдера, который ждет обновление юниформ.
Барьер никак не затрагивает компьют очередь, асинхронный компьют как раз и нужен чтобы заполнять такие пустоты, но запуск шейдеров не происходит. Как и в начале (1) шедулер раскидывает графику по всем варпам и только потом добавляет к ним асинхронный компьют.
4. Начинаются короткие рендер пассы, разделенные барьерами. При этом на компьют выделяется не более 30% варпов, даже когда часть варпов простаивает (светло-сервый).
5. При более долгом простое (полная остановка графической очереди), компьют очередь занимает более 30%.
В итоге обновление юниформ буфера между рендер пассами может вызвать простой ГП на 0.3мс и даже асинхронные очереди не заполняют простаивающие варпы.
Более правильный способ - обновлять юниформы один раз в начале кадра.
#gpu_sync #nvidia
1. Работает 2 очереди, зеленое - пиксельный шейдер, оранжевое - асинхроный компьют шейдер. На NVidia когда активна графическая очередь, на асинхронную компьют очередь выделяется не более 30% варпов.
2. По какой-то причине графическая очередь вытесняет компьют очередь.
3. Заканчивается рендер пасс и начинается обновление юниформ для следующего рендер пасса. Небольшой всплеск похож на рендеринг до фрагментного шейдера, который ждет обновление юниформ.
Барьер никак не затрагивает компьют очередь, асинхронный компьют как раз и нужен чтобы заполнять такие пустоты, но запуск шейдеров не происходит. Как и в начале (1) шедулер раскидывает графику по всем варпам и только потом добавляет к ним асинхронный компьют.
4. Начинаются короткие рендер пассы, разделенные барьерами. При этом на компьют выделяется не более 30% варпов, даже когда часть варпов простаивает (светло-сервый).
5. При более долгом простое (полная остановка графической очереди), компьют очередь занимает более 30%.
В итоге обновление юниформ буфера между рендер пассами может вызвать простой ГП на 0.3мс и даже асинхронные очереди не заполняют простаивающие варпы.
Более правильный способ - обновлять юниформы один раз в начале кадра.
#gpu_sync #nvidia
Advanced API Performance: Async Compute and Overlap
Статья от NVidia, рассказывают как правильно использовать async compute, как профилировать.
#gpu_sync #nvidia
Статья от NVidia, рассказывают как правильно использовать async compute, как профилировать.
#gpu_sync #nvidia
Advanced API Performance: Async Copy
Рассказывают как оптимизировать стриминг ресурсов через асинхронную очередь.
#gpu_sync #nvidia
Рассказывают как оптимизировать стриминг ресурсов через асинхронную очередь.
#gpu_sync #nvidia
NVIDIA Technical Blog
Advanced API Performance: Async Copy
These quick recommendations give guidelines on how to arrange your work queues to maximize your gains with async copy on NVIDIA GPUs.
Ada GPU architecture
Описание архитектуры RTX 40xx.
Старшая модель содержит 12 GPC (graphics processing clusters), в каждом кластере свой raster engine, что в теории позволяет рисовать параллельно, но эта фича давно заблокирована в драйверах.
Для трассировки лучей добавили новые возможности:
* Opacity Micromap Engine - используется для ускорения альфа теста, то есть пустые области в геометрии теперь обрабатываются в железе, а не в шейдере (расширение VK_EXT_opacity_micromap).
* Displaced MicroMesh Engine - оптимизирует сложную геометрию, 10х быстрее строится BVH, 20х компактнее.
* Shader Execution Reordering - как следует из описания эта фича только для трассировки и, возможно, требует ручного управления, зато в 2 раза ускоряет вторичные лучи.
Про DLSS 3 пока нечего сказать, надо самому тестировать, прошлые версии местами давали сильные артефакты.
Прошлые модели: Ampere, Turing, Pascal
#nvidia
Описание архитектуры RTX 40xx.
Старшая модель содержит 12 GPC (graphics processing clusters), в каждом кластере свой raster engine, что в теории позволяет рисовать параллельно, но эта фича давно заблокирована в драйверах.
Для трассировки лучей добавили новые возможности:
* Opacity Micromap Engine - используется для ускорения альфа теста, то есть пустые области в геометрии теперь обрабатываются в железе, а не в шейдере (расширение VK_EXT_opacity_micromap).
* Displaced MicroMesh Engine - оптимизирует сложную геометрию, 10х быстрее строится BVH, 20х компактнее.
* Shader Execution Reordering - как следует из описания эта фича только для трассировки и, возможно, требует ручного управления, зато в 2 раза ускоряет вторичные лучи.
Про DLSS 3 пока нечего сказать, надо самому тестировать, прошлые версии местами давали сильные артефакты.
Прошлые модели: Ampere, Turing, Pascal
#nvidia