[petsc-dev] loop structure in PetscFEIntegrateJacobian_Basic
Geoffrey Irving
irving at naml.us
Tue Jan 28 15:31:08 CST 2014
PetscFEIntegrateJacobian_Basic has four layers of loops:
e - element
f - component of field being differentiated
g - component of field we're differentiating against
q - quadrature point
It looks like g3_func and friends are being called once for each
combination of (e,f,g,q), even though the calls to g3_func are
independent of (f,g). If g3_func is expensive, this duplication seems
a bit slow.
It seems like the loops should be flipped to be (e,q,f,g) major order,
with the user functions hoisted up to the (e,q) level. Is there a
reason not to do this?
Geoffrey
More information about the petsc-dev
mailing list