Запуск образцов CUDA GUI с пассивного (неактивного) графического процессора

Мне удалось успешно запустить программы CUDA на GeForce GTX 750 Ti при использовании AMD Radeon HD 7900 в качестве устройства рендеринга (фактически подключенного к дисплею) с использованием это руководство; например, пример Сложение векторов работает хорошо. Однако я могу запускать только приложения, которые не производят визуальный вывод. Например, пример Mandelbrot CUDA не запускается и завершается с ошибкой:

Error: failed to get minimal extensions for demo:
  Missing support for:  GL_ARB_pixel_buffer_object
This sample requires:
  OpenGL version 1.5
  GL_ARB_vertex_buffer_object
  GL_ARB_pixel_buffer_object

Ошибка возникает из-за запроса glewIsSupported() для этих расширений. Есть ли способ запустить приложение, подобное этим примерам CUDA, чтобы операции CUDA выполнялись на GTX как обычно, а окно рисовалось на карте Radeon? Я попытался убедить Nsight Eclipse запустить сеанс удаленной отладки с моим собственным компьютером в качестве удаленного хоста, но что-то еще сразу не удалось. Это должно на самом деле работать? Можно ли использовать VirtualGL?


person freudberg    schedule 12.02.2015    source источник


Ответы (1)


В некоторых примерах NVIDIA CUDA, использующих графику, таких как пример Mandelbrot, реализована эффективная стратегия рендеринга: они привязывают структуры данных OpenGL (пиксельные вершинные объекты в случае Mandelbrot) к массивам CUDA, содержащим данные моделирования, и визуализируют их непосредственно из графический процессор. Это позволяет избежать копирования данных с устройства на хост в конце каждой итерации моделирования и приводит к молниеносной фазе рендеринга.

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

Это не исключает возможности модификации образцов для работы с несколькими графическими процессорами. Должна быть возможность копировать данные моделирования обратно на хост в конце каждой итерации, а затем визуализировать их с помощью пользовательского метода или даже отправлять их по сети. Для этого потребуется (1) изменить код, разделив и выполнив независимые этапы моделирования и рендеринга, и (2) принять большие потери кадров в секунду, которые могут возникнуть в результате этого.

person Bernardino Frola    schedule 12.02.2015