Визуализация на GPU (GPU rendering)

Рендеринг на GPU позволяет использовать графическую карту для рендеринга вместо центрального процессора. Это может сильно ускорить рендеринг, поскольку современные видеокарты спроектированы для выполнения множества однотипных вычислений. С другой стороны, они также имеют некоторые ограничения при рендеринге сложных сцен из-за меньшего количества доступной памяти, а так же проблемы с отзывчивостью интерфейса, если одна и та же видеокарта используется как для обычного отображения, так и для рендеринга.

Чтобы включить рендеринг на GPU, перейдите в Настройки ‣ Система ‣ Устройства рендера Cycles и выберите CUDA, OptiX, HIP, oneAPI или Metal. Затем необходимо настроить каждую сцену для использования GPU при рендеринге в Свойства ‣ Рендер ‣ Устройство.

Технологии рендеринга

Blender поддерживает различные технологии рендеринга на GPU в зависимости от конкретного производителя графического процессора и операционной системы.

CUDA – NVIDIA

CUDA поддерживается в Windows и Linux и требует видеокарт Nvidia с вычислительными возможностями 3.0 и выше. Чтобы убедиться, что ваш GPU поддерживается, см. «список видеокарт Nvidia» с вычислительными возможностями и поддерживаемыми видеокартами.

OptiX – NVIDIA

OptiX поддерживается в Windows и Linux и требует наличия видеокарт Nvidia с вычислительной мощностью 5.0 и выше, а также драйвера версии не ниже 495.89. Чтобы убедиться, что ваш графический процессор поддерживается, см. «список видеокарт Nvidia».

OptiX использует аппаратное ускорение трассировки лучей в видеокартах RTX для повышения производительности.

Ускорение графического процессора для OpenImageDenoise доступно для вычислительных возможностей версии 7.0 и выше, что включает все карты NVIDIA RTX.

HIP – AMD

HIP поддерживается в Windows и Linux и требует видеокарту AMD с архитектурой RDNA1 или новее. Поддерживаются как дискретные GPU, так и APU.

Поддерживаемые GPU включают в себя:

  • Radeon RX 5000 серии

  • Radeon RX 6000 серии

  • Radeon RX 7000 серии

  • Radeon Pro W6000 серии

Минимальные версии драйверов:

  • Windows: Radeon Software 21.12.1 или Radeon PRO Software 21.Q4

  • Linux: Radeon Software 23.40 or ROCm 6.0

Более подробную информацию о видеокартах AMD и их архитектурах можно найти на веб-сайте AMD.

Экспериментальная аппаратная поддержка трассировки лучей доступна с последними драйверами. Её можно включить в настройках. Однако в настоящее время известны проблемы, связанные с размытием движения, рендерингом волос и облаков точек, а также вырожденными треугольными формами.

Функция ускоренного шумоподавления на GPU доступна на дискретных графических процессорах Radeon RX 6000 и Radeon RX 7000.

oneAPI – Intel

oneAPI – это библиотека вычислений, которая поддерживается в Windows и Linux и требует графической карты Intel® Arc™ с архитектурой Xe HPG. Поддерживается аппаратное ускорение для трассировки лучей и шумоподавления.

Поддерживаемые GPU включают в себя:

  • Intel® Arc™ A-серии

Минимальные версии драйверов:

  • Windows: Драйвер графики Intel XX.X.101.5518

  • Linux: Пакет intel-level-zero-gpu 1.3.27642, обычно доступный через пакет intel-compute-runtime XX.XX.27642.38

Дополнительную информацию о графических картах Intel и их архитектурах можно найти на веб-сайте Intel.

Ускоренное шумоподавление доступно на всех поддерживаемых GPU.

Metal – Apple (macOS)

Metal поддерживается на компьютерах Apple с видеокартами Apple Silicon. Для поддержки всех функций требуется macOS 13.0 или более поздняя версия.

Функция ускоренного шумоподавления на GPU доступна на Apple Silicon.

Ограничения

  • «Наведение путей» не поддерживается ни на одном графическом процессоре (GPU).

  • Open Shading Language поддерживается только для OptiX, с некоторыми ограничениями, перечисленными в документации.

Часто задаваемые вопросы

Почему Blender перестаёт отвечать во время рендеринга?

На более старых поколениях GPU, графические карты могут либо производить рендеринг, либо отрисовывать пользовательский интерфейс. Это может привести к тому, что Blender перестанет отвечать во время рендеринга. Тяжелые сцены также могут сделать Blender неотзывчивым на новых GPU, когда используется много памяти или выполняются затратные шейдеры, однако это, как правило, не такая уж большая проблема.

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

