On 26/04/11 16:32, Anders Logg wrote: > Is no one listening??? > > Look at preprocess.py in UFL. It caches the preprocessed form and the > preprocessed form holds the form data. This is the same as Martin's > original design as far as I can tell. >
Put some print statements and you'll see that the cache doesn't work. Print the id of the object form either side of form = expand_derivatives(form) in preprocess.py. This returns a new object, so the form that is passed into preprocess.py as a function argument does not get data attached. This leads to the issue that I sketched Garth > The difference is that a call to preprocess is necessary but that just > returns the cached form. > > -- > Anders > > > On Tue, Apr 26, 2011 at 08:18:01AM -0700, Johan Hake wrote: >> Why can't we just go with the original design of Martin? >> >> In jit_compiler() we just call: >> >> form_data = form.form_data() >> >> This will generate the form data, including the preprocessed form attached to >> it, if the form_data is not already generated. >> >> Then we get the preprocessed form by: >> >> form_data.form >> >> We need to add a call to preprocess within Form.form_data(), (if it is not >> already generated), and we need to remove the reference stored by the >> preprocessed form to the form_data to avoid circular dependency. We also need >> to make preprocess return the form_data instead of the preprocessed form. >> >> Johan >> >> >> On Tuesday April 26 2011 07:55:44 Anders Logg wrote: >>> On Tue, Apr 26, 2011 at 03:45:22PM +0100, Garth N. Wells wrote: >>>> On 26/04/11 13:51, Anders Logg wrote: >>>>> On Tue, Apr 26, 2011 at 02:00:50PM +0200, Anders Logg wrote: >>>>>> It feels good that you trust me enough to handle it. ;-) >>>>>> >>>>>> Will add it sometime this afternoon and then we can revisit the JIT >>>>>> compiler caching. >>>>> >>>>> I'm getting confused here... Looking at preprocess.py in UFL, I see >> this: >>>> It is confusing. Does the function 'preprocess' do anything that the old >>>> FormData class didn't? It would be easier to follow if Form just had a >>>> member function form_data() that computes and stores data (like it used >>>> to), or if Form had a 'preprocess' function. Having the function >>>> preprocess return a new form is really confusing. >>> >>> I don't find that particularly confusing. It's the same as >>> >>> refined_mesh = refine(mesh) >>> _______________________________________________ Mailing list: https://launchpad.net/~ffc Post to : ffc@lists.launchpad.net Unsubscribe : https://launchpad.net/~ffc More help : https://help.launchpad.net/ListHelp