diff --git a/pyopencl/__init__.py b/pyopencl/__init__.py index a8bdea15c238a114c5197ebfbd36b91aa3c78e65..bb7e0fb735dbbe84520a28cc024cb8cdf660199a 100644 --- a/pyopencl/__init__.py +++ b/pyopencl/__init__.py @@ -340,7 +340,20 @@ def _add_functionality(): def platform_repr(self): return "<pyopencl.Platform '%s' at 0x%x>" % (self.name, self.int_ptr) + def platform_get_cl_version(self): + import re + version_string = self.version + match = re.match(r"^OpenCL ([0-9]+)\.([0-9]+) .*$", version_string) + if match is None: + raise RuntimeError("platform %s returned non-conformant " + "platform version string '%s'" % + (self, version_string)) + + return int(match.group(1)), int(match.group(2)) + + Platform.__repr__ = platform_repr + Platform._get_cl_version = platform_get_cl_version # }}} @@ -367,16 +380,7 @@ def _add_functionality(): ", ".join(repr(dev) for dev in self.devices)) def context_get_cl_version(self): - import re - platform = self.devices[0].platform - plat_version_string = platform.version - match = re.match(r"^OpenCL ([0-9]+)\.([0-9]+) .*$", - plat_version_string) - if match is None: - raise RuntimeError("platform %s returned non-conformant " - "platform version string '%s'" % (platform, plat_version_string)) - - return int(match.group(1)), int(match.group(2)) + return self.devices[0].platform._get_cl_version() Context.__repr__ = context_repr from pytools import memoize_method diff --git a/test/test_wrapper.py b/test/test_wrapper.py index 747397bd6af7324013f30763df9c57526b36192d..c7ec91f9b68464c507d70eaa29022f405824c7be 100644 --- a/test/test_wrapper.py +++ b/test/test_wrapper.py @@ -629,10 +629,8 @@ def test_wait_for_events(ctx_factory): cl.wait_for_events([evt1, evt2]) -def test_unload_compiler(ctx_factory): - ctx = ctx_factory() - platform = ctx.devices[0].platform - if (ctx._get_cl_version() < (1, 2) or +def test_unload_compiler(platform): + if (platform._get_cl_version() < (1, 2) or cl.get_cl_header_version() < (1, 2)): from pytest import skip skip("clUnloadPlatformCompiler is only available in OpenCL 1.2")