CUDA на адаптере Tesla и полноэкранное окно DX на другом адаптере NVIDIA - PullRequest
0 голосов
/ 06 апреля 2011

У меня есть приложение, которое выполняет некоторую обработку с помощью CUDA на адаптере Tesla X2050. В моей системе также есть Qudaro4000, который для этой цели не используется приложением. Кроме того, у меня есть другая видеокарта Geforce2xx, которая используется для отображения шаблонов. Часть, которая отображает шаблоны, представляет собой просто код, который создает полноэкранное устройство DX9 на адаптере GeForce2xx и отображает разные шаблоны в каждом кадре дисплея. Для этого ему нужно отобразить VSynched, и он не должен пропустить или пропустить ни одного шаблона. У меня проблема в том, что когда я включаю VSync, вся обработка CUDA становится чрезвычайно медленной. Если я отключаю VSynch, то получаю разрывы в шаблонах, которые не нужны. Как я могу объединить обработку CUDA и отображение паттернов? Ради контекста это делается для системы структурированного освещения, в которой один адаптер подключен к проектору, который проецирует шаблоны.

Изменить 10.4.2011: Я обнаружил, почему последовательность идеально проецируется на один компьютер и почему изображения время от времени останавливаются на более мощном компьютере. Разница в том, что у каждого есть встроенный графический процессор Intel, а у другого - 3 графических процессора NVIDIA. Что ж, для этой конкретной задачи встроенный графический процессор Intel делает работу намного лучше, чем любой из графических процессоров NVIDIA. Это может быть из-за разных драйверов, и я смотрю, есть ли какая-либо комбинация опций \ параметров, которую нужно установить в драйвере NVIDIA, чтобы иметь ту же идеальную производительность, что и у Intel GPU.

Спасибо.

Офер.

Ответы [ 2 ]

1 голос
/ 15 июня 2011

Я решил эту проблему некоторое время назад.

Причина, по которой эта проблема возникает, заключается в том, что VSync также останавливает вычисления CUDA, он останавливает весь графический процессор.Итак, есть два решения:

  1. Если у вас есть Tesla, то вы можете установить Tesla в режим TCC, который является эксклюзивным режимом.Это означает, что VSync в графическом процессоре (A Geforce или Quadro) не будет останавливать вычисления Tesla и CUDA на нем.

  2. Попробуйте вызвать операцию останова VSync как можно позже иливместо остановки vsync выполните тестовую команду.

В DX9 команда Present имеет два режима, которые либо блокируют (GPU), и ожидают VSync или тестируют, если Present был успешным,если нет, то он не останавливается.

С помощью комбинации сна, измерения времени с последнего кадра или проверки, успешно ли было выполнено «Присутствие», можно сделать останов графического процессора как можно меньшим из VSync.,Таким образом, я смог запустить декодирование структурированного света CUDA + Проецирование рисунков в DX9 + 3D-дисплей на одном GPU (GeForce 320M).

0 голосов
/ 06 апреля 2011

Одним из решений будет буферизация созданных изображений и их последовательное отображение.

Как вы используете контекст DX9?Вы копируете результат 2050 в контекст DX9?Используете ли вы AsyncCalls на стороне вычислений?

...