From f2c54c376acfb4d0493570e0152906e583efc381 Mon Sep 17 00:00:00 2001 From: Edward Caunt Date: Wed, 27 May 2026 17:01:43 +0100 Subject: [PATCH 1/2] compiler: Start work on hook for operator lookup --- devito/operator/operator.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/devito/operator/operator.py b/devito/operator/operator.py index 6e77c39281..e1c6053d35 100644 --- a/devito/operator/operator.py +++ b/devito/operator/operator.py @@ -182,6 +182,12 @@ def __new__(cls, expressions, **kwargs): cls._check_kwargs(**kwargs) expressions = cls._sanitize_exprs(expressions, **kwargs) + # Hook for retrieval of preexisting operators + # TODO: should this emit timing info if an operator is retrieved + maybe_op = cls._retrieve_op(expressions, **kwargs) + if maybe_op: + return maybe_op + # Lower to a JIT-compilable object with timed_region('op-compile') as r: op = cls._build(expressions, **kwargs) @@ -211,6 +217,10 @@ def _sanitize_exprs(cls, expressions, **kwargs): return expressions + @classmethod + def _retrieve_opt(cls, expressions, **kwargs): + return + @classmethod def _build(cls, expressions, **kwargs): # Python- (i.e., compile-) and C-level (i.e., run-time) performance From afa93a82dbfb25c6c140e217bf5cf1ac02440d0b Mon Sep 17 00:00:00 2001 From: Edward Caunt Date: Tue, 16 Jun 2026 15:16:53 +0000 Subject: [PATCH 2/2] misc: Minor enhancement to Eq printing --- devito/operator/operator.py | 2 +- devito/types/equation.py | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/devito/operator/operator.py b/devito/operator/operator.py index e1c6053d35..9ded8eddb7 100644 --- a/devito/operator/operator.py +++ b/devito/operator/operator.py @@ -218,7 +218,7 @@ def _sanitize_exprs(cls, expressions, **kwargs): return expressions @classmethod - def _retrieve_opt(cls, expressions, **kwargs): + def _retrieve_op(cls, expressions, **kwargs): return @classmethod diff --git a/devito/types/equation.py b/devito/types/equation.py index 5b709ee89e..dee06de61b 100644 --- a/devito/types/equation.py +++ b/devito/types/equation.py @@ -183,6 +183,9 @@ def xreplace(self, rules): return self.func(self.lhs.xreplace(rules), self.rhs.xreplace(rules)) def __str__(self): + if self._subdomain is not None: + return (f"{self.__class__.__name__}({self.lhs}, {self.rhs}," + f" subdomain={self._subdomain})") return f"{self.__class__.__name__}({self.lhs}, {self.rhs})" __repr__ = __str__