Рендеринг на CPU и GPU – чем они отличаются и какой выбрать для своих задач

Россия+7 (910) 990-43-11
Обновлено: 2023-01-07

Вы когда-нибудь задумывались, в чём разница между рендерингом CPU и GPU и какой из них лучше всего соответствует вашим потребностям?

Хотя вы можете подумать, что они похожи, правда в том, что они очень разные.

И я встречал много людей, которые спрашивали, в чём разница между ними. Поэтому я решил написать целую статью, посвященную подробному объяснению именно этого!

Разница между рендерингом CPU и GPU (за и против)

Обычно рекламируется, что рендеринг на GPU быстрее, чем рендеринг на CPU. На самом деле, речь идёт не о том, что быстрее, а о том, что лучше для поставленной задачи.

Прежде всего, давайте разберемся с основами.

«Визуализировать» что-либо – значит обработать сцену, чтобы создать изображение или последовательность изображений.

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

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

В зависимости от программы, которую вы используете, этот процесс обрабатывается либо CPU (центральным процессором), либо GPU (графическим процессором), либо обоими, если вы используете гибридные механизмы рендеринга, такие как V-Ray или Cycles.

Важно понимать, что оба они, CPU и GPU, одинаково важны.

Графические процессоры отлично справляются с обработкой большого количества очень специфической информации и быстро обрабатывают её параллельно, но центральные процессоры отлично справляются с обработкой большого количества общей информации и обрабатывают её последовательно.

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

Рендеринг на основе CPU и механизмы рендеринга, ориентированные на CPU

Рендеринг на CPU – это метод, при котором изображения рендерятся исключительно с использованием центрального процессора.

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

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

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

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

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

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

Arnold Engine

Механизм визуализации Arnold
Источник изображения: Альберт Эйнштейн – Александр Бейм

Corona Renderer

Результат рендеринга изображения в Corona Renderer
Источник изображения: Патрик Далла Торре

Renderman Engine

Рендеринг фильма на Renderman Render Engine
Источник изображения: Pixar

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

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

Рендеринг на основе GPU и механизмы рендеринга, ориентированные на GPU

Рендеринг на GPU – это процесс использования одной или нескольких видеокарт для рендеринга 3D-сцен.

Есть несколько преимуществ использования рендеринга на GPU по сравнению с рендерингом CPU.

Во-первых, графические процессоры намного лучше справляются с 3D-рендерингом, чем центральные процессоры, потому что они оптимизированы для графических вычислений и параллельной обработки.

Это означает, что они могут обрабатывать множество задач одновременно, в отличие от CPU, которые работают последовательно.

А поскольку задача рендеринга легко распараллеливается (съёмка лучей, выборка пикселей или просто рендеринг отдельных кадров в последовательности), GPU с тысячами ядер легко вырывается вперед по производительности рендеринга.

Отличия архитектур CPU и GPU

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

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

Однако, графические процессоры не лишены недостатков.

Будучи разработанными для очень конкретной цели – графики – они не очень хорошо справляются со многими вещами, с которыми хороши процессоры.

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

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

Графические процессоры гораздо более ограничены в объёме памяти, чем большинство процессоров. Типичные графические карты имеют доступ к 8-12 ГБ встроенной видеопамяти, в то время как процессоры могут легко получить доступ к системной памяти, которая обычно составляет 16-128 ГБ в современных системах.

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

Ограничения графического процессора на доступ к системной памяти

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

Что это значит? Это означает, что вы увидите самое большое ускорение на графических процессорах, которые могут поместить всю вашу 3D-сцену в собственную видеопамять.

Если сцена слишком сложна и перетекает в системную оперативную память, производительность рендеринга серьёзно пострадает.

Вот некоторые механизмы рендеринга на GPU и примеры того, что они могут делать.

Octane Renderer

Работа движка рендеринга Octane GPU
Источник изображения: Корнелиус Даммрих

Движок Redshift

Результат работы Redshift
Автор: Шкумбин Феризи из студии Pulla

ProRender Engine

Рендер сцены на основе AMD ProRender
Источник изображения: Pixelary

Когда использовать рендеринг на CPU или GPU (или на обоих!)

Какой из них быстрее, лучше для вас? Это сложный вопрос, потому что всё зависит от того, каковы ваши варианты использования и что вы визуализируете.

Как правило, GPU будут быстрее, чем CPU, в большинстве задач рендеринга.

Это связано с тем, что графический процессор отлично справляется с обработкой большого количества информации и быстро обрабатывает её на тысячах ядер параллельно. Да, у графического процессора тысячи ядер (у 3090 более 10 000 ядер), а у процессоров «всего» до 64.

Конечно, ядра графического процессора (CUDA, потоковые процессоры, шейдерные ядра, тензорные ядра и т.д.) намного меньше и слабее, чем полноценное ядро CPU. Но, природа рендеринга позволяет легко разделять его на огромное количество очень простых задач, с которыми графические процессоры отлично справляются.

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

