Обзор

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

Компиляция 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) или CUDA (single kernel).

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

V-Ray RT для GPU имеет два внутренних интерфейса (или движка). Первый основан на OpenCL (для дополнительной информации об OpenCL см. ниже раздел Ссылки), а второй - на платформе nVidia CUDA.

 

Движок OpenCL по идее должен работать с любыми аппаратными средствами, совместимыми с OpenCL. Однако, на момент написания этой статьи (28 апреля 2012), только реализация OpenCL от nVidia достаточно разработана для правильной работы V-Ray RT для GPU. Для лучших результатов рекомендуется использовать карты ускорителей с использованием архитектуры Fermi или Kepler, с объемом видеопамяти не менее 2 Гб. Более старые карты также будут работать, но производительность будет значительно ниже. Вследствие того, что для компиляции кода OpenCL необходим большой объём оперативной памяти, в настоящее время это работает только на 64-битной версии V-Ray RT. Может быть возможным запуск движка OpenCL на программной реализации (для центрального процессора) OpenCL от AMD и Intel, однако это пока недостаточно протестировано.

 

Движок CUDA поддерживается только на 64-битной версии V-Ray RT для карт от nVidia с использованием архитектуры Fermi или Kepler. Рекомендуется использовать движок CUDA для GPU производства nVidia.

 

Поддерживается визуализация с использованием нескольких GPU, и по умолчанию V-Ray RT для GPU будет использовать все доступные устройства, поддерживающие OpenCL/CUDA. См. ниже раздел о том, как выбрать устройства, на которых будет запущен V-Ray RT GPU.

 

V-Ray RT для GPU тестировался на нескольких графических картах, включая:

 

nVidia GeForce 680 GTX;

nVidia GeForce 580 GTX;

nVidia GeForce 590 GTX;

nVidia GeForce 570;

nVidia GeForce 480 GTX;

nVidia Tesla C2050;

nVidia Quadro 2000M;

 

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

Компиляция 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

 

Такая компиляция времени выполнения не требуется для движка CUDA и визуализация нечинается немедленно.

 

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

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

 

 

 

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

 

Обратите внимание, что этот инструмент определяет устройства как с поддержкой OpenCL, так и с поддержкой CUDA.

Балансировка загрузки 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. Поддерживаемые возможности перечислены ниже. Все остальные возможности скорее всего работать не будут.

Геометрия

Поддерживаются триангулированные меши и объекты VRayProxy. Также поддерживаются экземпляры (instance) объектов - см. раздел Экземпляры объектов и Forest Pro.

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

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

 

Материалы

Текстуры

Поддерживаются текстуры типа Bitmap и карты Falloff, VRayHDRI и VRaySky. Другие процедурные текстуры (Checker, Noise, etc.) поддерживаются посредством их "вжигания" (baking), при условии, что они имеют тип преобразования Explicit UVW. Если включена опция Resize textures for GPU, то все текстуры, загруженные в GPU, пересэмплируются в разрешение, указанное параметром GPU texture size в настройках V-Ray RT в диалоге Render Setup. Также поддерживаются текстуры Mix и ColorCorrection.

Камеры

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

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

 

Смазывание при движении (Motion blur)

Поддерживается эффект смазывания при движении при условии, что включена опция Motion blur в V-Ray RT и вычисление смазывания при движении разрешено в настройках чистового визуализатора (production renderer) или физической камеры.

 

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

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

 

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

 

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

Ссылки

 


Хостинг от uCoz