Turn on parallel build for multi use commands

这个提交包含在:
nmannall
2025-01-21 15:22:24 +00:00
父节点 897aa1d252
当前提交 da79de828d
共有 3 个文件被更改,包括 3 次插入16 次删除

查看文件

@@ -512,13 +512,6 @@ class MPIGrid(FDTDGrid):
Global properties/objects are broadcast to all ranks whereas
local properties/objects are scattered to the relevant ranks.
"""
self.materials = self.comm.bcast(self.materials, root=self.COORDINATOR_RANK)
self.rxs = self.scatter_coord_objects(self.rxs)
self.voltagesources = self.scatter_coord_objects(self.voltagesources)
self.magneticdipoles = self.scatter_coord_objects(self.magneticdipoles)
self.hertziandipoles = self.scatter_coord_objects(self.hertziandipoles)
self.transmissionlines = self.scatter_coord_objects(self.transmissionlines)
self.scatter_snapshots()
if not self.is_coordinator():

查看文件

@@ -60,16 +60,10 @@ class MPIModel(Model):
self.G.calculate_local_extents()
def build_geometry(self):
self._broadcast_model()
super().build_geometry()
self._filter_geometry_objects()
def _broadcast_model(self):
model_config = config.get_model_config()
model_config.materials["maxpoles"] = self.comm.bcast(model_config.materials["maxpoles"])
def _filter_geometry_objects(self):
objects = self.comm.bcast(self.geometryobjects)
self.geometryobjects = []

查看文件

@@ -175,14 +175,14 @@ class Scene:
# Process commands that can only have a single instance
self.process_single_use_objects(model)
# Process multiple commands
self.process_multi_use_objects(model)
if (
isinstance(model, MPIModel)
and model.is_coordinator()
or not isinstance(model, MPIModel)
):
# Process multiple commands
self.process_multi_use_objects(model)
# Initialise geometry arrays for main and subgrids
for grid in [model.G] + model.subgrids:
grid.initialise_geometry_arrays()