Derek Gaston <fried...@gmail.com> writes: > 4. Loading up dense matrices of shape function evaluations so that all > variable's values and gradients (of the same FEType) can be computed > simultaneously with one single mat*vec. This creates perfectly vectorizable > operations. I tried using Eigen for this as well as the stuff in libMesh > and even our own ColumnMajorMatrix implementation. It never made much > difference though... At most a 2x speedup at the extreme end of things.
Is it a mat*vec or mat*mat? If you have several variables of the same type, you can stack them as multiple columns instead of blowing up the matrix. Moreover, if you were to rearrange the metric terms, you could evaluate several elements with a single mat*mat. (It's actually fewer flops than pulling metric terms into shape function, unless it can be amortized over many fields.) Also note that if you rearrange metric terms in this way, the left "mat" has tensor product structure when the reference element and quadrature does, so the cost can be further reduced. It's a 3x win for 3D elasticity or viscous flow on Q2 elements.
signature.asc
Description: PGP signature
------------------------------------------------------------------------------
_______________________________________________ Libmesh-devel mailing list Libmesh-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/libmesh-devel