Домашняя рендер-ферма из двух машин считает вдвое быстрее одной только в теории. На практике выясняется, что файлы надо синхронизировать, задания раздавать вручную, а вторая машина половину времени простаивает, потому что про неё забыли.
Сейчас по порядку: как связать две станции в работающую связку, какой способ раздачи заданий выбрать, что делать с файлами и когда вторая машина действительно окупается.
Что вообще значит распараллелить рендер
Есть два принципиально разных случая, и путать их нельзя.
Анимация. Кадры независимы, и их можно раздать по машинам: первая считает нечётные, вторая чётные. Ускорение почти двукратное, потому что накладных расходов мало.
Один кадр. Разделить его между машинами сложнее: нужно резать на области, считать по частям и сшивать. Ускорение меньше, а возни больше, и на границах областей бывают видимые швы.
Практический вывод: домашняя связка из двух машин оправдана прежде всего для анимации. Для одиночных кадров выигрыш есть, но заметно меньше.
Три способа раздать задания
Руками. Открыть проект на обеих машинах и задать разные диапазоны кадров. Работает без всякого софта, годится для разовых задач и требует внимания: диапазоны легко перепутать.
Скриптом. Запуск рендера из командной строки с указанием диапазона. Дальше это оборачивается в простой сценарий, который сам делит кадры и запускает расчёт. Уже удобно и не требует сторонних программ.
Менеджером заданий. Отдельная программа, которая держит очередь, раздаёт кадры по машинам, следит за сбоями и перезапускает упавшие. Правильный путь при регулярной работе, но требует установки и настройки на всех машинах.
Разумный порядок освоения: начать с ручного способа на одном проекте, понять, что именно мешает, и уже под это выбирать инструмент.
Главная проблема это файлы
Не вычисления, а данные. Обе машины должны видеть одни и те же текстуры, кэши и сам проект.
Общая сетевая папка. Самый простой путь: проект лежит на одной машине, вторая обращается к нему по сети. Минус в том, что все обращения к текстурам идут по сети, и на тяжёлых сценах это заметно тормозит.
Копирование перед запуском. Проект целиком копируется на вторую машину. Быстрее при расчёте, но требует дисциплины: правку надо переносить каждый раз.
Синхронизация папок. Утилита следит за изменениями и копирует их автоматически. Компромисс, который чаще всего и применяют.
Отдельный момент: пути к файлам. Если в проекте прописаны абсолютные пути с буквой диска, на второй машине они не найдутся. Помогают относительные пути и упаковка внешних файлов в проект.
Куда складывать результат
Обе машины пишут кадры, и складывать их надо в одно место.
Простейший рабочий вариант: общая сетевая папка для вывода. Кадров немного по объёму по сравнению с исходными данными, поэтому сеть здесь не узкое место.
Важная деталь: имя файла должно содержать номер кадра. Иначе машины перезапишут результат друг друга.
Полезная привычка: сохранять в формат, который не портится при обрыве. Если машина отключится посреди записи, повреждённым окажется один кадр, а не весь файл последовательности.
Сеть: что реально нужно
Гигабитной сети достаточно для большинства домашних сценариев.
Узким местом она становится там, где сцена весит десятки гигабайт и целиком читается с сетевого диска при каждом кадре. Решается копированием проекта локально перед расчётом.
Беспроводная сеть для передачи проекта работает, но медленно и нестабильно. Для второй машины лучше протянуть кабель: это дешевле любых других улучшений.
Питание и тепло
Две станции под нагрузкой это удвоенное потребление и удвоенное тепло в одной комнате.
Что проверить заранее. Суммарную нагрузку на розеточную линию: две мощные станции плюс мониторы могут упереться в ограничение проводки. Температуру в помещении: летом две машины греют ощутимо.
Расход на электричество тоже удваивается, и при регулярной работе это становится заметной статьёй, методика расчёта есть в материале про электричество на рендер.
Что делать со второй машиной, когда рендера нет
Вопрос, который определяет, окупится ли она.
Вариант первый: вторая машина это ваша прежняя станция после апгрейда. Тогда она ничего не стоила дополнительно, и простой не страшен.
Вариант второй: вторая машина берёт на себя фоновые задачи. Запекание симуляций, кодирование видео, сборка предпросмотров. Так она занята и когда рендера нет.
Вариант третий: вторая машина это рабочее место для второго человека. Тогда вопрос окупаемости не стоит вовсе.
Чего делать не стоит: покупать вторую машину специально под рендер, не посчитав, сколько часов в месяц она будет загружена. Методика такого расчёта есть в материале про выбор между фермой и своей станцией.
Когда две машины не помогут
Симуляции. Кадр зависит от предыдущего, распараллелить нельзя. Расчёт идёт на одной машине от начала до конца.
Работа в сцене. Моделирование и настройка материалов не ускоряются вовсе: это интерактивная работа на одной машине.
Тяжёлые сцены, не помещающиеся в память. Если сцена не влезает в видеопамять одной карты, вторая машина не поможет: каждая должна вместить сцену целиком, и об этом подробнее в материале про требования к видеопамяти.
Короткие задачи. Накладные расходы на раздачу и синхронизацию съедают выигрыш, если сам расчёт занимает минуты.
Надёжность
Две машины это вдвое больше поводов для сбоя, и об этом стоит подумать заранее.
Что предусмотреть. Сохранение по кадрам, чтобы обрыв не терял всю работу. Проверку результата: пересчитать пропущенные кадры проще, чем найти их вручную в конце.
Полезный приём: после завершения прогнать проверку, что все кадры на месте и ни один не нулевого размера. Скрипт на десять строк экономит обнаружение дыры в последовательности на этапе монтажа.
Разные машины в связке
Частый случай: одна станция мощнее другой.
При равном делении кадров быстрая машина закончит раньше и будет простаивать, пока медленная доделывает свою половину.
Решение простое: делить не поровну, а пропорционально производительности. Замерьте время одного кадра на каждой машине и распределяйте в этой пропорции.
Менеджеры заданий делают это автоматически, раздавая кадры по мере освобождения машин. Это ещё один аргумент в их пользу при регулярной работе.
Что считать вторым: кадры или задачи
Кроме деления кадров есть другой подход, который часто удобнее.
Вместо того чтобы обе машины считали одну анимацию, вторая берёт на себя отдельную задачу целиком: пока первая рендерит ролик, вторая запекает симуляцию следующей сцены или кодирует готовое видео.
Преимущество в том, что нет никакой синхронизации и раздачи: две независимые задачи на двух машинах.
Это особенно выигрышно, когда проектов несколько и они на разных стадиях. Одновременный расчёт двух разных сцен часто полезнее, чем двукратное ускорение одной.
Практический критерий: если у вас в работе один проект и жёсткий срок, делите кадры. Если несколько проектов, разводите задачи по машинам.
Удалённое управление
Мелочь, которая меняет удобство работы со связкой.
Ко второй машине не нужны ни монитор, ни клавиатура: достаточно удалённого доступа. Это освобождает место на столе и позволяет поставить её туда, где шум и тепло не мешают.
Что понадобится: включённый удалённый доступ и статический адрес в локальной сети, чтобы он не менялся при перезагрузке.
Полезная деталь: настроить автоматическое включение по сети. Тогда вторую машину можно держать выключённой и поднимать только под расчёт, экономя электричество.
Порядок настройки с нуля
Схема на один вечер.
Первое: соединить машины кабелем и убедиться, что они видят друг друга по сети.
Второе: сделать общую папку для проектов и общую для вывода.
Третье: упаковать тестовый проект так, чтобы все внешние файлы были внутри, и проверить, что он открывается на обеих машинах.
Четвёртое: запустить рендер небольшой последовательности вручную, разделив кадры пополам.
Пятое: сравнить время с расчётом на одной машине и убедиться, что выигрыш есть.
И только после этого имеет смысл ставить менеджер заданий и автоматизировать.
Частые вопросы
Нужны ли одинаковые версии программ?
Да, обязательно. Разные версии дают разный результат, и в последовательности появятся кадры, отличающиеся по свету или материалам. Это относится и к версиям плагинов.
Можно ли использовать ноутбук как вторую машину?
Можно, но с оговорками: под длительной нагрузкой ноутбук сбрасывает частоты, и его вклад окажется меньше ожидаемого. Делить кадры поровну в такой связке не стоит.
Сильно ли теряется скорость при работе с сетевого диска?
Зависит от сцены. Лёгкая сцена почти не замечает разницы, тяжёлая с большими текстурами может считаться заметно дольше. Проверяется замером на своём проекте.
Что делать, если одна машина посчитала кадры неверно?
Первым делом сверить версии программ и плагинов. Если совпадают, проверить стабильность памяти на этой машине: ошибки вычислений дают именно такую картину.
Можно ли считать на двух картах в одной машине вместо двух машин?
Для рендера это часто проще: нет синхронизации файлов и сети, обе карты видят одну сцену. Ограничения два. Сцена должна помещаться в каждую карту по отдельности, память не складывается. И корпус с питанием должны выдержать две карты сразу, а это отдельная задача по охлаждению.
Стоит ли собирать третью машину?
Считайте по загрузке. Если две машины заняты рендером меньше половины времени, третья не окупится. При постоянном потоке анимации имеет смысл сравнить с арендой мощности.
Начните со второй машины, которая у вас уже есть. Старый компьютер в роли второго узла окупается быстрее, чем покупка чего-то специально под ферму.
