This page has been translated automatically.
Видеоуроки
Интерфейс
Основы
Продвинутый уровень
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Профессиональный уровень (SIM)
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Физика
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Контроль версий
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Sandworm
Использование инструментов редактора для конкретных задач
Расширение функционала редактора
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World-ноды
Звуковые объекты
Объекты поиска пути
Player-ноды
Программирование
Основы
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
UUSL (Unified UNIGINE Shader Language)
Плагины
Форматы файлов
Материалы и шейдеры
Rebuilding the Engine Tools
Интерфейс пользователя (GUI)
VR Development
Двойная точность координат
API
Animations-Related Classes
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
VR-Related Classes
Работа с контентом
Оптимизация контента
Материалы
Визуальный редактор материалов
Сэмплы материалов
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Учебные материалы
Внимание! Эта версия документация УСТАРЕЛА, поскольку относится к более ранней версии SDK! Пожалуйста, переключитесь на самую актуальную документацию для последней версии SDK.
Внимание! Эта версия документации описывает устаревшую версию SDK, которая больше не поддерживается! Пожалуйста, обновитесь до последней версии SDK.

Распределенная генерация и консольный режим

Смотрите также#

Посмотрите это видео из серии видеоуроков по генерации ландшафта в Sandworm:

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

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

Концепция заключается в использовании нескольких компьютеров, объединенных в сеть, один из которых, Master, назначает задачи, а другие - Worker, которые выполняют часть работы (обработка исходных данных), возложенную на них. UnigineEditor с инструментом Sandworm и проектом, в который будет добавлен ландшафт, должен быть открыт на Master, в то время как на Worker-ах запускается консольное приложение. Исходные файлы (геоданные) и общий кэш должны храниться в общей папке. Если у Worker-а все еще есть доступные ресурсы, на нем могут быть запущены дополнительные процессы, которые немедленно участвуют в генерации ландшафта, т.е. без перезапуска процесса генерации. Master создает ресурс на основе результата.

Примечание
Все рабочие станции, выполняющие вычисления для определенного задания генерации ландшафта, должны быть запущены в одной и той же операционной системе (Windows или Linux). Версия UNIGINE SDK также должна быть такой же.

Участники процесса:

Master

Компьютер, который управляет всем процессом генерации, формирует пул задач и распределяет задачи между Worker-ами. Master отслеживает все подключенные Worker-ы и назначает им задачи. Сам Master также выполняет вычисления. Master запускается через Sandworm.

Worker

Компьютер, подключенный по сети к Master и выполняющий определенные задачи, назначенные Master. Worker включается при запуске bin/SandwormNode_x64.exe.

Примечание
Количество Worker-ов, подключенных к одному Master-у, не ограничено (до тех пор, пока пропускная способность сети позволяет это).

Порядок запуска#

Внимание

Перед запуском любого из участников сети отключите для него Microprofile — в \data\configs\default.user укажите:

Исходный код
<microprofile_enabled>0</microprofile_enabled>

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

Вы можете запустить Master и Worker-ы в любой последовательности.

Вы можете запустить дополнительные Worker-ы после запуска процесса генерации ландшафта, и Master распределит задания для них.

На одной машине может быть запущено несколько Worker-ов. У Worker-а может быть несколько процессов (форков), которые активируются через меню на Master-е.

Использование распределенной генерации#

Процесс работы:

  1. Подготовьте окружение.

    Подключите все компьютеры к сети. Рекомендуется использовать сеть с пропускной способностью не менее 1 Гб. В противном случае могут возникнуть сетевые задержки (см. раздел Устранение неполадок). Убедитесь, что ваша сеть не блокирует широковещательную передачу, в противном случае распределенные вычисления будут недоступны.

    Примечание
    Рекомендуется использовать SSD-накопитель для хранения кэша генерации и выходных файлов. При использовании жесткого диска производительность генерации значительно снижается из-за многократных операций чтения/записи и позиционирования головки.
  2. На каждом компьютере Worker запустите консольное приложение Worker.

    Примечание
    Версии двоичных исполняемых файлов должны быть одинаковыми на всех компьютерах.
  3. На компьютере Master:

    • Запустите UnigineEditor и откройте инструмент Sandworm (Tools -> Sandworm).
    • Откройте ассет *.sworm, который вы собираетесь сгенерировать, и настройте параметры генерации.
    • Включите опцию Distributed и укажите настройки мастера. Сохраните конфигурацию проекта.
    • Нажмите кнопку Generate. Откроется окно со списком доступных Worker-ов:

      Окно распределенной генерации

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

      Как только это окно откроется, Worker-ы начнут анализировать общие исходные данные и генерировать кэш. В конце этого процесса отображается консольное сообщение Worker: Ready To Import.

    • Щелчок правой кнопкой мыши на Worker-е делает доступными следующие параметры:

      Настройки Worker-а

      Настройки Worker-а
      Create Fork Создает еще один процесс на том же Worker-е.
      Лучшая практика
      Мы оцениваем разумное количество форков от 4 до 6. Более высокие значения снижают производительность Worker-а.
      Shutdown Удаляет форк или Worker из списка.
      Clear Cache Очищает локальный кэш Worker-а.

      Установите нужное вам количество форков и нажмите Generate.

  4. В процессе генерации вы можете подключить больше Worker-ов, если это необходимо: запустите консольное приложение на Worker-е (даже если на этом Worker-е уже запущен один или несколько процессов). Это консольное приложение автоматически подключится к Master-у, и Master назначит процесс этому Worker-у.

  5. Когда генерация ландшафта будет завершена, отключите все процессы на Worker-е.

