Обзор

Поддерживаемые аппаратные средства и драйверы

Компиляция OpenCL времени исполнения

Выбор устройств для использования при визуализации

Балансировка загрузки GPU

Возможности, поддерживаемые GPU

Наиболее общие ошибки OpenCL

Ссылки

 

 

Обзор

Визуализация с использованием GPU позволяет V-Ray RT выполнять вычисления, связанные с трассировкой лучей, на установленных в системе GPU вместо CPU. Поскольку GPU специально разработаны для выполнения массовых параллельных вычислений, они могут ускорить процесс визуализации на порядок.

 

Прим. перев.:

CPU - central processing unit (англ.) - центральное процессорное устройство, центральный процессор.

GPU - graphics processing unit (англ.) - графический процессор. Обычно расположен на видеокарте или на специальной плате расширения.

 

Для включения визуализации с использованием GPU в настройках V-Ray RT для параметра Engine type выберите значение OpenCL (singe kernel).

Поддерживаемые аппаратные средства и драйверы

V-Ray RT для GPU базируется на OpenCL (для дополнительной информации об OpenCL см. ниже раздел Ссылки) и по идее должен работать с любыми аппаратными средствами, совместимыми с OpenCL. Однако, на момент написания этой статьи (6 сентября 2010), только реализация OpenCL от nVidia достаточно разработана для правильной работы V-Ray RT для GPU. Для лучших результатов рекомендуется использовать карты ускорителей с использованием архитектуры Fermi и с объемом видеопамяти не менее 1 Гб. Более старые карты также будут работать, но производительность будет значительно ниже. Поддерживается визуализация с использованием нескольких GPU, и по умолчанию V-Ray RT для GPU будет использовать все доступные устройства, поддерживающие OpenCL.

 

V-Ray RT для GPU тестировался со следующими графическими картами (он будет также работать со многими другими):

 

nVidia GeForce 480 GTX;
nVidia GeForce 295;
nVidia GeForce 9700M;
nVidia GeForce 325M

 

Тестировались версии графических драйверов от nVidia 197 и 258. Драйверы версии 258 компилировали и загружали код OpenCL значительно быстрее, чем предыдущие версии.

 

Если V-Ray RT для GPU не может найти в системе устройств, поддерживающих OpenCL (далее - "устройства OpenCL"), он просто вернется обратно к коду для CPU. Что бы посмотреть использует ли GPU сервер визуализации V-Ray, проверьте его консольный вывод.

Компиляция OpenCL времени исполнения

В общем случае, из соображений переносимости, код OpenCL компилируется во время выполнения программы (также как шейдеры OpenGL, написанные на GLSL, или шейдеры DirectX, написанные на HLSL), в противоположность коду CUDA, который сначала предкомпилируется а потом сохраняется в двоичном формате внутри исполняемой программы. Это позволяет коду OpenCL быть переносимым и наиболее оптимизированным для конкретных аппаратных средств, на которых он исполняется. За это приходится расплачиваться тем, что компиляция может занимать время, зависящее от сложности кода OpenCL, количества устройств OpenCL в системе, самого компилятора OpenCL и версии драйвера. К счастью, двоичная версия откомпилированного кода OpenCL может быть кэширована и позднее загружена гораздо быстрее.

 

В первый раз, когда вы устанавливаете V-Ray RT GPU и выполняете визуализацию с GPU, V-Ray будет компилировать код OpenCL для ваших аппаратных средств. Это может занять от 30 секунд до нескольких минут в зависимости от количества графических карт и версии драйвера. В окне консоли сервера визуализации V-Ray RT вы увидите что-то похожее:

 

[2010/Sep/6|21:05:44] Running RTEngine
[2010/Sep/6|21:05:44] Initializing OpenCL renderer (single kernel version)...
[2010/Sep/6|21:05:44] Number of OpenCL devices found: 1
[2010/Sep/6|21:05:44] OpenCL device list:
[2010/Sep/6|21:05:44]   Device 0: GeForce GTX 480
[2010/Sep/6|21:05:44] VRAY_OPENCL_DEVICES environment variable not specified; using all available devices
[2010/Sep/6|21:05:44] cl_nv_compiler_options supported!
[2010/Sep/6|21:05:44] Building OpenCL trace program...
[2010/Sep/6|21:06:34] OpenCL program built in 49.156 s

 

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

 

