def check22(self, equal, zero, s, r, typecode): size = len(r) for count in range(size): r[:] = zero Sendrecv([s, count], [r, count]) for i in range(count): self.assertTrue(equal(r[i], s[i])) for i in range(count, size): self.assertTrue(equal(r[i], zero[0])) for count in range(size): r[:] = zero Sendrecv([s, (count, None)], [r, (count, None)]) for i in range(count): self.assertTrue(equal(r[i], s[i])) for i in range(count, size): self.assertTrue(equal(r[i], zero[0])) for disp in range(size): r[:] = zero Sendrecv([s, (None, disp)], [r, (None, disp)]) for i in range(disp): self.assertTrue(equal(r[i], zero[0])) for i in range(disp, size): self.assertTrue(equal(r[i], s[i])) for disp in range(size): for count in range(size - disp): r[:] = zero Sendrecv([s, (count, disp)], [r, (count, disp)]) for i in range(0, disp): self.assertTrue(equal(r[i], zero[0])) for i in range(disp, disp + count): self.assertTrue(equal(r[i], s[i])) for i in range(disp + count, size): self.assertTrue(equal(r[i], zero[0]))
def test_map_indexed_arg_components(): W = TensorElement("CG", triangle, 1) A = Coefficient(W) i, j = indices(2) # Ordered indices: d = map_indexed_arg_components(A[i, j]) assert equal(d, [0, 1, 2, 3]) # Swapped ordering of indices: d = map_indexed_arg_components(A[j, i]) assert equal(d, [0, 2, 1, 3])
def test_map_componenttensor_arg_components(): W = TensorElement("CG", triangle, 1) A = Coefficient(W) i, j = indices(2) # Ordered indices: d = map_component_tensor_arg_components(as_tensor(2 * A[i, j], (i, j))) assert equal(d, [0, 1, 2, 3]) # Swapped ordering of indices: d = map_component_tensor_arg_components(as_tensor(2 * A[i, j], (j, i))) assert equal(d, [0, 2, 1, 3])
def check4(self, equal, z, s, r, typecode): datatype = typemap[typecode] for type in (None, typecode, datatype): for p in range(0, len(s)): r[:] = z Sendrecv([s, p, None, type], [r, p, None, type]) self.assertTrue(equal(s[:p], r[:p])) for q in range(p, len(s)): count, displ = q - p, p r[:] = z Sendrecv([s, count, displ, type], [r, count, displ, type]) self.assertTrue(equal(s[p:q], r[p:q])) self.assertTrue(equal(z[:p], r[:p])) self.assertTrue(equal(z[q:], r[q:]))
def check32(self, equal, z, s, r, typecode): datatype = typemap[typecode] for type in (None, typecode, datatype): for p in range(len(s)): r[:] = z Alltoallv([s, (p, None), type], [r, (p, None), type]) self.assertTrue(equal(s[:p], r[:p])) for q in range(p, len(s)): count, displ = q - p, p r[:] = z Alltoallv([s, (count, [displ]), type], [r, (count, [displ]), type]) self.assertTrue(equal(s[p:q], r[p:q])) self.assertTrue(equal(z[:p], r[:p])) self.assertTrue(equal(z[q:], r[q:]))
def check21(self, equal, zero, s, r, typecode): datatype = typemap[typecode] for type in (None, typecode, datatype): r[:] = zero Sendrecv([s, type], [r, type]) self.assertTrue(equal(s, r))
def check31(self, equal, z, s, r, typecode): datatype = typemap[typecode] for type in (None, typecode, datatype): for count in (None, len(s)): r[:] = z Sendrecv([s, count, type], [r, count, type]) self.assertTrue(equal(s, r))
def check4(self, equal, z, s, r, typecode): datatype = typemap[typecode] for type in (None, typecode, datatype): for p in range(0, len(s)): r[:] = z Alltoallv([s, p, None, type], [r, p, None, type]) self.assertTrue(equal(s[:p], r[:p])) for q in range(p, len(s)): count, displ = q-p, p r[:] = z Alltoallv([s, count, [displ], type], [r, count, [displ], type]) self.assertTrue(equal(s[p:q], r[p:q])) self.assertTrue(equal(z[:p], r[:p])) self.assertTrue(equal(z[q:], r[q:]))
def _test4(self, equal, z, s, r, typecode): datatype = MPI.__TypeDict__[typecode] for type in (None, typecode, datatype): for p in range(0, len(s)): r[:] = z Sendrecv([s, p, None, type], [r, p, None, type]) self.assertTrue(equal(s[:p], r[:p])) for q in range(p, len(s)): count, displ = q-p, p r[:] = z Sendrecv([s, count, displ, type], [r, count, displ, type]) self.assertTrue(equal(s[p:q], r[p:q])) self.assertTrue(equal(z[:p], r[:p])) self.assertTrue(equal(z[q:], r[q:]))
def _test32(self, equal, z, s, r, typecode): datatype = MPI.__TypeDict__[typecode] for type in (None, typecode, datatype): for p in range(0, len(s)): r[:] = z Sendrecv([s, (p, None), type], [r, (p, None), type]) self.assertTrue(equal(s[:p], r[:p])) for q in range(p, len(s)): count, displ = q-p, p r[:] = z Sendrecv([s, (count, displ), type], [r, (count, displ), type]) self.assertTrue(equal(s[p:q], r[p:q])) self.assertTrue(equal(z[:p], r[:p])) self.assertTrue(equal(z[q:], r[q:]))
def items_equal(*items): if items: first = items[0] others = items[1:] return all(equal(first, other) for other in others) else: return True
def _test2(self, equal, zero, s, r, typecode): datatype = MPI.__TypeDict__[typecode] for type in (None, typecode, datatype): r[:] = zero Sendrecv([s, type], [r, type]) self.assertTrue(equal(s, r))
def check32(self, equal, z, s, r, typecode): datatype = typemap[typecode] for type in (None, typecode, datatype): for p in range(0, len(s)): r[:] = z Sendrecv([s, (p, None), type], [r, (p, None), type]) self.assertTrue(equal(s[:p], r[:p])) for q in range(p, len(s)): count, displ = q-p, p r[:] = z Sendrecv([s, (count, displ), type], [r, (count, displ), type]) self.assertTrue(equal(s[p:q], r[p:q])) self.assertTrue(equal(z[:p], r[:p])) self.assertTrue(equal(z[q:], r[q:]))
def _test31(self, equal, z, s, r, typecode): datatype = MPI.__TypeDict__[typecode] for count in (None, len(s)): for type in (None, typecode, datatype): r[:] = z Sendrecv([s, count, type], [r, count, type]) self.assertTrue(equal(s, r))
def check22(self, equal, zero, s, r, typecode): size = len(r) for count in range(size): r[:] = zero Alltoallv([s, count], [r, count]) for i in range(count): self.assertTrue(equal(r[i], s[i])) for i in range(count, size): self.assertTrue(equal(r[i], zero[0])) for count in range(size): r[:] = zero Alltoallv([s, (count, None)], [r, (count, None)]) for i in range(count): self.assertTrue(equal(r[i], s[i])) for i in range(count, size): self.assertTrue(equal(r[i], zero[0])) for disp in range(size): for count in range(size-disp): r[:] = zero Alltoallv([s, ([count], [disp])], [r, ([count], [disp])]) for i in range(0, disp): self.assertTrue(equal(r[i], zero[0])) for i in range(disp, disp+count): self.assertTrue(equal(r[i], s[i])) for i in range(disp+count, size): self.assertTrue(equal(r[i], zero[0]))
def test_map_indexed_arg_components2(): # This was the previous return type, copied here to preserve the # test without having to rewrite def map_indexed_arg_components2(Aii): c1, c2 = map_indexed_to_arg_components(Aii) d = [None] * len(c1) for k in range(len(c1)): d[c1[k]] = k return d W = TensorElement("CG", triangle, 1) A = Coefficient(W) i, j = indices(2) # Ordered indices: d = map_indexed_arg_components2(A[i, j]) assert equal(d, [0, 1, 2, 3]) # Swapped ordering of indices: d = map_indexed_arg_components2(A[j, i]) assert equal(d, [0, 2, 1, 3])
def _test1(self, equal, zero, s, r, t): r[:] = zero Sendrecv(s, r) self.assertTrue(equal(s, r))
def check1(self, equal, zero, s, r, t): r[:] = zero Alltoallv(s, r) self.assertTrue(equal(s, r))