← Back to team overview

dolfin team mailing list archive

Re: Assembly benchmark

 

I have added an old version of the assembly to FEM. Running the
benchmark in src/bench/fem/assembly/ with the old assembly confirms
the result that the new assembly is about 60% slower.

To change between the two (old and new), edit lines 81-82 in
src/bench/fem/assembly/main.cpp.

/Anders



On Tue, Jan 16, 2007 at 12:06:10AM +0100, Anders Logg wrote:
> On Mon, Jan 15, 2007 at 10:54:18PM +0100, Garth N. Wells wrote:
> > The extra time could be in the mesh initialisation. DofMap is pretty fast.
> 
> I'm not sure. The benchmark initializes the mesh connectivity before
> assembling and then assembles 100 times, so at least the last 99 times
> the mesh initialization should not do anything. (Calling init() on the
> mesh twice does not do anything the second time.)
> 
> > What needs to be done is to use the DofMap to initialise the sparse 
> > matrix pattern (at least for uBLAS). What happens now is that everything 
> > is assembled into a uBLAS vector-of-compressed-vectors (fast assembly), 
> > which is then copied to a CSR matrix (for fast matrix vector mult or for 
> > passing to UMFPACK). Using DofMap, the CSR matrix could be initialised. 
> > This should make things faster and use less memory
> 
> ok, let's do that.
> 
> > Also, which problem are you assembling? Scalar Poisson equation can be 
> > misleading as it tends to fill sparse matrices quite fast even if they 
> > are not well initialised. This tends to show up with vector equations.
> 
> Advection operator for cubic Lagrange in 3D:
> 
>     a = v*c[i]*U.dx(i)*dx
> 
> /Anders
> 
> 
> > Garth
> > 
> > Anders Logg wrote:
> > > There is a benchmark for assembly in src/bench/fem/assembly/.
> > > We should use this to track the speed of assembly during the
> > > planned changes to the Assembly and DofMap classes.
> > > 
> > > The assembly is now 59% slower than it was before the DofMap (and
> > > maybe other changes).
> > > 
> > >   0.63-dev (changeset 1d485299d95)
> > >   CPU time: 87.8056
> > > 
> > >   0.6.4 (changeset 49bf8f3ca3d9)
> > >   CPU time: 139.686
> > > 
> > > Note that the benchmarks are run with --enable-optimization.
> > > 
> > > Let's try to get back to the speed we had before or at least find out
> > > exactly what takes time. It might be that computing the nonzero
> > > pattern is what takes more time, but that this is necessary to reduce
> > > the memory usage.
> > > 
> > > /Anders
> > > _______________________________________________
> > > DOLFIN-dev mailing list
> > > DOLFIN-dev@xxxxxxxxxx
> > > http://www.fenics.org/mailman/listinfo/dolfin-dev
> > > 
> > 
> > 
> > _______________________________________________
> > DOLFIN-dev mailing list
> > DOLFIN-dev@xxxxxxxxxx
> > http://www.fenics.org/mailman/listinfo/dolfin-dev
> _______________________________________________
> DOLFIN-dev mailing list
> DOLFIN-dev@xxxxxxxxxx
> http://www.fenics.org/mailman/listinfo/dolfin-dev


Follow ups

References