def METHOD_NAME(self):
    """
    tests the combine (linear combination) kernel
    """
    width = numpy.int32(157)
    height = numpy.int32(147)
    coeff1 = numpy.random.rand(1)[0].astype(numpy.float32)
    coeff2 = numpy.random.rand(1)[0].astype(numpy.float32)
    mat1 = numpy.random.rand(height, width).astype(numpy.float32)
    mat2 = numpy.random.rand(height, width).astype(numpy.float32)
    gpu_mat1 = pyopencl.array.to_device(self.queue, mat1)
    gpu_mat2 = pyopencl.array.to_device(self.queue, mat2)
    gpu_out = pyopencl.array.empty(self.queue, mat1.shape, dtype=numpy.float32, order="C")
    t0 = time.time()
    try:
        k1 = self.program.combine(self.queue, (int(width), int(height)), None,
                                  gpu_mat1.data, coeff1, gpu_mat2.data, coeff2,
                                  gpu_out.data, numpy.int32(0),
                                  width, height)
    except pyopencl.LogicError as error:
        logger.warning("%s in test_combine", error)
    res = gpu_out.get()
    t1 = time.time()
    ref = my_combine(mat1, coeff1, mat2, coeff2)
    t2 = time.time()
    delta = abs(ref - res).max()
    logger.debug("delta=%s" % delta)
    self.assertLess(delta, 1e-4, "delta=%s" % (delta))
    if self.PROFILE:
        logger.debug("Global execution time: CPU %.3fms, GPU: %.3fms." % (1000.0 * (t2 - t1), 1000.0 * (t1 - t0)))
        logger.debug("Linear combination took %.3fms" % (1e-6 * (k1.profile.end - k1.profile.start)))