def METHOD_NAME(self):
    """
    tests the addition  kernel
    """
    maxi = int(round(numpy.log2(self.shape)))
    for i in range(maxi):
        d_array_result = pyopencl.array.empty_like(self.d_array_img)
        wg = 1 << i
        try:
            evt = self.program.addition(self.queue, (self.shape,), (wg,),
                                        self.d_array_img.data,
                                        self.d_array_5.data,
                                        d_array_result.data,
                                        numpy.int32(self.shape))
            evt.wait()
        except Exception as error:
            max_valid_wg = self.program.addition.get_work_group_info(pyopencl.kernel_work_group_info.WORK_GROUP_SIZE, self.ctx.devices[0])
            msg = "Error %s on WG=%s: %s" % (error, wg, max_valid_wg)
            self.assertLess(max_valid_wg, wg, msg)
            break
        else:
            res = d_array_result.get()
            good = numpy.allclose(res, self.data - 5)
            if good and wg > self.max_valid_wg:
                self.__class__.max_valid_wg = wg
            self.assertTrue(good, "calculation is correct for WG=%s" % wg)