Beispiel #1
0
 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])
Beispiel #4
0
 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:]))
Beispiel #5
0
 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))
Beispiel #7
0
 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))
Beispiel #8
0
 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))
Beispiel #9
0
 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:]))
Beispiel #10
0
 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:]))
Beispiel #11
0
 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:]))
Beispiel #12
0
def items_equal(*items):
    if items:
        first = items[0]
        others = items[1:]
        return all(equal(first, other) for other in others)
    else:
        return True
Beispiel #13
0
 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))
Beispiel #14
0
 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:]))
Beispiel #15
0
 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))
Beispiel #16
0
 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))
Beispiel #17
0
 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])
Beispiel #19
0
 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))
Beispiel #21
0
 def check1(self, equal, zero, s, r, t):
     r[:] = zero
     Alltoallv(s, r)
     self.assertTrue(equal(s, r))