← Back to team overview

ffc team mailing list archive

Restructure computation of reference tensor to use less memory. [...]

 

Commit from logg (2005-12-05 18:26 CET)
----------------

Restructure computation of reference tensor to use less memory.

As a side effect, the speed of the computation was actually improved...

Here are some results for compiling the nonlinear term of Navier-Stokes
for quadratics on tets:

         | FFC 0.2.2  | FFC 0.2.3 | Current CVS
--------------------------------------------------
CPU time | 167 s      | 21 s      | 15 s
Memory   | 22 MB      | 489 MB    | 27 MB

The memory usage is actually around 22 MB during most of the computation.
The 27 MB is only during a short peak (while copying some values from
one tensor to another).

FFC 0.2.2 used an old loop-based approach, while FFC 0.2.3 worked
through Numeric. The current CVS works similarly to version 0.2.3, but
instead of building a giant tensor and then doing contractions on that
tensor, there are now loops over the dimensions to be contracted so that
we don't build any tensors larger than the final reference tensor.

Also note that it now takes about 1 second to compile the nonlinear term of
Navier-Stokes for linears. This is a good speedup compared to the initial
130 seconds with FFC version 0.1.4...

  ffc  ChangeLog                                1.104
  ffc  src/ffc/compiler/monomialintegration.py  1.4
  ffc  src/ffc/compiler/referencetensor.py      1.19
  ffc  src/reference/Elasticity.h               1.32
  ffc  src/reference/EnergyNorm.h               1.10
  ffc  src/reference/Mass.h                     1.18
  ffc  src/reference/NavierStokes.h             1.30
  ffc  src/reference/Projection.h               1.7
  ffc  src/reference/Stokes.h                   1.15



Follow ups