Как мне разработать шейдер GLSL для работы на CrossFire / SLI

Если я пишу визуализатор с помощью glsl, как я могу гарантировать, что он будет использовать больше графических процессоров? Прямо из коробки это работает только на одном, какие шаги / дизайн программного обеспечения позволят запускать пиксельный шейдер параллельно более чем на одной карте?

4

Решение

Из комментариев в ответе Джаррода это выглядит так: «проблема», с которой вы сталкиваетесь, это режим AFR (рендеринг альтернативных кадров) по сравнению с режимом SFR (рендеринг разделенных кадров), который является проблемой настройки режима драйвера.

В режиме AFR драйвер отправляет каждый полный кадр в один графический процессор и отправляет альтернативные кадры в другой графический процессор. Это отлично подходит для игр и анимаций, где вы больше всего заинтересованы в максимизации частоты кадров и не особо заботитесь о задержке кадров. Таким образом, использование графических процессоров обеспечивает ускорение SLI в 2 раза в секунду при минимальных усилиях. Но если вы рисуете только один кадр (как кажется из вашего комментария), он будет использовать только один графический процессор.

В режиме SFR драйвер будет разделять каждый кадр и отображать часть каждого кадра на каждом графическом процессоре. Проблема с этим режимом заключается в том, что оба графических процессора должны выполнить все настройки для каждого кадра, поэтому вы не получите ускорение в 2 раза. Фактически, почти единственное, что будет ускорено, это фрагментные шейдеры (так как каждый графический процессор будет выполнять половину фрагментов), так что, если только 50% времени рендеринга (одного графического процессора) составляют фрагментные шейдеры, вы получите только (при лучше всего) ускорение на 33%. Вы можете получить меньше, так как разделение может быть несбалансированным (так что один GPU заканчивается большинством фрагментов).

Поскольку SFR обычно медленнее, AFR обычно используется по умолчанию. Вы можете управлять AFR против SFR через панель управления.

3

Другие решения

В GLSL требуется ноль шагов. Драйвер SLI / crossfire обеспечивает распределение рабочей нагрузки между графическими процессорами. То же самое для nVidia Surround и AMD Eyefinity: что касается шейдера, это просто большая цель рендеринга.

Смотрите эти слайды от nVidia: SLI в OpenGL, особенно слайды «Вещи, мешающие SLI».

Вы хотите убедиться, что ваш цикл рендеринга правильно настроен (то есть вызывается SwapBuffers), и что вы по крайней мере дважды буферизуетесь для режима SLI режима AFR.

3

По вопросам рекламы [email protected]