← Back to team overview

ufl team mailing list archive

Re: [Ffc] [Bug 769811] [NEW] JIT cache problem with id(form)

 

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)
> 
> --
> Anders
> 
> > Garth
> > 
> > > def preprocess(form, object_names={}, common_cell=None):
> > >     ...
> > >     
> > >     # Check that form is not already preprocessed
> > >     
> > >     if form.form_data() is not None:
> > >         debug("Form is already preprocessed. Not updating form data.")
> > >         return form
> > >     
> > >     ...
> > >     
> > >     # Attach form data to form
> > >     form._form_data = form_data
> > >     
> > >     # Attach preprocessed form to form data
> > >     form_data._form = form
> > > 
> > > And when I look at the blamelist (bzr annotate), it looks like I added
> > > those lines, so I must have come to my senses and added it back at
> > > some point (way back). So in conclusion, calling preprocess() should
> > > not taking any time.
> > > 
> > > What am I missing?
> 
> _______________________________________________
> Mailing list: https://launchpad.net/~ffc
> Post to     : ffc@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~ffc
> More help   : https://help.launchpad.net/ListHelp



Follow ups

References