分布式生成
另请参阅#
观看这段视频,来自Sandworm地形生成系列视频教程:
地形生成是一项复杂的任务,根据区域大小和数据分辨率可能需要大量时间。Sandworm允许使用分布式计算生成地形。
概念是使用多台计算机联合成一个网络,其中一台是Master并分配任务,另一台是Worker执行部分任务 分配给他们的工作(处理源数据)。 带有 Sandworm 工具的 UnigineEditor 和地形项目应该在 Master 上打开,而 Worker 运行控制台应用程序。 源文件(地理数据)和公共缓存应存储在共享文件夹中。 如果 Worker 仍有可用资源,则可以在其上运行其他进程并参与地形生成 立即,即不重新启动生成过程。 Master 根据结果创建资源。
该过程的参与者:
启动顺序#
在启动任何网络参与者之前,为其禁用 Microprofile - 在 \data\configs\default.user 文件中,设置:
<microprofile_enabled>0</microprofile_enabled>
否则,每个实例都会运行Microprofile,造成内存浪费。
您可以启动主和Worker在任何序列。
您可以在地形生成进程启动后运行额外的Worker, Master将为它们分配作业。
一台机器可以运行多个 Worker。 Worker 可以有多个通过 Master 上的菜单激活的进程(分支)。
使用分布式生成#
流程:
-
准备环境.
将所有计算机连接到网络。 建议使用带宽至少为 1 Gb 的网络。 否则,您可能会遇到网络延迟(请参阅 故障排除 部分)。 检查您的网络是否阻止广播,否则分布式计算将不可用。
建议使用SSD盘存储生成缓存和输出文件。如果使用HDD,由于多次读/写和磁头定位操作,生成性能会显著降低。 -
On each Worker computer, run the Worker console application.
二进制可执行文件的版本必须是相同的所有计算机。 -
在 Master 计算机上:
- 运行 UnigineEditor 并打开 Sandworm 工具 (Tools -> Sandworm).
- 打开您将要生成的*.sworm资源,并配置生成设置。
- 启用 Distributed 选项并指定 Master 的设置。 保存项目配置。
-
单击Generate按钮。带有可用Worker列表的窗口将会打开:
如果您重新生成项目时,这个窗口将会出现警告后失去任何手动修改。一旦这个窗口是开放的,Worker开始解析共享源数据和生成缓存。这个过程的最后,Worker: Ready To Import显示控制台消息。
-
在Worker上单击鼠标右键,可以获得以下选项:
Worker的设置Create Fork 在同一个Worker上再创建一个进程。 我们估计一个合理数量的分支是4到6。更高的值降低WorkerPerformance.Shutdown 从列表中删除分支或Worker。 Clear Cache 清除Worker的本地缓存。 设置您需要的分支数量并单击Generate。
-
在生成过程中,如果需要,您可以连接更多 Worker:在 Worker 上运行控制台应用程序(即使该 Worker 已经在运行 一个或几个)。 这个控制台应用程序会自动连接到 Master,Master 会为这个 Worker 分配一个进程。
- 当地形生成完成后,禁用所有Worker进程。
设置主#
要设置Master,请在Generation Settings中启用Distributed Generation:切换Enabled选项。
Master的设置:
Enabled | 如果打开,则为地形生成启用分布式计算,并且运行带有Sandworm的Editor的机器为Master。 |
---|---|
Broadcast Port | 端口Sandworm Worker听。 |
Server Port | 用于信息交换的端口。 |
Workload on Master | 地形生成由Master百分比。 |
建立一个Worker#
建立一个Worker:
-
在 Worker 计算机上创建一个新的 UNIGINE 项目,并启用相应的项目功能:
-
运行存储在项目的bin/文件夹中的SandwormNode_x64.exe控制台应用程序。Worker已经准备好的消息应该出现在控制台中:
- 设置路径存储本地缓存使用--sw_local_cache_path控制台命令。
- 如果要更改默认广播端口,请使用--sw_broadcast_port。
- Worker检测Master网络,连接,下载现场,准备所有层(检查他们的可访问性),并准备好地形的一代。
您可以在一台机器上运行多个控制台应用程序和/或叉一个Worker通过Master创建多个进程。
- Master和Worker上的操作系统版本应该是相同的。
- SDK版本的编辑器运行在Master应该一样的控制台应用程序的版本(包括精度)。
- Development/Release版本的SDK无关紧要。
当地形生成完成,不再需要Worker时,在Worker上关闭控制台应用程序或通过Master关闭进程。
在无头模式生成景观#
在 Sandworm 项目中创建的景观也可以在 无头(Headless)模式下生成,而不需要运行 UNIGINE 编辑器。
做某事:
-
-
在编辑器中创建和配置 Sandworm 项目,然后关闭编辑器。
-
在命令行中执行如下命令:
PS D:\projects_location\unigine_project\bin> .\SandwormNode_double_x64.exe --sw_generate project_name.sworm
其中 project_name.sworm 是编辑器中显示的 Sandworm 项目名称。
在输出设置中,景观生成到设置为 export world 的世界中。在开始生成过程之前,还要下载项目中使用的任何TMS源代码。
故障排除#
- 如果网络延迟太大,尽管1Gb或更高的带宽,这可能是由连接到网络的100mb或10mb设备造成的。数据交换速率下降到该设备支持的最大速率,降低了生成速度。
- 检查Master和Worker上的项目是否使用相同的精度(double或float)、相同的引擎版本和相同的GDAL版本,否则Worker将显示 Different Builds错误。
- 使用SSD存储源数据和cache.共享
- 将应用程序添加到防病毒排除,因为它可能会降低性能。
- 检查所使用的网络端口Master和Worker允许通过防火墙。