On Tuesday 18 August 2009 22:23:50 Anders Logg wrote: > On Tue, Aug 18, 2009 at 10:01:49PM +0200, DOLFIN wrote: > > changeset: 6793:4ec31c652fb02c15906df9b243ac8a95ab17993d > > parent: 6779:ef3291872c9d92c7937b1808b392cfb00006a0e2 > > user: Anders Logg <l...@simula.no> > > date: Tue Aug 18 21:58:16 2009 +0200 > > files: site-packages/dolfin/jit.py > > description: > > Wrap JIT compilation and use barrier to compile first on process 0, > > then use results from cache on other processes. Only implemented for > > forms, not other objects. > > This changes the way JIT compilation is handled in parallel (after a > discussion with Hake earlier today). > > We now let the first process compile first while the others wait. Then > the other processes call the JIT compiler and may then reuse the > compiled form from cache since it's already been compiled by the first > process. Much better than what we had before. > > I've only implemented it for JIT compilation of forms, not other > objects (like Functions). Johan, could you take a look at this? > > I imagine we could put the code from jit.jit into some utility > function, something like which could be reused in both places: > > def jit_wrap(jit, *args): > > # Just call foo when running in serial > if MPI.num_processes() == 1: > return jit(*args): > > # Compile first on process 0 > if MPI.process_number() == 0: > info("Calling JIT compiler on first process.") > output = jit(*args) > MPI.barrier() > > # Then compile on all other processes (which may then just read the > cache) if not MPI.process_number() == 0: > info("JIT compilation done on first process, reusing from cache.") > output = jit(*args) > > return output
I can look into this. It should be straightforward, now when I have gathered all jit compilation in PyDOLFIN in one module. I think I need to add a **kwargs to the function though. Could you add a dummy **kwargs in ffc.jit, to make it possible? Maybe together with a check with some appropriate error message if some one is by accident using it? Johan _______________________________________________ DOLFIN-dev mailing list DOLFIN-dev@fenics.org http://www.fenics.org/mailman/listinfo/dolfin-dev