← Back to team overview

ffc team mailing list archive

Re: [Branch ~ffc-core/ffc/main] Rev 1684: Change code generation for evaluate_basis and

 

On 09/12/11 19:54, Garth N. Wells wrote:
On 12 September 2011 18:49, Marie E. Rognes<meg@xxxxxxxxx>  wrote:
On 09/12/11 19:40, Garth N. Wells wrote:
Which compiler options did you use when evaluating the speed up?

Tested Extrapolation.h with vanilla dolfin (which is dominated by
evaluate_basis calls). No additional compiler options set.

What are the default compiler options?

'-g' for plain JIT, which is dead slow.  You should test with at least:

     parameters["form_compiler"]["cpp_optimize"] = True

in the Python code. This will use '-O2'.


Ok, thanks -- I'll take a closer look.

We shouldn't unroll loops until it's proven to be faster with compiler
options activated. Unrolling loops can be slower and for large loops
increases the compile time (in extreme cases making the compiler
fail). We've discussed on the list going the other way, i.e. having
FFC unroll less code.


Have you looked at the difference in the generated code?

--
Marie

Garth

--
Marie


Garth



On 12 September 2011 18:38,<noreply@xxxxxxxxxxxxx>    wrote:
Merge authors:
  Marie Rognes (meg-simula)
------------------------------------------------------------
revno: 1684 [merge]
committer: Marie E. Rognes<meg@xxxxxxxxx>
branch nick: trunk
timestamp: Mon 2011-09-12 19:23:01 +0200
message:
  Change code generation for evaluate_basis and
  evaluate_basis_derivatives by unrolling loops at FFC compile
  time.

  Speeds-up generated code, especially for higher than 1st order.

  Very grateful for all those unit tests for evaluate_basis*!
