本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
配置空间域
对于空间域,必须指定 partitioning_strategy
。此属性的值是您为分区策略指定的名称,该分区策略在架构的另一个部分中定义。
MySpatialDomain: launch_apps_by_partitioning_strategy: partitioning_strategy: "MyGridPartitioning" grid_partition: x: 2 y: 2 app_config: package: "s3://weaver-myproject-111122223333-us-west-2/MySpatialApp.zip" launch_command: ["MySpatialApp"] required_resource_units: compute: 1
注意
SimSpace Weaver 应用程序SDK版本 1.12.x 项目对应用程序.zip 文件和架构使用单独的存储桶:
织工-
lowercase-project-name
-account-number
-app-zips-region
织工-
lowercase-project-name
-account-number
-架构-region
使用Grid
拓扑(此版本中唯一支持的拓扑)的分区策略指示 SimSpace Weaver 在网格中排列此域的空间应用程序分区。grid_partition
属性指定分区网格的行数和列数。
SimSpace Weaver 将为分区网格中的每个像元启动 1 个空间应用程序实例。例如,如果空间域具有grid_partition
值x: 2
和y: 2
,则该空间域中有 2 * 2 = 4 个分区。 SimSpace Weaver 将启动在空间域中配置的 4 个应用程序实例,并为每个应用程序实例分配 1 个分区。
空间域的资源需求
您可以为每个工作线程分配最多 17 个计算资源单位。您可以指定每个空间应用程序在空间域的 app_config
部分使用的计算资源单位的数量。
例 显示空间应用程序计算资源单位的示例架构片段
MySpatialDomain: launch_apps_by_partitioning_strategy: partitioning_strategy: "MyGridPartitioning" grid_partition: x: 2 y: 2 app_config: package: "s3://weaver-myproject-111122223333-artifacts-us-west-2/MySpatialApp.zip" launch_command: ["MySpatialApp"] required_resource_units: compute: 1
要计算域所需的计算资源单位数量,请将网格中的像元数量(在 grid_partition
中,x
* y
)乘以分配给空间应用程序的计算资源单位数量。
在上述示例中,域 MySpatialDomain
指定:
x
:2
y
:2
compute
:1
MySpatialDomain
的网格有 2 * 2 = 4 个像元。空间域需要 4 * 1 = 4 个计算资源单位。
架构中指定的所有域的计算资源单位总数必须小于或等于工作线程的数量 desired
乘以每个工作线程的最大计算资源单位数量 (17)。
多个空间域
您可以将模拟配置为使用多个的空间域。例如,您可以使用 1 个空间域来控制模拟中的主角色(例如,人和汽车),同时使用不同的空间域来控制环境。
您也可以使用多个空间域为模拟的不同部分分配不同的资源。例如,如果您的模拟中有一种类型的实体的实例数量比其他类型多 10 倍,则可以创建不同的域来处理各种实体类型,并为具有更多实体的域分配更多资源。
重要
SimSpace Weaver 1.14.0 之前的版本不支持多个空间域。
重要
AWS SimSpace Weaver Local 目前不支持多个空间域。有关 SimSpace Weaver Local,请参阅 当地发展 SimSpace Weaver。
重要
SimSpace Weaver 每次仿真最多支持 5 个域。这包括所有空间、自定义和服务域。
配置多个空间域
要配置多个空间域,请将其他空间域定义作为单独的命名部分添加到架构中。每个域都必须指定 launch_apps_by_partitioning_strategy
密钥。请参阅以下示例架构。
sdk_version: "1.14" workers: MyComputeWorkers: type: "sim.c5.24xlarge" desired: 1 clock: tick_rate: "30" partitioning_strategies: MyGridPartitioning: topology: Grid aabb_bounds: x: [0, 1000] y: [0, 1000] domains: MySpatialDomain: launch_apps_by_partitioning_strategy: partitioning_strategy: "MyGridPartitioning" grid_partition: x: 2 y: 2 app_config: package: "s3://weaver-myproject-111122223333-artifacts-us-west-2/MySpatialApp.zip" launch_command: ["MySpatialApp"] required_resource_units: compute: 1 MySecondSpatialDomain: launch_apps_by_partitioning_strategy: partitioning_strategy: "MyGridPartitioning" grid_partition: x: 2 y: 2 app_config: package: "s3://weaver-myproject-111122223333-artifacts-us-west-2/MySpatialApp2.zip" launch_command: ["MySpatialApp2"] required_resource_units: compute: 1
将空间域放在一起
在某些情况下,您可能需要将空间域的分区放在另一个域的分区旁。如果这些分区相互创建跨域订阅,则可以改善性能特征。
将顶级密钥placement_constraints
添加到架构中,以指定 SimSpace Weaver 应将哪些域放在一起。所需的 on_workers
键必须引用架构中名为 workers
的配置。
例 显示放置在一起的空间域的示例架构片段
workers: MyComputeWorkers: type: "sim.c5.24xlarge" desired: 2 placement_constraints: - placed_together: ["MySpatialDomain", "MySecondSpatialDomain"] on_workers: ["MyComputeWorkers"]
重要
如果您使用置放群组:
确保 x * y 是工作线程数量的倍数。
确保置放群组的值是放置在一起的域的网格维度的公因数。
如果您不使用置放群组:
确保空间域网格的 1 个轴具有等于工作线数量的公因数。
有关置放群组的更多信息,请参阅分区策略。
有关空间域的常见问题解答
问题 1:如何向现有模拟添加另一个空间域?
-
对于正在运行的模拟 – 无法更改正在运行的模拟的配置。更改架构中的域配置,上传架构和应用程序 zip,然后启动新的模拟。
-
对于新的模拟 – 将域配置添加到架构,上传架构和应用程序 zip,然后启动新的模拟。
空间域问题排查
当您尝试启动模拟但域配置无效时,可能出现以下错误。
"StartError": "[{\"errorType\":\"SchemaFormatInvalid\",\"errorMessage\":
\"We were unable to determine an arrangement of your domains that would fit
within the provided set of workers. This can generally be resolved by
increasing the number of workers if able, decreasing your domains\u0027
[\u0027\u0027grid_partition\u0027\u0027] values, or adjusting the
dimensions of your [\u0027\u0027grid_placement_groups\u0027\u0027].\"}]"
潜在原因
该架构为应用程序分配的计算资源单位数量多于工作线程上可用的计算资源单位数量。
SimSpace Weaver 无法确定将域名放在工作人员身上的安排。当您指定多个空间域,但域网格之间没有公因数或倍数(例如 2x4 格网和 3x5 网格之间)时,就会发生这种情况。