[2010/Sep/6|21:46:54] Building OpenCL trace program...
[2010/Sep/6|21:46:54] OpenCL program built in 0.016 s

 

Выбор устройств для использования при визуализации

Вы можете не захотеть использовать все доступные устойства OpenCL для визуализации, особенно, если у вас есть несколько GPU и вы хотите оставить один из них свободным для работы с пользовательским интерфейсом. Есть два способа это сделать. Первый - использовать поставляемый инструмент c GUI, который можно найти в Start Menu > Programs > Chaos Group > V-Ray RT Adv for 3ds Max > Select OpenCL devices for V-Ray RT:

 

 

Другой способ - использовать переменную среды VRAY_OPENCL_DEVICES. Сначала запустите на GPU простую сцену и в окне консоли сервера визуализации V-Ray RT посмотрите список устройств OpenCL. Например:

 

[2010/Sep/6|21:05:44] Number of OpenCL devices found: 2
[2010/Sep/6|21:05:44] OpenCL device list:
[2010/Sep/6|21:05:44]   Device 0: GeForce GTX 480
[2010/Sep/6|21:05:44]   Device 1: GeForce GTX 480
[2010/Sep/6|21:05:44] VRAY_OPENCL_DEVICES environment variable not specified; using all available devices

 

Если вы хотите, что бы V-Ray RT использовал только некоторые из доступных устройств для визуализации, создайте системную переменную среды (апплет System в Control Panel) с именем VRAY_OPENCL_DEVICES и укажите список номеров устройств (через запятую), которые вы хотите использовать. Например:

 

VRAY_OPENCL_DEVICES=0,1

 

здесь будут использоваться оба устройства.

 

VRAY_OPENCL_DEVICES=1

 

а здесь будет использоваться только второе устройство.

 

Обратите внимание, что независимо от того, какой метод вы используете для выбора устройств Open CL, вам необходимо перезапустить сервер визуализации V-Ray RT (если он работает) для того, что бы изменения вступили в силу. Если сервер визуализации V-Ray RT запускается как служба Windows, вам необходимо ее остановить и запустить снова посредством апплета Services из раздела Administrative Tools в Control Panel.

Балансировка загрузки GPU

Если в вашей системе только один GPU, вы можете заметить, что пользовательский интерфейс становится медленным и невосприимчивым в то время, когда V-Ray RT использует GPU для визуализации. Для смягчения этой проблемы уменьшите параметры Rays per pixel и/или Ray bundle size в группе Performance настроек визуализатора V-Ray RT в диалоге 3ds Max Render Setup. Например, вы можете попробовать значения типа 128/8 или 128/4. Это будет разбивать данные, передаваемые в GPU, на более короткие цепочки, и запросы пользовательского интерфейса могут быть обработаны быстрее. Однако при этом уменьшится скорость визуализации. Включите отображение статистики для проверки отличия скорости визуализации и найдите оптимальные значения для вашей системы.

Возможности, поддерживаемые GPU

При выполнении на GPU, V-Ray использует упрощенную версию визуализатора V-Ray, которая поддерживает только подмножество всех возможностей кода, используемого для CPU. Поддерживаемые возможности перечислены ниже. Все остальные возможности скорее всего работать не будут.

Геометрия

Поддерживаются только триангулированные меши.

Источники света

Обратите внимание, что даже для поддерживаемых источников света, реализована работа только подмножества параметров источника света.

 

Материалы

Текстуры

Поддерживаются только текстуры типа Bitmap и карты VRayHDRI и VRaySky. Все текстуры, загруженные в GPU, пересэмплируются в разрешение, указанное параметром GPU texture size в настройках V-Ray RT в диалоге Render Setup.

Камеры

Текстуры для окружающей среды

Поддерживается только текстура для фона, указанная в диалоге Environment. Она используется для фона (background), GI, отражений и преломлений. Поддерживабтся только типы преобразований (mapping type): spherical, mirror ball и angular environment.

Наиболее общие ошибки OpenCL

Ниже приводится список наиболее общих ошибок OpenCL, которые вы можете получить в окне консоли сервера визуализации V-Ray RT:

 

Error -4 at line XXX, in file ./src/ocl_tracedevice.cpp !!!

 

Эта ошибка означает, что для полной визуализации на GPU не хватает объема видеопамяти. Для решения этой проблемы вы можете сделать следующее:

Ссылки

 


Хостинг от uCoz