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

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

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

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

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

Примечание

With all GPU rendering technologies, Open Shading Language is not supported.

CUDA – NVIDIA

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

OptiX – NVIDIA

OptiX is supported on Windows and Linux and requires a Nvidia graphics cards with compute capability 5.0 and higher and a driver version of at least 470. To make sure your GPU is supported, see the list of Nvidia graphics cards OptiX works best on RTX graphics cards with hardware ray tracing support (e.g. Turing and above).

HIP – AMD

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

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

  • Radeon VII

  • Radeon RX Vega Series

  • Radeon RX 5000 серии

  • Radeon RX 6000 серии

  • Radeon RX 7000 серии

  • Radeon Pro WX 9100

  • Radeon Pro W6000 серии

Примечание

The RDNA3 GPUs like the RX 7000 Series require Blender 3.3.2 LTS or newer.

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

  • 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.

Примечание

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

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.

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

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

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

  • Windows: Intel Graphics Driver 30.0.101.3430

  • Linux: OpenCL runtime 22.10.23904

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

Metal – Apple (macOS)

Metal is supported on Apple computers with Apple Silicon or AMD graphics cards. macOS 12.2 is required to use Metal with Apple Silicon while macOS 12.3 is required to use Metal with AMD graphics cards.

Примечание

MNEE caustics are not supported in Metal.

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

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

While a graphics card is rendering, it cannot redraw the user interface, which makes Blender unresponsive. We attempt to avoid this problem by giving back control over to the GPU as often as possible, but a completely smooth interaction cannot be guaranteed, especially on heavy scenes. This is a limitation of graphics cards for which no true solution exists, though we might be able to improve this somewhat in the future.

If possible, it is best to install more than one GPU, using one for display and the other(s) for rendering.

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

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

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

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

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

Typically, no, each GPU can only access its own memory, however, some GPUs can share their memory. This is can be enabled with Distributed Memory Across Devices.

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

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

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

In case of problems, be sure to install the official graphics drivers from the GPU manufacturers website, or through the package manager on Linux.

Неподдерживаемая версия 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)

This error may happen if you have a new Nvidia graphics card that is not yet supported by the Blender version and CUDA toolkit you have installed. In this case Blender may try to dynamically build a kernel for your graphics card and fail.

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

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

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

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

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

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

Примечание

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

The Nvidia OpenGL driver lost connection with the display driver

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

Another solution can be to increase the time-out, although this will make the user interface less responsive when rendering heavy scenes. Learn More Here.

CUDA error: Unknown error in cuCtxSynchronize()

An unknown error can have many causes, but one possibility is that it is a time-out. See the above answer for solutions.