Любители повозиться с трёхмерной компьютерной графикой наверняка слышали о возможности рендерить сцены с помощью процессора видеокарт. В этой статье пойдёт речь о настройке программного окружения и редактора Blender для реализации этой возможности.

Основа всего - программно-аппаратная технология CUDA, созданная в недрах компании NVidia и применяемая в современных видеокартах GeForce.

Что даёт использование CUDA? Для сравнения, ниже представлены результаты рендеринга одной и той же сцены и одинаковыми параметрами. Одно лишь различие - в первом случае для рендеринга используется центральный процессор, а во втором - процессор видеокарты.

Результат рендеринга сцены посредством Cycles и центрального процессора.
Время обработки: 443 секунды (7 минут 23 секунды).
Результат рендеринга сцены посредством Cycles и технологии CUDA, использующей процессор видеокарты.
Время обработки: 197 секунд (3 минуты 17 секунд).

Как видно, графический результат практически одинаковый, а время на построение почти в два раза меньше. Если это анимация или какой-то большой проект, то время на рендеринг можно существенно сократить, используя CUDA.

Практика:

Дано: желание; компьютер с видеокартой от NVidia (поддерживающей CUDA!); установленный и настроенный дистрибутив Ubuntu 14.04; установленный редактор 3D-графики Blender.
Задача: настроить программно-аппаратный рендеринг в Blender.
Уровень подготовки пользователя: средний. Так как дело будет касаться установки драйверов для видеокарты, позаботьтесь об альтернативном доступе в сеть Интернет на тот случай, если с установкой будут проблемы.
Решение:

Установка дополнительных пакетов

Удобным для себя способом устанавливаем следующие пакеты: nvidia-331-updates, nvidia-settings, nvidia-cuda-toolkit , а также их зависимости. У автора, на момент написания статьи, в репозиториях Ubuntu была готова версия 331 закрытых драйверов для NVidia. Не исключено, что будут версии по-новее - пробуйте ставить последнюю, а в случае проблем, пробуйте ставить предыдущие версии. Автор рекомендует дополнительно установить пакет openssh-server на тот случай, если возникнет проблема с работой видеодрайвера и не будет возможности работать даже в консольном режиме - аварийно, можно будет зайти с другого компьютера по сети.

Устанавливаем пакеты:

# apt-get install nvidia-331-updates nvidia-settings nvidia-cuda-toolkit openssh-server

После установки - перезагрузите компьютер.

Проверить работоспособность аппаратного закрытого драйвера можно через графическую утилиту "NVIDIA X Server Settings" или посмотреть наличие загруженного модуля nvidia:

Информация о видеокарте, предоставляемая графической утилитой "NVIDIA X Server Settings"
# lsmod |grep nvidia
nvidia               9648068  29 
drm                   243792  2 nvidia

Если модули загружаются и утилита показывает информацию по драйверу и видеокарте, то переходим к настройке Blender`а.

Настройка и проверка

Подразумевается, что пользователь ориентируется в менюшках Blender`а. Запускаем Blender и переходим в меню "User Preferences".

Нажмите для увеличения

Далее сдвигаем нижнюю границу верхнего меню и переходим в "System". Спускаемся вниз этой страницы и слева находим секцию "Compute Device". Должна появиться кнопка "CUDA" (позиция 1). Активируем её и ниже должна появиться модель карты (позиция 2). Далее сохраняем настройки путём нажатия на "Save User Settings".

Нажмите для увеличения

Перезагружаем Blender. Открываем какой-нибудь тестовый проект и переходим в секцию "Rendering" (позиция 1).
В качестве тестового проекта Вы можете взять cornell-box-cycles, скачав отсюда или с wiki-раздела сайта nix.zeya.org.

Нажмите для увеличения

Выбираем метод рендеринга "GPU compute" (позиция 2) и сам рендерер "Cycles Render" (позиция 3). Запускаем рендеринг и наблюдаем за ходом процесса. Для сравнения, проделываем проверку с рендерингом только на центральном процессоре. На этом настройка завершена.

Особенность в производительности

Автор повторил настройку на другом компьютере, но уже с современным процессором. Результат оказался парадоксальным:

Результат рендеринга сцены посредством Cycles и центрального процессора.
Время обработки: 112 секунд (1 минута 52 секунды).
Результат рендеринга сцены посредством Cycles и технологии CUDA, использующей процессор видеокарты.
Время обработки: 202 секунды (3 минуты 22 секунд).

На стенде использовался процессор с такими характеристиками:

cat /proc/cpuinfo
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 58
model name	: Intel(R) Pentium(R) CPU G2010 @ 2.80GHz
stepping	: 9
microcode	: 0x15
cpu MHz		: 1600.000
cache size	: 3072 KB
physical id	: 0
siblings	: 2
core id		: 0
cpu cores	: 2
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt tsc_deadline_timer xsave lahf_lm arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms
bogomips	: 5587.41
clflush size	: 64
cache_alignment	: 64
address sizes	: 36 bits physical, 48 bits virtual
power management:

processor	: 1
vendor_id	: GenuineIntel
cpu family	: 6
model		: 58
model name	: Intel(R) Pentium(R) CPU G2010 @ 2.80GHz
stepping	: 9
microcode	: 0x15
cpu MHz		: 1600.000
cache size	: 3072 KB
physical id	: 0
siblings	: 2
core id		: 1
cpu cores	: 2
apicid		: 2
initial apicid	: 2
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt tsc_deadline_timer xsave lahf_lm arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms
bogomips	: 5587.41
clflush size	: 64
cache_alignment	: 64
address sizes	: 36 bits physical, 48 bits virtual
power management:

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

В данном случае, рендеринг посредством центрального процессора на порядок быстрее, чем через видеокарту. Если свести результаты обоих тестов, то получается такая картина:

Процессор Кол-во ядер Bogomips Размер кэша, Кб Видеокарта Время рендеринга CPU, сек. Время рендеринга CUDA, сек.
Intel Celeron CPU E1500 @ 2.20GHz 2 4388.89 512 GeForce GT630, 4ГБ 443 197
Intel Pentium CPU G2010 @ 2.80GHz 2 5587.41 3072 GeForce GT630, 2ГБ 112 202

Обе машины показали практически одинаковые значения времени рендеринга через CUDA - можно предположить, что это физический предел видеокарты.

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

Смотрите также

Печать/экспорт