Распределенная генерация
Чтобы использовать этот функционал вам необходимо получить лицензию на
Terrain generation is a complex task and may require substantial time depending on the area size and data resolution. Sandworm allows using distributed computing to generate terrain.Генерация ландшафта является сложной задачей и может потребовать значительного времени в зависимости от размера области и разрешения данных. Sandworm позволяет использовать распределенные вычисления для создания ландшафта.
The concept is to use several computers united into a network, one of which is Master and assigns tasks, and the other are Workers that perform portions of work (processing of source data) assigned to them. UnigineEditor with the Sandworm tool and a terrain project should be open on Master, while Workers run the console application. Source files (geodata) and common cache shall be stored in a shared folder. If a Worker still has available resources, additional processes may be run on it and participate in terrain generation immediately, i.e., without restarting the generation process. Master creates the asset based on the result.Идея заключается в использовании нескольких компьютеров, объединенных в сеть, один из которых Master и назначает задачи, а другие — Worker-ы — выполняют возложенные на них порции работы (обработка исходных данных). UnigineEditor с инструментом Sandworm и проектом ландшафта должен быть открыт на Master-е, а на Worker-ах нужно запустить консольное приложение. Исходные файлы (геоданные) и общий кэш должны храниться в общей папке. Если у Worker-а еще есть доступные ресурсы, то на нем можно запустить дополнительные процессы, которые мгновенно подключатся к генерации ландшафта, т. е. без перезапуска процесса генерации. Master создает ассет на основе результата.
Participants of the process:Участники процесса:
Launching OrderПорядок запуска#
Before launching any of the network participants, disable Microprofile for it — in \data\configs\default.user, set:Перед запуском любого из участников сети отключите для него Microprofile — в \data\configs\default.user укажите следующее:
<microprofile_enabled>0</microprofile_enabled>
Otherwise, every instance would run Microprofile, causing memory waste.В противном случае каждый экземпляр будет работать с Microprofile, что приведет к трате памяти.
You can launch Master and Workers in any sequence.Вы можете запускать Master и Worker-ов в любой последовательности.
You can run additional Workers after the terrain generation process has started, and Master will distribute jobs for them.Вы можете запустить дополнительных Worker-ов после запуска процесса генерации террейна, и Master будет распределять для них задания.
One machine can have several Workers running. A Worker can have several processes (forks) that are activated via the menu on Master.На одной машине может быть запущено несколько Worker-ов. Worker может иметь несколько процессов (форков), которые активируются через меню на Master.
Using Distributed GenerationИспользование распределенной генерации#
Workflow:Рабочий процесс:
-
Prepare your environment.Подготовьте рабочую среду.
Connect all computers to the network. It is recommended to use a network with at least 1 Gb bandwidth. Otherwise, you may experience network lags (see the Troubleshooting section). Check that your network doesn't block broadcasting, otherwise distributed computation will be unavailable.Подключите все компьютеры к сети. Рекомендуется использовать сеть с пропускной способностью не менее 1 Гб. В противном случае могут возникнуть задержки в сети (см. раздел Устранение проблем). Убедитесь, что ваша сеть не блокирует вещание, иначе распределенные вычисления будут недоступны.
It is recommended to use an SSD drive to store the generation cache and output files. If an HDD is used, the generation performance is significantly lower due to multiple read/write and head positioning operations.Рекомендуется использовать SSD-накопитель для хранения кэша генерации и выходных файлов. При использовании жесткого диска производительность генерации значительно ниже из-за многократных операций чтения/записи и позиционирования головок. -
On each Worker computer, run the Worker console application.На каждом компьютере Worker запустить консольное приложение Worker.
The versions of binary executable files must be the same on all computers.Версии бинарных исполняемых файлов должны быть одинаковыми на всех компьютерах. -
On the Master computer:На компьютере Master:
- Run UnigineEditor and open the Sandworm tool (Tools -> Sandworm).Запустите UnigineEditor и откройте инструмент Sandworm (Tools -> Sandworm).
- Open the *.sworm asset you are going to generate and configure the output settings.Откройте ассет *.sworm, который вы собираетесь создать, и задайте настройки для выводимых данных.
- Click the Distributed option and specify the Master's settings. Save the project configuration.Нажмите на опцию Distributed и укажите настройки Master-а. Сохраните конфигурацию проекта.
-
Click the Generate button. The window with the list of available Workers will open:Нажмите кнопку Generate. Откроется окно со списком доступных Worker-ов:
As soon as this window is open, Workers start parsing the shared source data and generating cache. In the end of this process, the console message Worker: Ready To Import is displayed.Как только это окно откроется, Worker-ы начинают парсить общие исходные данные и генерировать кеш. В конце этого процесса отображается консольное сообщение Worker: Ready To Import.
-
Clicking the right mouse button on a Worker makes the following options available:Щелчок правой кнопкой мыши на Worker-е делает доступными следующие опции:
Worker OptionsПараметры Worker-аCreate Fork Creates one more process on the same Worker. We estimate a reasonable number of forks as 4 to 6. Higher values reduce the Worker's performance.Создает еще один процесс на том же Worker-е.We estimate a reasonable number of forks as 4 to 6. Higher values reduce the Worker's performance.We estimate a reasonable number of forks as 4 to 6. Higher values reduce the Worker's performance.We estimate a reasonable number of forks as 4 to 6. Higher values reduce the Worker's performance.По нашим оценкам имеет смысл делать количество форков от 4 до 6. Более высокие значения снижают производительность Worker-а.Shutdown Removes the fork or Worker from the list.Удаляет форк или Worker из списка. Clear Cache Clears the Worker's local cache.Очищает локальный кэш Worker-а. Set the number of forks you need and click Generate.Установите необходимое количество форков и нажмите Generate.
-
During the generation process, you can connect more Workers, if necessary: run the console application on a Worker (even if this Worker is already running one or several). This console application will automatically connect to Master, and Master will assign a process to this Worker.В процессе генерации можно подключить больше Worker-ов, если это необходимо: запустить консольное приложение на Worker-е (даже если на этом Worker-е уже запущено одно или несколько консольных приложений). Это консольное приложение автоматически подключится к Master-у, а Master назначит процесс этому Worker-у.
- When the terrain generation is completed, disable all Worker processes.Когда генерация ландшафта завершена, отключите все процессы на Worker-е.
Setting Up the MasterНастройка Master-а#
To set up Master, select the Distributed option in the Generation section. In the Parameters, toggle on the Enabled option.Чтобы настроить Master, выберите параметр Distributed в разделе Generation. В окне Parameters включите опцию Enabled.
Master settings:Настройки Master-а:
Enabled | If toggled on, distributed computing is enabled for the terrain generation, and the machine running the Editor with Sandworm is Master.Если этот параметр включен, распределенные вычисления включаются для генерации ландшафта, а машина, на которой запущен редактор с Sandworm, — это Master. |
---|---|
Broadcast Port | Port for listening to Sandworm by Workers.Порт для прослушивания Sandworm Worker-ами. |
Server Port | Port used for information exchange.Порт, используемый для обмена информацией. |
Workload on Master | Percentage of terrain generation performed by Master.Процент генерации ландшафта, выполненный Master-ом. |
Setting Up a WorkerНастройка Worker-а#
To set up a Worker:Чтобы настроить Worker:
-
Create a new UNIGINE project on a Worker computer with the corresponding project feature enabled:Создайте новый проект UNIGINE на компьютере Worker, включив соответствующую опцию проекта:
-
Run the SandwormNode_x64.exe console application stored in the bin/ folder of your project. The message that Worker is ready should appear in console:Запустите консольное приложение SandwormNode_x64.exe, хранящееся в папке bin/ вашего проекта. В консоли должно появиться сообщение о том, что Worker готов:
- Set the path for storing the local cache using the --sw_local_cache_path console command.Задайте путь для хранения локального кеша с помощью консольной команды --sw_local_cache_path.
- Use --sw_broadcast_port, if you want to change the default broadcast port.Используйте --sw_broadcast_port, если вы хотите изменить широковещательный порт по умолчанию.
- Worker detects Master on the network, connects to it, downloads the scene, prepares all layers (checks their accessibility), and is ready for terrain generation.Worker обнаруживает в сети Master-а, подключается к нему, скачивает сцену, подготавливает все слои (проверяет их доступность) и готов к генерации ландшафта.
You can run multiple console applications on one machine and/or fork one Worker via Master to create more processes.Вы можете запустить несколько консольных приложений на одном компьютере и/или разветвить один Worker через Master, чтобы создать больше процессов.
- Operating System versions on Master and Workers should be identical.Версии операционной системы на Master-е и Worker-ах должны совпадать.
- The SDK version of the Editor run on Master should be the same as the version of the console app (including precision).Версия редактора SDK, работающая на Master-е, должна совпадать с версией консольного приложения (включая точность).
- Development/Release version of SDK does not matter.Development/Release версия SDK значения не имеет.
When the terrain generation is completed and you don't need Workers anymore, close the console application on Workers or shut down processes via Master.Когда генерация ландшафта завершена и вам больше не нужны Worker-ы, закройте консольное приложение на Worker-ах или завершите процессы через Master.
TroubleshootingУстранение проблем#
If the network latency is too large despite 1Gb bandwidth or higher, this can be caused by a 100 Mb or 10 Mb device connected to the network. Data exchange rate drops down to the maximum rate supported by such device, slowing down the generation speed.Если сетевая задержка слишком велика, несмотря на пропускную способность 1 Гб или выше, это может быть вызвано подключением к сети устройства 100 Мб или 10 Мб. Скорость обмена данными падает до максимальной скорости, поддерживаемой таким устройством, что замедляет скорость генерации.
- Some 100 Mb or 10 Mb devices can have a working network interface when they are turned off.Некоторые 100-мегабитные или 10-мегабайтные устройства могут иметь работающий сетевой интерфейс, когда они выключены.
- Some 1 Gb devices, when turned off, have a network interface working at 100 Mb rate, which slows down connection on LAN.Некоторые 1Гб-устройства в выключенном состоянии имеют сетевой интерфейс, работающий на скорости 100Mb, что замедляет соединение по локальной сети.
Other recommendations:Другие рекомендации:
- Check that your projects on Master and Workers use the same precision (double or float), the same engine versions, and the same GDAL versions, otherwise the Workers would display the Different Builds error.Убедитесь, что ваши проекты на Master-е и Worker-ах используют одинаковую точность (double или float), одни и те же версии движка и одни и те же версии GDAL, иначе на Worker-ах будет отображаться ошибка «Different Builds».
- Use SSD to store shared source data and cache.Используйте SSD для хранения общих исходных данных и кеша.
- Add the application to the antivirus exclusions, as it may reduce performance.Добавьте приложение в исключения антивируса, так как это может снизить производительность.
- Check that network ports used by Master and Workers are allowed by the firewall.Убедитесь, что сетевые порты, которые используют Master и Worker-ы, разрешены брандмауэром.