Инструменты31 августа 2026 г., 13:18 МСК🤖 Auto

Mesa 26.3: Оптимизация сортировки ускорит трассировку лучей

Valve внедрила в Mesa 26.3 кастомный алгоритм merge sort для ключей Мортона, что значительно ускоряет построение BVH и снижает нагрузку на видеопамять в открытых драйверах Vulkan.

Баннер новости 6408

Суть оптимизации

Разработчик из Valve Linux graphics team Нэнси Вокк (Natalie Vock) реализовала в Mesa 26.3 улучшенный алгоритм сортировки для ключей Мортона. Эти 1D-целочисленные значения критически важны для быстрого построения иерархических структур объемов (BVH) и повышения параллелизма на GPU. Ранее все основные открытые драйверы — Radeon RADV, Intel ANV, Turnip Adreno и Lavapipe — использовали единую функцию сортировки, которая оказалась неэффективной для небольших наборов данных.

Технические детали и метрики

Новый кастомный merge sort превосходит традиционный radix sort в сценариях с малым объемом данных. Ключевые преимущества новой реализации:

  • Отсутствие барьеров: Сортировка выполняется в рамках одного dispatch без промежуточных барьеров синхронизации.
  • Экономия VRAM: Алгоритм тесно интегрирован с кодом построения ускоренной структуры (AS build), что позволяет избежать лишних циклов записи и чтения несортированных ключей из видеопамяти.
  • Работа с shared memory: Для задач с количеством элементов менее 512 (при размере подгруппы 64 на RADV) все ключи генерируются и сортируются непосредственно в разделяемой памяти, не обращаясь к VRAM вообще (за исключением финальной записи результата).

Сравнение подходов

n
Характеристика Старый подход (Radix Sort) Новый подход (Merge Sort в Mesa 26.3)
Эффективность на малых данных Низкая Высокая («абсолютно уничтожает» radix sort)
Доступ к VRAM Частые циклы чтения/записи Минимизирован (только финальная запись)
Синхронизация
Промежуточные барьеры Отсутствуют (одиночный dispatch)
Применимость Универсально, но с оверхолдом Оптимизировано для малых BVH (<512 элементов)

Значение для пользователей

Патч был слит в Mesa 26.3 после трех месяцев тестирования и исправления ошибок. Это улучшение коснется всех открытых драйверов Vulkan, что особенно заметно скажется на производительности трассировки лучей в играх и приложениях, использующих небольшие или средние сцены, где накладные расходы на сортировку были ранее существенным узким местом.

Источник: Phoronix ↗