Почему сцена, которая визуализируется на центральном процессоре (CPU), не визуализируется на видеокарте (GPU)?

Причин может быть несколько, но наиболее распространённой является нехватка памяти на вашей видеокарте. Обычно GPU может использовать только тот объём памяти, который есть на GPU (см.: «Могут ли несколько видеокарт увеличить доступную память?» для получения дополнительной информации). Это, как правило, намного меньше, чем количество системной памяти, к которой может получить доступ CPU. С устройствами CUDA, OptiX, HIP и Metal, если память графического процессора заполнена, Blender автоматически попытается использовать системную память. Это влияет на производительность, но обычно всё равно приводит к более быстрому рендерингу, чем использование при рендеринге CPU.

Можно ли использовать несколько GPU для рендеринга?

Да, перейдите в Настройки ‣ Система ‣ Панель вычислительных устройств и настройте её по своему усмотрению.

Могут ли несколько видеокарт увеличить доступную память?

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

Исключением могут быть графические процессоры NVIDIA, подключённые через NVLink, где несколько графических процессоров могут совместно использовать память с небольшими затратами производительности. Это можно включить с помощью «распределённой по устройствам памяти» в настройках.

Что рендерится быстрее?

Это зависит от используемого оборудования. Различные технологии также имеют разное время вычислений в зависимости от тестируемой сцены. Для получения самой последней информации о производительности различных устройств просмотрите ресурс «Blender Open Data».

Сообщения об ошибках

В случае возникновения проблем обязательно установите официальные графические драйверы с сайта производителя GPU или через менеджер пакетов в Linux. Графические драйверы, предоставляемые производителем компьютера, иногда могут быть устаревшими или неполными.

Ошибка: недостаточно памяти (Error: Out of memory)

Обычно это означает, что недостаточно памяти для хранения сцены, используемой графическим процессором.

Примечание

Один из способов уменьшить использование памяти – использовать текстуры с меньшим разрешением. Например, текстуры изображений 8k, 4k, 2k и 1k занимают соответственно 256 МБ, 64 МБ, 16 МБ и 4 МБ памяти.

Драйвер NVIDIA OpenGL потерял связь с драйвером дисплея (The NVIDIA OpenGL driver lost connection with the display driver)

Если GPU используется и для отображения, и для рендеринга, Windows имеет ограничение на время, которое GPU может выполнять вычисления рендеринга. Если у вас особенно тяжелая сцена, Cycles может занять слишком много времени графического процессора. Уменьшение «размера плитки» на панели производительности может облегчить проблему, но единственным реальным решением является использование отдельных графических карт для отображения и рендеринга.

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

Неподдерживаемая версия GNU (unsupported GNU version)

В Linux, в зависимости от версии GCC, вы можете получить эту ошибку. Смотрите «руководство по установке Nvidia CUDA для Linux» для списка поддерживаемых версий GCC. Существует два возможных решения этой ошибки:

Использовать альтернативный компилятор

Если у вас установлен старый GCC, совместимый с установленной версией инструментария CUDA, то вы можете использовать его вместо компилятора «по умолчанию». Это делается путём установки переменной среды CYCLES_CUDA_EXTRA_CFLAGS при запуске Blender.

Запустите Blender из командной строки следующим образом:

CYCLES_CUDA_EXTRA_CFLAGS="-ccbin gcc-x.x" blender

(Введите имя или путь совместимого компилятора GCC).

Удалить проверки совместимости

Если вышеуказанное не помогло, удалите следующую строку в /usr/local/cuda/include/host_config.h:

#error -- unsupported GNU version! gcc x.x and up are not supported!

Это позволит Cycles успешно скомпилировать ядро рендеринга CUDA при первой попытке использовать ваш GPU для рендеринга. После успешной сборки ядра вы можете запустить Blender в обычном режиме, и ядро CUDA по-прежнему будет использоваться для рендеринга.

Ошибка CUDA: Сбой компиляции ядра (CUDA Error: Kernel compilation failed)

Эта ошибка может возникнуть, если у вас новая видеокарта NVIDIA, которая ещё не поддерживается версией Blender и установленным вами набором инструментов CUDA. В этом случае Blender может попытаться динамически построить ядро для вашей видеокарты и потерпеть неудачу.

В таком случае вы можете:

  1. Проверить, поддерживает ли последняя версия Blender (официальная или экспериментальная сборка) вашу видеокарту.

  2. Если вы сами собирали Blender, попробуйте скачать и установить новейший набор инструментов для разработчика CUDA.

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