def testSparseReduce(self): ref_env = CPUEnvironment() tests = ( (128, 16), (128, 1024 * 8), (50, 531), (40, 24), (457, 389), (457, 5) ) for final_length, multiplier in tests: for dtype in (numpy.float32, numpy.complex64): data = getTestArray((final_length * multiplier,), dtype, 1) d_data = self.env.toDevice(data) ref_data = ref_env.toDevice(data) reduce = createReduce(self.env, dtype) ref_reduce = createReduce(ref_env, dtype) d_result = reduce.sparse(d_data, final_length=final_length) ref_result = ref_reduce.sparse(ref_data, final_length=final_length) self.assert_(diff(self.env.fromDevice(d_result), ref_env.fromDevice(ref_result)) < 1e-3)
def testFullReduce(self): for size in (140, 512 * 512 + 150, 512 * 231): for dtype in (numpy.float32, numpy.complex64): data = getTestArray((size,), dtype, 1) d_data = self.env.toDevice(data) reduce = createReduce(self.env, dtype) # FIXME: for some reason, error here is very high # is it because of the many additions? self.assert_(diff(reduce(d_data), numpy.sum(data)) < 1e-3)