diff options
Diffstat (limited to 'src/silx/opencl/test/test_addition.py')
-rw-r--r-- | src/silx/opencl/test/test_addition.py | 72 |
1 files changed, 51 insertions, 21 deletions
diff --git a/src/silx/opencl/test/test_addition.py b/src/silx/opencl/test/test_addition.py index d6cf1ac..98beab4 100644 --- a/src/silx/opencl/test/test_addition.py +++ b/src/silx/opencl/test/test_addition.py @@ -40,16 +40,17 @@ import pytest import unittest from ..common import ocl, _measure_workgroup_size, query_kernel_info + if ocl: import pyopencl import pyopencl.array from ..utils import get_opencl_code + logger = logging.getLogger(__name__) @unittest.skipUnless(ocl, "PyOpenCl is missing") class TestAddition(unittest.TestCase): - @classmethod def setUpClass(cls): super(TestAddition, cls).setUpClass() @@ -58,8 +59,9 @@ class TestAddition(unittest.TestCase): if logger.getEffectiveLevel() <= logging.INFO: cls.PROFILE = True cls.queue = pyopencl.CommandQueue( - cls.ctx, - properties=pyopencl.command_queue_properties.PROFILING_ENABLE) + cls.ctx, + properties=pyopencl.command_queue_properties.PROFILING_ENABLE, + ) else: cls.PROFILE = False cls.queue = pyopencl.CommandQueue(cls.ctx) @@ -68,7 +70,10 @@ class TestAddition(unittest.TestCase): @classmethod def tearDownClass(cls): super(TestAddition, cls).tearDownClass() - print("Maximum valid workgroup size %s on device %s" % (cls.max_valid_wg, cls.ctx.devices[0])) + print( + "Maximum valid workgroup size %s on device %s" + % (cls.max_valid_wg, cls.ctx.devices[0]) + ) cls.ctx = None cls.queue = None @@ -95,11 +100,20 @@ class TestAddition(unittest.TestCase): 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 = 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]) + 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 @@ -117,23 +131,39 @@ class TestAddition(unittest.TestCase): for platform in ocl.platforms: for did, device in enumerate(platform.devices): meas = _measure_workgroup_size((platform.id, device.id)) - self.assertEqual(meas, device.max_work_group_size, - "Workgroup size for %s/%s: %s == %s" % (platform, device, meas, device.max_work_group_size)) + self.assertEqual( + meas, + device.max_work_group_size, + "Workgroup size for %s/%s: %s == %s" + % (platform, device, meas, device.max_work_group_size), + ) def test_query(self): """ tests that all devices are working properly ... lengthy and error prone """ - for what in ("COMPILE_WORK_GROUP_SIZE", - "LOCAL_MEM_SIZE", - "PREFERRED_WORK_GROUP_SIZE_MULTIPLE", - "PRIVATE_MEM_SIZE", - "WORK_GROUP_SIZE"): - logger.info("%s: %s", what, query_kernel_info(program=self.program, kernel="addition", what=what)) - - # Not all ICD work properly .... - #self.assertEqual(3, len(query_kernel_info(program=self.program, kernel="addition", what="COMPILE_WORK_GROUP_SIZE")), "3D kernel") - - min_wg = query_kernel_info(program=self.program, kernel="addition", what="PREFERRED_WORK_GROUP_SIZE_MULTIPLE") - max_wg = query_kernel_info(program=self.program, kernel="addition", what="WORK_GROUP_SIZE") + for what in ( + "COMPILE_WORK_GROUP_SIZE", + "LOCAL_MEM_SIZE", + "PREFERRED_WORK_GROUP_SIZE_MULTIPLE", + "PRIVATE_MEM_SIZE", + "WORK_GROUP_SIZE", + ): + logger.info( + "%s: %s", + what, + query_kernel_info(program=self.program, kernel="addition", what=what), + ) + + # Not all ICD work properly .... + # self.assertEqual(3, len(query_kernel_info(program=self.program, kernel="addition", what="COMPILE_WORK_GROUP_SIZE")), "3D kernel") + + min_wg = query_kernel_info( + program=self.program, + kernel="addition", + what="PREFERRED_WORK_GROUP_SIZE_MULTIPLE", + ) + max_wg = query_kernel_info( + program=self.program, kernel="addition", what="WORK_GROUP_SIZE" + ) self.assertEqual(max_wg % min_wg, 0, msg="max_wg is a multiple of min_wg") |