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.

Attachment: signature.asc
Description: PGP signature

------------------------------------------------------------------------------
_______________________________________________
Libmesh-devel mailing list
Libmesh-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-devel

Reply via email to