modified:
  ffc/evaluatebasis.py
  test/regression/references/r_auto/AdaptivePoisson.h
  test/regression/references/r_auto/AdaptivePoisson.out
  test/regression/references/r_auto/AlgebraOperators.h
  test/regression/references/r_auto/Biharmonic.h
  test/regression/references/r_auto/Biharmonic.out
  test/regression/references/r_auto/CoefficientOperators.h
  test/regression/references/r_auto/Components.h
  test/regression/references/r_auto/Conditional.h
  test/regression/references/r_auto/Conditional.out
  test/regression/references/r_auto/Constant.h
  test/regression/references/r_auto/Elasticity.h
  test/regression/references/r_auto/EnergyNorm.h
  test/regression/references/r_auto/Equation.h
  test/regression/references/r_auto/FacetIntegrals.h
  test/regression/references/r_auto/FacetRestrictionAD.h
  test/regression/references/r_auto/Heat.h
  test/regression/references/r_auto/HyperElasticity.h
  test/regression/references/r_auto/Mass.h
  test/regression/references/r_auto/Mass.out
  test/regression/references/r_auto/MathFunctions.h
  test/regression/references/r_auto/MetaData.h
  test/regression/references/r_auto/Mini.h
  test/regression/references/r_auto/Mini.out
  test/regression/references/r_auto/MixedMixedElement.h
  test/regression/references/r_auto/MixedMixedElement.out
  test/regression/references/r_auto/MixedPoisson.h
  test/regression/references/r_auto/NavierStokes.h
  test/regression/references/r_auto/NeumannProblem.h
  test/regression/references/r_auto/Normals.h
  test/regression/references/r_auto/Optimization.h
  test/regression/references/r_auto/Optimization.out
  test/regression/references/r_auto/P5tet.h
  test/regression/references/r_auto/P5tet.out
  test/regression/references/r_auto/P5tri.h
  test/regression/references/r_auto/P5tri.out
  test/regression/references/r_auto/Poisson.h
  test/regression/references/r_auto/PoissonDG.h
  test/regression/references/r_auto/QuadratureElement.h
  test/regression/references/r_auto/QuadratureElement.out
  test/regression/references/r_auto/ReactionDiffusion.h
  test/regression/references/r_auto/RestrictedElement.h
  test/regression/references/r_auto/RestrictedElement.out
  test/regression/references/r_auto/SpatialCoordinates.h
  test/regression/references/r_auto/SpatialCoordinates.out
  test/regression/references/r_auto/StabilisedStokes.h
  test/regression/references/r_auto/Stokes.h
  test/regression/references/r_auto/Stokes.out
  test/regression/references/r_auto/SubDomain.h
  test/regression/references/r_auto/SubDomains.h
  test/regression/references/r_auto/TensorWeightedPoisson.h
  test/regression/references/r_auto/VectorLaplaceGradCurl.h
  test/regression/references/r_auto/VectorLaplaceGradCurl.out
  test/regression/references/r_auto/VectorPoisson.h
  test/regression/references/r_auto/X_Element0.h
  test/regression/references/r_auto/X_Element0.out
  test/regression/references/r_auto/X_Element1.h
  test/regression/references/r_auto/X_Element1.out
  test/regression/references/r_quadrature/AdaptivePoisson.h
  test/regression/references/r_quadrature/AdaptivePoisson.out
  test/regression/references/r_quadrature/AlgebraOperators.h
  test/regression/references/r_quadrature/Biharmonic.h
  test/regression/references/r_quadrature/Biharmonic.out
  test/regression/references/r_quadrature/CoefficientOperators.h
  test/regression/references/r_quadrature/Components.h
  test/regression/references/r_quadrature/Conditional.h
  test/regression/references/r_quadrature/Conditional.out
  test/regression/references/r_quadrature/Constant.h
  test/regression/references/r_quadrature/Elasticity.h
  test/regression/references/r_quadrature/EnergyNorm.h
  test/regression/references/r_quadrature/Equation.h
  test/regression/references/r_quadrature/FacetIntegrals.h
  test/regression/references/r_quadrature/FacetRestrictionAD.h
  test/regression/references/r_quadrature/Heat.h
  test/regression/references/r_quadrature/HyperElasticity.h
  test/regression/references/r_quadrature/Mass.h
  test/regression/references/r_quadrature/Mass.out
  test/regression/references/r_quadrature/MathFunctions.h
  test/regression/references/r_quadrature/MetaData.h
  test/regression/references/r_quadrature/Mini.h
  test/regression/references/r_quadrature/Mini.out
  test/regression/references/r_quadrature/MixedMixedElement.h
  test/regression/references/r_quadrature/MixedMixedElement.out
  test/regression/references/r_quadrature/MixedPoisson.h
  test/regression/references/r_quadrature/NavierStokes.h
  test/regression/references/r_quadrature/NeumannProblem.h
  test/regression/references/r_quadrature/Normals.h
  test/regression/references/r_quadrature/Optimization.h
  test/regression/references/r_quadrature/Optimization.out
  test/regression/references/r_quadrature/P5tet.h
  test/regression/references/r_quadrature/P5tet.out
  test/regression/references/r_quadrature/P5tri.h
  test/regression/references/r_quadrature/P5tri.out
  test/regression/references/r_quadrature/Poisson.h
  test/regression/references/r_quadrature/PoissonDG.h
  test/regression/references/r_quadrature/QuadratureElement.h
  test/regression/references/r_quadrature/QuadratureElement.out
  test/regression/references/r_quadrature/ReactionDiffusion.h
  test/regression/references/r_quadrature/RestrictedElement.h
  test/regression/references/r_quadrature/RestrictedElement.out
  test/regression/references/r_quadrature/SpatialCoordinates.h
  test/regression/references/r_quadrature/SpatialCoordinates.out
  test/regression/references/r_quadrature/StabilisedStokes.h
  test/regression/references/r_quadrature/Stokes.h
  test/regression/references/r_quadrature/Stokes.out
  test/regression/references/r_quadrature/SubDomain.h
  test/regression/references/r_quadrature/SubDomains.h
  test/regression/references/r_quadrature/TensorWeightedPoisson.h
  test/regression/references/r_quadrature/VectorLaplaceGradCurl.h
  test/regression/references/r_quadrature/VectorLaplaceGradCurl.out
  test/regression/references/r_quadrature/VectorPoisson.h
  test/regression/references/r_quadrature/X_Element0.h
  test/regression/references/r_quadrature/X_Element0.out
  test/regression/references/r_quadrature/X_Element1.h
  test/regression/references/r_quadrature/X_Element1.out
The size of the diff (178020 lines) is larger than your specified limit
of 1000 lines

--
lp:ffc
https://code.launchpad.net/~ffc-core/ffc/main

Your team FFC Core Team is subscribed to branch lp:ffc.
To unsubscribe from this branch go to
https://code.launchpad.net/~ffc-core/ffc/main/+edit-subscription

_______________________________________________
Mailing list: https://launchpad.net/~ffc
Post to     : ffc@xxxxxxxxxxxxxxxxxxx
Unsubscribe : https://launchpad.net/~ffc
More help   : https://help.launchpad.net/ListHelp

_______________________________________________
Mailing list: https://launchpad.net/~ffc
Post to     : ffc@xxxxxxxxxxxxxxxxxxx
Unsubscribe : https://launchpad.net/~ffc
More help   : https://help.launchpad.net/ListHelp




Follow ups

References