From 34c303c5af442d1f7c1a5fb8e33573547529cb12 Mon Sep 17 00:00:00 2001 From: Stephan Seitz <stephan.seitz@fau.de> Date: Mon, 16 Sep 2019 13:06:01 +0200 Subject: [PATCH] Add ast properties to pystencils_autodiff.AutoDiffOp --- src/pystencils_autodiff/_autodiff.py | 36 +++++++++++++++++++++------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/src/pystencils_autodiff/_autodiff.py b/src/pystencils_autodiff/_autodiff.py index 1195b30..7735dcc 100644 --- a/src/pystencils_autodiff/_autodiff.py +++ b/src/pystencils_autodiff/_autodiff.py @@ -365,32 +365,52 @@ Backward: def backward_read_accesses(self): return [a for a in self.backward_assignments.free_symbols if isinstance(a, ps.Field.Access)] + @property + def forward_ast_cpu(self): + if not self._forward_ast_cpu: + self._forward_ast_cpu = ps.create_kernel(self._forward_assignments, **self._kwargs) + return self._forward_ast_cpu + + @property + def forward_ast_gpu(self): + if not self._forward_ast_gpu: + self._forward_ast_gpu = ps.create_kernel(self._forward_assignments, target='gpu', **self._kwargs) + return self._forward_ast_gpu + + @property + def backward_ast_cpu(self): + if not self._backward_ast_cpu: + self._backward_ast_cpu = ps.create_kernel(self._backward_assignments, target='cpu', **self._kwargs) + return self._backward_ast_cpu + + @property + def backward_ast_gpu(self): + if not self._backward_ast_gpu: + self._backward_ast_gpu = ps.create_kernel(self._backward_assignments, target='gpu', **self._kwargs) + return self._backward_ast_gpu + @property def forward_kernel_cpu(self): if not self._forward_kernel_cpu: - self._forward_kernel_cpu = ps.create_kernel( - self._forward_assignments, **self._kwargs).compile() + self._forward_kernel_cpu = self.forward_ast_cpu.compile() return self._forward_kernel_cpu @property def forward_kernel_gpu(self): if not self._forward_kernel_gpu: - self._forward_kernel_gpu = ps.create_kernel( - self._forward_assignments, target='gpu', **self._kwargs).compile() + self._forward_kernel_gpu = self.forward_ast_gpu.compile() return self._forward_kernel_gpu @property def backward_kernel_cpu(self): if not self._backward_kernel_cpu: - self._backward_kernel_cpu = ps.create_kernel( - self._backward_assignments, target='cpu', **self._kwargs).compile() + self._backward_kernel_cpu = self.backward_ast_cpu.compile() return self._backward_kernel_cpu @property def backward_kernel_gpu(self): if not self._backward_kernel_gpu: - self._backward_kernel_gpu = ps.create_kernel( - self._backward_assignments, target='gpu', **self._kwargs).compile() + self._backward_kernel_gpu = self.backward_ast_gpu.compile() return self._backward_kernel_gpu @property -- GitLab