This page has been translated automatically.
视频教程
界面
要领
高级
实用建议
基础
专业(SIM)
UnigineEditor
界面概述
资源工作流程
Version Control
设置和首选项
项目开发
调整节点参数
Setting Up Materials
设置属性
照明
Sandworm
使用编辑器工具执行特定任务
如何擴展編輯器功能
嵌入式节点类型
Nodes
Objects
Effects
Decals
光源
Geodetics
World Nodes
Sound Objects
Pathfinding Objects
Players
编程
基本原理
搭建开发环境
使用范例
C++
C#
UnigineScript
统一的Unigine着色器语言 UUSL (Unified UNIGINE Shader Language)
Plugins
File Formats
材质和着色器
Rebuilding the Engine Tools
GUI
双精度坐标
应用程序接口
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
Tutorials
注意! 这个版本的文档是过时的,因为它描述了一个较老的SDK版本!请切换到最新SDK版本的文档。
注意! 这个版本的文档描述了一个不再受支持的旧SDK版本!请升级到最新的SDK版本。

分布式生成

另请参阅#

观看这段视频,来自Sandworm地形生成系列视频教程:

地形生成是一项复杂的任务,根据区域大小和数据分辨率可能需要大量时间。Sandworm允许使用分布式计算生成地形。

注意
分布式计算是有意义的,当用于加快地形生成需要一个多小时。应用分布式计算来生成一个小地形区域与低分数据(每像素10米或更多)可能无利可图。

概念是使用多台计算机联合成一个网络,其中一台是Master并分配任务,另一台是Worker执行部分任务 分配给他们的工作(处理源数据)。 带有 Sandworm 工具的 UnigineEditor 和地形项目应该在 Master 上打开,而 Worker 运行控制台应用程序。 源文件(地理数据)和公共缓存应存储在共享文件夹中。 如果 Worker 仍有可用资源,则可以在其上运行其他进程并参与地形生成 立即,即不重新启动生成过程。 Master 根据结果创建资源。

注意
为特定地形生成作业执行计算的所有工作站必须运行在相同的操作系统上(Windows或Linux)。UNIGINE SDK版本也应该是一样的。

该过程的参与者:

Master

管理整个生成过程的计算机,形成任务池,并在 Worker 之间分配任务。 Master 跟踪所有连接的 Worker 并将任务分配给他们。Master 本身也执行计算。 Master 通过 Sandworm 运行。

Worker

通过网络连接到Master并执行由Master分配的特定任务的计算机。通过运行bin/SandwormNode_x64.exe启用Worker

注意
连接到一个 MasterWorker 的数量不受限制(只要网络带宽允许)。

启动顺序#

警告

在启动任何网络参与者之前,为其禁用 Microprofile - 在 \data\configs\default.user 文件中,设置:

源代码
<microprofile_enabled>0</microprofile_enabled>

否则,每个实例都会运行Microprofile,造成内存浪费。

您可以启动主和Worker在任何序列。

您可以在地形生成进程启动后运行额外的Worker, Master将为它们分配作业。

一台机器可以运行多个 WorkerWorker 可以有多个通过 Master 上的菜单激活的进程(分支)。

使用分布式生成#

流程:

  1. 准备环境.

    将所有计算机连接到网络。 建议使用带宽至少为 1 Gb 的网络。 否则,您可能会遇到网络延迟(请参阅 故障排除 部分)。 检查您的网络是否阻止广播,否则分布式计算将不可用。

    注意
    建议使用SSD盘存储生成缓存和输出文件。如果使用HDD,由于多次读/写和磁头定位操作,生成性能会显著降低。
  2. On each Worker computer, run the Worker console application.

    注意
    二进制可执行文件的版本必须是相同的所有计算机。
  3. Master 计算机上:

    • 运行 UnigineEditor 并打开 Sandworm 工具 (Tools -> Sandworm).
    • 打开您将要生成的*.sworm资源,并配置生成设置
    • 启用 Distributed 选项并指定 Master 的设置。 保存项目配置。
    • 单击Generate按钮。带有可用Worker列表的窗口将会打开:

      分布式生成窗口

      注意
      如果您重新生成项目时,这个窗口将会出现警告后失去任何手动修改。

      一旦这个窗口是开放的,Worker开始解析共享源数据和生成缓存。这个过程的最后,Worker: Ready To Import显示控制台消息。

    • Worker上单击鼠标右键,可以获得以下选项:

      Worker的设置

      Worker的设置
      Create Fork 在同一个Worker上再创建一个进程。
      最佳实践
      我们估计一个合理数量的分支是4到6。更高的值降低WorkerPerformance.
      Shutdown 从列表中删除分支或Worker
      Clear Cache 清除Worker的本地缓存。

      设置您需要的分支数量并单击Generate

  4. 在生成过程中,如果需要,您可以连接更多 Worker:在 Worker 上运行控制台应用程序(即使该 Worker 已经在运行 一个或几个)。 这个控制台应用程序会自动连接到 MasterMaster 会为这个 Worker 分配一个进程。

  5. 当地形生成完成后,禁用所有Worker进程。

