1

В попытке лучше понять программирование на GPU и GPU, я хотел бы получить лучшее представление о шейдерах и о том, как они реализованы в GPU. Существует ли связь 1: 1 между шейдерной программой и ядром графического процессора? Так работает ли программа вершинного шейдера на одном ядре, в то время как фрагментный шейдер работает на другом ядре? Затем данные передаются из ядра вершинного шейдера в ядро фрагментного шейдера? Или каждое отдельное ядро на GPU отвечает за все шейдеры и весь графический конвейер? Это означает, что одно ядро GPU содержит вершинный шейдер, тесселяционный шейдер, геометрический шейдер и т.д., И каждое ядро будет выводить конечный пиксель. Любая информация, которая поможет укрепить мою психическую картину, будет полезна.

1 ответ1

0

Точное соотношение зависит от карты и водителя. Шейдерные программы преобразуются из общих форм (например, OpenGL или DirectX) во что-то, что карта может запускать напрямую, что-то вроде компиляции точно в срок для языков типа Java, которые используют байт-код.

Таким образом, отношения зависят от характера программы и карты. Карте может потребоваться назначить несколько ядер, если программа большая и сложная, но, скорее всего, одно ядро будет запускать много экземпляров шейдера на нескольких потоковых процессорах.

Современные карты назначают работу динамически, поэтому редко встречаются отношения 1:1. Каждое ядро имеет несколько потоковых процессоров, поэтому может обрабатывать несколько шейдеров одновременно, если они не слишком сложны.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .