Визуализация на 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 и выше, а также драйвера версии не ниже 470. Чтобы убедиться, что ваш графический процессор поддерживается, см. «список видеокарт Nvidia».

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

HIP – AMD

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

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

  • Radeon RX Vega серии (за исключением Radeon VII)

  • Radeon RX 5000 серии

  • Radeon RX 6000 серии

  • Radeon RX 7000 серии

  • Radeon Pro WX 9100

  • Radeon Pro W6000 серии

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

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

  • Linux: Radeon Software 22.10 или ROCm 5.3

Please refer to AMD’s website for more information about AMD graphics cards and their architectures.

On Windows, experimental hardware ray-tracing support is available with the most recent drivers. This can be enabled in the preferences. However there are currently known issues regarding hair rendering and degenerate triangle shapes.

The Clip extension mode in Нода «Текстура изображения» (image texture node) is not supported for HIP.

oneAPI – Intel

oneAPI is a computation library that is supported on Windows and Linux and requires a Intel® Arc™ graphics card with the Xe HPG architecture. Hardware acceleration for ray-tracing is supported.

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

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

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

  • Windows: Intel Graphics Driver XX.X.101.4314

  • Linux: intel-level-zero-gpu package 1.3.25812, typically available through the intel-compute-runtime package XX.XX.25812

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

Metal – Apple (macOS)

Metal is supported on Apple computers with Apple Silicon, AMD and Intel graphics cards. macOS 13.0 or newer is required to support all features and graphics cards.

Light Trees and Shadow Caustics are not supported when using an AMD graphics card with Metal.

Ограничения

  • «Наведение путей» не поддерживается ни на одном графическом процессоре (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 уже поставляется со скомпилированными ядрами.