We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent 75900a7 commit c852f2cCopy full SHA for c852f2c
pylops_mpi/basicoperators/MatrixMult.py
@@ -108,18 +108,14 @@ def local_block_spit(global_shape: Tuple[int, int],
108
if not ( isinstance(rank, int) and 0 <= rank < size ):
109
raise ValueError(f"rank must be integer in [0, {size}), got {rank!r}")
110
111
- proc_i, proc_j = divmod(rank, p_prime)
+ pr, pc = divmod(rank, p_prime)
112
orig_r, orig_c = global_shape
113
-
114
new_r = math.ceil(orig_r / p_prime) * p_prime
115
new_c = math.ceil(orig_c / p_prime) * p_prime
116
117
blkr, blkc = new_r // p_prime, new_c // p_prime
118
119
- i0, j0 = proc_i * blkr, proc_j * blkc
120
- i1, j1 = min(i0 + blkr, orig_r), min(j0 + blkc, orig_c)
121
122
- return slice(i0, i1), slice(j0, j1)
+ rs, cs = pr * blkr, pc * blkc
+ re, ce = min(rs + blkr, orig_r), min(cs + blkc, orig_c)
+ return slice(rs, re), slice(cs, ce)
123
124
125
def block_gather(x: DistributedArray, orig_shape: Tuple[int, int], comm: MPI.Comm):
0 commit comments