你已经派生过 gprMax
镜像自地址
https://gitee.com/sunhf/gprMax.git
已同步 2025-08-08 07:24:19 +08:00
Avoid divide by 0 when calculating MPI rank from coordinate
这个提交包含在:
@@ -112,9 +112,9 @@ class MPIGrid(FDTDGrid):
|
|||||||
step_size = self.global_size // self.mpi_tasks
|
step_size = self.global_size // self.mpi_tasks
|
||||||
overflow = self.global_size % self.mpi_tasks
|
overflow = self.global_size % self.mpi_tasks
|
||||||
grid_coord = np.where(
|
grid_coord = np.where(
|
||||||
(step_size + 1) * overflow > coord,
|
(step_size + 1) * overflow >= coord,
|
||||||
coord // (step_size + 1),
|
coord // (step_size + 1),
|
||||||
(coord - overflow) // step_size,
|
(coord - overflow) // np.maximum(step_size, 1),
|
||||||
)
|
)
|
||||||
return self.comm.Get_cart_rank(grid_coord.tolist())
|
return self.comm.Get_cart_rank(grid_coord.tolist())
|
||||||
|
|
||||||
@@ -313,22 +313,13 @@ class MPIGrid(FDTDGrid):
|
|||||||
self.recv_halo_map[dim][Dir.POS].Commit()
|
self.recv_halo_map[dim][Dir.POS].Commit()
|
||||||
|
|
||||||
def calculate_local_extents(self):
|
def calculate_local_extents(self):
|
||||||
print(f"[Rank {self.rank}] Global size = {self.global_size}")
|
|
||||||
self.size = self.global_size // self.mpi_tasks
|
self.size = self.global_size // self.mpi_tasks
|
||||||
print(f"[Rank {self.rank}] Initial size = {self.size}")
|
|
||||||
|
|
||||||
self.lower_extent = self.size * self.coords + np.minimum(
|
self.lower_extent = self.size * self.coords + np.minimum(
|
||||||
self.coords, self.global_size % self.mpi_tasks
|
self.coords, self.global_size % self.mpi_tasks
|
||||||
)
|
)
|
||||||
|
|
||||||
print(f"[Rank {self.rank}] Lower extent = {self.lower_extent}")
|
self.size += self.coords < (self.global_size % self.mpi_tasks)
|
||||||
|
|
||||||
self.size += self.coords < self.global_size % self.mpi_tasks
|
|
||||||
|
|
||||||
print(f"[Rank {self.rank}] Expanded size = {self.size}")
|
|
||||||
|
|
||||||
# at_end = (self.mpi_tasks - self.coords) <= 1
|
|
||||||
# self.size += at_end * self.global_size % self.mpi_tasks
|
|
||||||
|
|
||||||
# Account for negative halo
|
# Account for negative halo
|
||||||
# Field arrays are created with dimensions size + 1 so space for
|
# Field arrays are created with dimensions size + 1 so space for
|
||||||
@@ -338,5 +329,3 @@ class MPIGrid(FDTDGrid):
|
|||||||
self.size += self.neighbours[:, 0] >= 0
|
self.size += self.neighbours[:, 0] >= 0
|
||||||
self.lower_extent -= self.neighbours[:, 0] >= 0
|
self.lower_extent -= self.neighbours[:, 0] >= 0
|
||||||
self.upper_extent = self.lower_extent + self.size
|
self.upper_extent = self.lower_extent + self.size
|
||||||
|
|
||||||
print(f"[Rank {self.rank}] With positive halo size = {self.size}")
|
|
||||||
|
在新工单中引用
屏蔽一个用户