From 38aa1c4b71852f4de2819ff4febc1f2696acda44 Mon Sep 17 00:00:00 2001 From: Jait Dixit <jait.dixit@tum.de> Date: Tue, 25 Oct 2016 21:16:54 +0200 Subject: [PATCH] WIP: Fix FFTW caching - Refactor RGRGTransformation - Add is_local to dictionary key hash --- .../fft_operator/transformations/rg_transforms.py | 4 +++- .../transformations/rgrgtransformation.py | 14 +++++++------- .../fft_operator/transformations/transformation.py | 2 +- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/nifty/operators/fft_operator/transformations/rg_transforms.py b/nifty/operators/fft_operator/transformations/rg_transforms.py index 66b581839..13203f134 100644 --- a/nifty/operators/fft_operator/transformations/rg_transforms.py +++ b/nifty/operators/fft_operator/transformations/rg_transforms.py @@ -170,7 +170,9 @@ class FFTW(Transform): # generate a id-tuple which identifies the domain-codomain setting temp_id = (domain.__hash__() ^ (101 * codomain.__hash__()) ^ - (211 * transform_shape.__hash__())) + (211 * transform_shape.__hash__()) ^ + (131 * is_local.__hash__()) + ) # generate the plan_and_info object if not already there if temp_id not in self.info_dict: diff --git a/nifty/operators/fft_operator/transformations/rgrgtransformation.py b/nifty/operators/fft_operator/transformations/rgrgtransformation.py index c5afbafb7..a05d13567 100644 --- a/nifty/operators/fft_operator/transformations/rgrgtransformation.py +++ b/nifty/operators/fft_operator/transformations/rgrgtransformation.py @@ -7,29 +7,29 @@ from nifty import RGSpace, nifty_configuration class RGRGTransformation(Transformation): def __init__(self, domain, codomain=None, module=None): - super(RGRGTransformation, self).__init__(domain, codomain, module) + super(RGRGTransformation, self).__init__(domain, codomain) if module is None: if nifty_configuration['fft_module'] == 'pyfftw': - self._transform = FFTW(domain, codomain) + self._transform = FFTW(self.domain, self.codomain) elif (nifty_configuration['fft_module'] == 'gfft' or nifty_configuration['fft_module'] == 'gfft_dummy'): self._transform = \ - GFFT(domain, - codomain, + GFFT(self.domain, + self.codomain, gdi.get(nifty_configuration['fft_module'])) else: raise ValueError('ERROR: unknow default FFT module:' + nifty_configuration['fft_module']) else: if module == 'pyfftw': - self._transform = FFTW(domain, codomain) + self._transform = FFTW(self.domain, self.codomain) elif module == 'gfft': self._transform = \ - GFFT(domain, codomain, gdi.get('gfft')) + GFFT(self.domain, self.codomain, gdi.get('gfft')) elif module == 'gfft_dummy': self._transform = \ - GFFT(domain, codomain, gdi.get('gfft_dummy')) + GFFT(self.domain, self.codomain, gdi.get('gfft_dummy')) else: raise ValueError('ERROR: unknow FFT module:' + module) diff --git a/nifty/operators/fft_operator/transformations/transformation.py b/nifty/operators/fft_operator/transformations/transformation.py index 27ec215d5..1103fc738 100644 --- a/nifty/operators/fft_operator/transformations/transformation.py +++ b/nifty/operators/fft_operator/transformations/transformation.py @@ -11,7 +11,7 @@ class Transformation(object, Loggable): """ __metaclass__ = abc.ABCMeta - def __init__(self, domain, codomain=None, module=None): + def __init__(self, domain, codomain): if codomain is None: self.domain = domain self.codomain = self.get_codomain(domain) -- GitLab