← Back to team overview

dolfin team mailing list archive

Some updated elasticity benchmark results

 

Hi!

The updated Lagrangian elasticity module now works with FFC. The only
important missing parts are viscosity (trivial) and plasticity (might
need some work in FFC to support if-else type operations in forms).

I've done some benchmarks comparing the old assembly with the FFC
assembly, and the results are very promising.

I've tested with a mesh consisting of 33k cells (large enough so that
the assembly dominates). The total running time for the test with the
old module is 1100s, the total running time for the test with the FFC
module is 43s. This is a speedup of a factor 26. If we look at only
the time spent assembling, then the time for one assembly (there's one
assembly per time step, 100 time steps in total) is 11s for the old
module and 0.27s for the FFC module. This is a speedup of a factor 41.

Perhaps more optimizations could/can be done both for the old module
and the FFC module, and times will vary when terms are added, but it's
reasonable to expect the speedup to be a factor 10-100 for this form.

One good sign that the assembly is now efficient is that at one point
the bottleneck turned out to be a naive elementwise division of two
vectors that is done in the solver. Implementing it with a PetSc
operation made the assembly come out on top again. I haven't tested
with a real profiler yet, that would give an even better picture of
where the time is spent.

Here's the data in a table:

Mesh01:

Reading mesh from file "mymesh01.xml.gz".
Computing mesh connectivity:
  Found 6545 nodes
  Found 32768 cells
  Created 41360 edges
  Created 67584 faces

old:
total - 1100s
assembling - 11s

ffc:
total - 43s
assembling - 0.27s


A comment on the last two numbers: assembling a mass matrix (done only
once) takes 7s, and probably as much time is spent reading the mesh.

  Johan




Follow ups