Настройка Master-а#

Чтобы настроить Master, включите Distributed Generation в Generation Settings: включите опцию Enabled.

Настройки Master-а:

Enabled Если переключатель включен, распределенные вычисления включены для генерации ландшафта, и машина, на которой запущен редактор с Sandworm, становится Master-ом.
Broadcast Port Порт для прослушивания Sandworm с помощью Worker-ов.
Server Port Порт, используемый для обмена информацией.
Workload on Master Процент генерации ландшафта, выполняемый Master-ом.
Примечание
Все исходные тексты и кэш проекта должны храниться в общем расположении, доступном как для Master-а, так и для всех Worker-ов. Путь к этому местоположению должен быть идентичным для Master-а и Worker-ов.

Настройка Worker-а#

Примечание
Worker должен иметь ту же версию ОС и UNIGINE SDK, что и Master.

Чтобы настроить Worker:

  1. Создайте новый проект UNIGINE на компьютере Worker, включив соответствующую функцию:

    Создание приложения для Worker-а

  2. Запустите консольное приложение SandwormNode_x64.exe, хранящееся в папке bin/ вашего проекта. В консоли должно появиться сообщение о том, что Worker готов:

    Worker готов для генерации

  3. Задайте путь для хранения локального кэша с помощью консольной команды --sw_local_cache_path.
  4. Используйте --sw_broadcast_port, если вы хотите изменить широковещательный порт по умолчанию.
  5. Worker обнаруживает Master в сети, подключается к нему, загружает сцену, подготавливает все слои (проверяет их доступность) и готов к генерации ландшафта.

Приложение Worker запущено и готово для генерации ландшафта

Рабочее приложение запущено и готово для генерации ландшафта

Вы можете запустить несколько консольных приложений на одном компьютере и / или разветвить один Worker через Master, чтобы создать больше процессов.

Примечание
  • Версии операционной системы на Master-е и Worker-ах должны быть идентичны.
  • Версия SDK редактора, запущенного на Master-е, должна совпадать с версией консольного приложения (включая точность).
  • версия SDK Development/Release не имеет значения.

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

Генерация ландшафта в консольном режиме#

Ландшафт, созданный в проекте Sandworm, также может быть сгенерирован в консольном режиме (Headless), без запуска UNIGINE Editor.

Для этого:

  1. Настройте проект UNIGINE для включения соответствующей функции:

  2. Создайте и настройте проект Sandworm в Редакторе, затем закройте Редактор.

  3. Выполните следующую команду из командной строки:

    Shell-команды
    PS D:\projects_location\unigine_project\bin> .\SandwormNode_double_x64.exe --sw_generate project_name.sworm

    где project_name.sworm — имя вашего проекта Sandworm, как отображается в UNIGINE Editor.

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

Внимание
Режим Headless не работает с распределенными вычислениями.

Диагностика#

  • Если задержка в сети слишком велика, несмотря на пропускную способность 1 Гб или выше, это может быть вызвано подключенным к сети устройством объемом 100 Мб или 10 Мб. Скорость обмена данными падает до максимальной скорости, поддерживаемой таким устройством, что замедляет скорость генерации.
  • Убедитесь, что ваши проекты на Master и Worker-ах используют одинаковую точность (double или float), одни и те же версии движка и одни и те же версии GDAL, в противном случае Worker-ы отобразят ошибку Разные сборки.
  • Используйте SSD для хранения общих исходных данных и кэша.
  • Добавьте приложение в список исключений антивируса, так как это может снизить производительность.
  • Убедитесь, что сетевые порты, используемые Master-ом и Worker-ами, разрешены брандмауэром.
Последнее обновление: 19.12.2023
Build: ()