设置主#

要设置Master,请在Generation Settings中启用Distributed Generation:切换Enabled选项。

Master的设置:

Enabled 如果打开,则为地形生成启用分布式计算,并且运行带有Sandworm的Editor的机器为Master
Broadcast Port 端口Sandworm Worker听。
Server Port 用于信息交换的端口。
Workload on Master 地形生成由Master百分比。
注意
所有源代码和项目缓存都应该存储在Master和所有Worker都可以访问的共享位置。该位置的路径在MasterWorker上应该是相同的。

建立一个Worker#

注意
Worker应该具有与Master相同的OS和UNIGINE SDK版本。

建立一个Worker:

  1. Worker 计算机上创建一个新的 UNIGINE 项目,并启用相应的项目功能

    启用 Worker 应用程序

  2. 运行存储在项目的bin/文件夹中的SandwormNode_x64.exe控制台应用程序。Worker已经准备好的消息应该出现在控制台中:

    Worker已准备好生成

  3. 设置路径存储本地缓存使用--sw_local_cache_path控制台命令。
  4. 如果要更改默认广播端口,请使用--sw_broadcast_port
  5. Worker检测Master网络,连接,下载现场,准备所有层(检查他们的可访问性),并准备好地形的一代。

Worker 应用程序正在运行并准备好生成地形

工作程序正在运行,可以生成地形

您可以在一台机器上运行多个控制台应用程序和/或叉一个Worker通过Master创建多个进程。

注意
  • MasterWorker上的操作系统版本应该是相同的。
  • SDK版本的编辑器运行在Master应该一样的控制台应用程序的版本(包括精度)。
  • Development/Release版本的SDK无关紧要。

当地形生成完成,不再需要Worker时,在Worker上关闭控制台应用程序或通过Master关闭进程。

在无头模式生成景观#

Sandworm 项目中创建的景观也可以在 无头(Headless)模式下生成,而不需要运行 UNIGINE 编辑器。

做某事:

  1. 配置一个UNIGINE项目以启用相应的特性

  2. 在编辑器中创建和配置 Sandworm 项目,然后关闭编辑器。

  3. 在命令行中执行如下命令:

    命令行
    PS D:\projects_location\unigine_project\bin> .\SandwormNode_double_x64.exe --sw_generate project_name.sworm

    其中 project_name.sworm 是编辑器中显示的 Sandworm 项目名称。

在输出设置中,景观生成到设置为 export world 的世界中。在开始生成过程之前,还要下载项目中使用的任何TMS源代码。

警告
Headless 模式不适用于分布式计算。

故障排除#

  • 如果网络延迟太大,尽管1Gb或更高的带宽,这可能是由连接到网络的100mb或10mb设备造成的。数据交换速率下降到该设备支持的最大速率,降低了生成速度。
  • 检查MasterWorker上的项目是否使用相同的精度(doublefloat)、相同的引擎版本和相同的GDAL版本,否则Worker将显示 Different Builds错误。
  • 使用SSD存储源数据和cache.共享
  • 将应用程序添加到防病毒排除,因为它可能会降低性能。
  • 检查所使用的网络端口MasterWorker允许通过防火墙。
最新更新: 2024-08-16
Build: ()