Thread Previous • Date Previous • Date Next • Thread Next |
Anders Logg wrote:
Very nice! Some comments:1. Beating uBLAS by a factor 3 is not that hard.
A factor 3 is quite something if the matrix is in compressed row format. DOLFIN assembly times into uBLAS, PETSc and Trilinos matrices are all very close to each other.
Didem Unat (PhD
student at UCSD/Simula) and Ilmar have been looking at the assembly in DOLFIN recently. We've done some initial benchmarks and have started investigating how to speedup the assembly. Take a look at what happens when we assemble into uBLAS: (i) Compute sparsity pattern (ii) Reset tensor (iii) Assemble For uBLAS, each of these steps is approximately an assembly process. I don't remember the exact numbers, but by just using an std::vector<std::map<int, double> > instead of a uBLAS matrix, one may skip (i) and (ii) and get a speedup.
You can do this with uBLAS too by using the uBLAS mapped_matrix (uses std::map internally) instead of compressed_matrix. The problem is that it is dead slow for matrix-vector multiplications. Most uBLAS sparse matrix types are faster to assemble than the compressed_matrix, but are slower to traverse.
Before the computation of the sparsity pattern was implemented, DOLFIN assembled into a uBLAS vector-of-compressed-vectors because it is quite fast to assemble uninitialised and can be converted quite quickly to a compressed row matrix. This approach may still have merit for some problems.
Garth
We've just started and don't have anything to present yet. 2. I've also looked at MTL before. We even considered using it as the main LA backend a (long) while back. 3. With the new LA interfaces in place, I wouldn't mind having MTL as an optional backend. ------------------------------------------------------------------------ _______________________________________________ DOLFIN-dev mailing list DOLFIN-dev@xxxxxxxxxx http://www.fenics.org/mailman/listinfo/dolfin-dev
Thread Previous • Date Previous • Date Next • Thread Next |