Вот почему так сложно сравнивать скорость CPU Render Engine и GPU Render Engine. По большей части они работают на совершенно разных кодовых базах. Например, Redshift Engine на основе CUDA просто не может сравниться с Corona, который работает только на CPU.

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

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

Это позволяет им перемещать данные в системную оперативную память, если ваша 3D-сцена не помещается в видеопамяти графического процессора. Однако, как обсуждалось выше, это значительно снизит скорость рендеринга.

С другой стороны медали, если вы визуализируете сложную сцену, где точность имеет первостепенное значение – симуляция физики, симуляция воды и т.д., лучше использовать CPU.

Это связано с тем, что ЦП отлично справляется с обработкой большого количества информации и делает это точно и не ограничен VRAM.

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

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

Как правило, большинство крупных студий предпочитают рендеринг на CPU из-за его универсальности и гибкости, но это также, как правило, и самый дорогой вариант.

Рабочие станции для рендеринга своими руками и фермы для рендеринга

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

И они обычно не заботятся о скорости, потому что на этом уровне у вас есть 10 000 процессоров, которые работают вместе, чтобы создать этот шедевр.

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

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

Когда клиент хочет, чтобы проект был выполнен в 9, вам нужно что-то быстрое и незаметное, а не совершенство.

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

Используйте рендеринг на CPU, если вы запускаете процессы, требующие много памяти, и не заботитесь о скорости, если у вас есть точность и стабильность.

Используйте рендеринг на GPU, если хотите, чтобы ваши рендеры выполнялись быстро и с очень хорошими результатами, даже если он может быть не самым точным (разница незначительна), и вам не нужны горы памяти для 4K-текстур и 50 миллионов полигонов.

Что выбрать: рендеринг на GPU или CPU

Давайте пройдём всё ещё раз.

Факторы, которые «лишают» вас выбора и подталкивают к рендерингу на GPU или CPU:

  • Вы уже владеете кучей лицензий и давно работаете в конкретном движке
  • У вас уже есть куча оборудования, которое подходит для одного из двух
  • Проекты, над которыми вы работаете или которые даёт клиент, уже настроены в конкретном движке

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

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

Переход с одного движка на другой всегда связан со снижением качества или увеличением времени, затрачиваемого на достижение определенного уровня качества, пока вы не освоитесь с новым движком.

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

Если вы не связаны вышеуказанными факторами, вот что может подтолкнуть вас в том или ином направлении:

Графический рендеринг

  • Как правило, быстрее, чем рендеринг на CPU для большинства сцен, учитывая, что видеопамять достаточно велика, чтобы уместить сцену
  • Более быстрая итерация проекта (и чаще) благодаря быстрому интерактивному предварительному рендерингу, который повышает качество проектов и делает вас более конкурентоспособными
  • Может легче масштабироваться с точки зрения аппаратного обеспечения. Просто вставьте кучу графических процессоров в ПК без необходимости приобретать второй компьютер
  • Лучший выбор для фрилансеров и небольших студий, которые могут иметь много графических процессоров на своих рабочих станциях без необходимости приобретать рендер-ферму

Процессорный рендеринг

  • Доступ к легко обновляемой системной оперативной памяти, емкость которой обычно выше, чем видеопамять. Даёт возможность обрабатывать безумно сложные сцены
  • Набор функций в CPU Render Engines обычно шире. Процессорные движки существуют дольше, и процессоры отлично справляются со всеми видами вычислений
  • Может быть лучшим выбором для крупных студий, которые занимаются сложными проектами, требующими множества функций движка и программного обеспечения для 3D

Гибридный рендеринг

Хотя большинство движков поддерживают только рендеринг CPU или GPU, некоторые поддерживают и то, и другое.

V-Ray от Chaos и Cycles от Blender – два таких рендер-движка. Они могут одновременно использовать CPU и GPU.

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

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

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

Это также поможет использовать полную производительность ваших компонентов, если вы хотите сократить время рендеринга.

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

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

Облачный рендеринг и рендер-фермы для рендеринга CPU и GPU

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

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

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

Преимущества облачного рендеринга

Существует множество ферм рендеринга, которые предлагают облачные функции для ускорения рендеринга как на CPU, так и на GPU.

Если у вас есть средства, вы также можете решить создать свою собственную рендер-ферму.

Независимо от того, что вы выберете, вы все равно сможете получить максимальную скорость.

Что в итоге

У рендеринга на CPU и на GPU есть своё применение. Поэтому трудно однозначно рекомендовать вам использовать один или другой.

Рендеринг на GPU, как правило, будет намного быстрее, чем на CPU, но у вас могут возникнуть проблемы с управлением памятью.

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

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

Так что, надеюсь, эта статья немного облегчила вам принятие этого решения.


5.0/1