From 440e649de7ab79d12d0b3f9ae2af52b86b7313c9 Mon Sep 17 00:00:00 2001 From: Matthias Diener Date: Wed, 7 Sep 2022 15:08:27 -0500 Subject: [PATCH 1/3] LoopyPyOpenCLTarget: pass through limit_arg_size_nbytes --- pytato/target/loopy/__init__.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/pytato/target/loopy/__init__.py b/pytato/target/loopy/__init__.py index 9bacb912b..c06dbcf9b 100644 --- a/pytato/target/loopy/__init__.py +++ b/pytato/target/loopy/__init__.py @@ -85,17 +85,25 @@ class LoopyPyOpenCLTarget(LoopyTarget): The :mod:`pyopencl` device used to construct the :class:`loopy.PyOpenCLTarget`, or *None*. + + .. attribute:: limit_arg_size_nbytes + + An optional int that indicates the size limit of kernel arguments + and gets passed to :class:`loopy.PyOpenCLTarget`. """ - def __init__(self, device: Optional["pyopencl.Device"] = None): + def __init__(self, device: Optional["pyopencl.Device"] = None, + limit_arg_size_nbytes: Optional[int] = None): if device is not None: from warnings import warn warn("Passing 'device' is deprecated and will stop working in 2023.", DeprecationWarning, stacklevel=2) + self.limit_arg_size_nbytes = limit_arg_size_nbytes def get_loopy_target(self) -> "loopy.LoopyPyOpenCLTarget": import loopy as lp - return lp.PyOpenCLTarget() + return lp.PyOpenCLTarget( + limit_arg_size_nbytes=self.limit_arg_size_nbytes) def bind_program(self, program: loopy.TranslationUnit, bound_arguments: Mapping[str, Any]) -> BoundProgram: From 2942fbfd452bfbdad5b9fbc5e4b637cdb896e9ad Mon Sep 17 00:00:00 2001 From: Matthias Diener Date: Mon, 12 Sep 2022 17:55:40 -0500 Subject: [PATCH 2/3] accept a loopy_target instead --- pytato/target/loopy/__init__.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pytato/target/loopy/__init__.py b/pytato/target/loopy/__init__.py index c06dbcf9b..9c8b5aace 100644 --- a/pytato/target/loopy/__init__.py +++ b/pytato/target/loopy/__init__.py @@ -93,17 +93,19 @@ class LoopyPyOpenCLTarget(LoopyTarget): """ def __init__(self, device: Optional["pyopencl.Device"] = None, - limit_arg_size_nbytes: Optional[int] = None): + loopy_target: Optional[loopy.PyOpenCLTarget] = None) -> None: if device is not None: from warnings import warn warn("Passing 'device' is deprecated and will stop working in 2023.", DeprecationWarning, stacklevel=2) - self.limit_arg_size_nbytes = limit_arg_size_nbytes + self.loopy_target = loopy_target def get_loopy_target(self) -> "loopy.LoopyPyOpenCLTarget": + if self.loopy_target: + return self.loopy_target + import loopy as lp - return lp.PyOpenCLTarget( - limit_arg_size_nbytes=self.limit_arg_size_nbytes) + return lp.PyOpenCLTarget() def bind_program(self, program: loopy.TranslationUnit, bound_arguments: Mapping[str, Any]) -> BoundProgram: From 8e9e38a84ad02926451a905b2d353238f882c5f3 Mon Sep 17 00:00:00 2001 From: Matthias Diener Date: Mon, 12 Sep 2022 23:11:12 -0500 Subject: [PATCH 3/3] fix doc --- pytato/target/loopy/__init__.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pytato/target/loopy/__init__.py b/pytato/target/loopy/__init__.py index 9c8b5aace..f544989d8 100644 --- a/pytato/target/loopy/__init__.py +++ b/pytato/target/loopy/__init__.py @@ -86,10 +86,10 @@ class LoopyPyOpenCLTarget(LoopyTarget): The :mod:`pyopencl` device used to construct the :class:`loopy.PyOpenCLTarget`, or *None*. - .. attribute:: limit_arg_size_nbytes + .. attribute:: loopy_target - An optional int that indicates the size limit of kernel arguments - and gets passed to :class:`loopy.PyOpenCLTarget`. + An optional :class:`loopy.PyOpenCLTarget` that gets used as the + underlying code generation target. """ def __init__(self, device: Optional["pyopencl.Device"] = None,