#2 new
Jed Brown

Tag broadcast and reduce

Reported by Jed Brown | September 19th, 2008 @ 04:38 PM

The broadcast is needed for getting a global numbering of entities. The reduction is needed to ensure consistent element order when regions are constrained against shared faces.

Comments and changes to this ticket

  • Jed Brown

    Jed Brown November 21st, 2008 @ 08:09 PM

    (from [5ea812358c091a21ff35f15f5f89adf9c0c956c8]) Replace explicit passing of work arrays with VLA.

    Start with plumbing for element mappings. The first implementation will just use nodal coordinates.

    Also, replace some hairy indexing with VLA pointer types. External tests show that GCC produces better inner-loop code for

    double (A)[N]; / A[i][j] in inner loop */

    than

    double A; / A[i*N+j] in inner loop */

    In fact, the assembly produced at -O3 with the VLA-pointer seems roughly equivalent to hoisting

    double restrict a = &A[i*N]; / a[j] in inner loop */

    out of the innermost loop. GCC -Wcast-qual produces a warning for

    const double a; const double (b)[2] = (const double (*)[2])a;

    claiming that cast discards qualifiers from pointer target type' but it is not clear to me that this is actually the case.

    Signed-off-by: Jed Brown jed@59A2.org http://github.com/jedbrown/dohp/...

  • Jed Brown

    Jed Brown November 21st, 2008 @ 08:09 PM

    (from [5ea812358c091a21ff35f15f5f89adf9c0c956c8]) Replace explicit passing of work arrays with VLA.

    Start with plumbing for element mappings. The first implementation will just use nodal coordinates.

    Also, replace some hairy indexing with VLA pointer types. External tests show that GCC produces better inner-loop code for

    double (A)[N]; / A[i][j] in inner loop */

    than

    double A; / A[i*N+j] in inner loop */

    In fact, the assembly produced at -O3 with the VLA-pointer seems roughly equivalent to hoisting

    double restrict a = &A[i*N]; / a[j] in inner loop */

    out of the innermost loop. GCC -Wcast-qual produces a warning for

    const double a; const double (b)[2] = (const double (*)[2])a;

    claiming that cast discards qualifiers from pointer target type' but it is not clear to me that this is actually the case.

    Signed-off-by: Jed Brown jed@59A2.org http://github.com/jedbrown/dohp/...

Please Sign in or create a free account to add a new ticket.

With your very own profile, you can contribute to projects, track your activity, watch tickets, receive and update tickets through your email and much more.

New-ticket Create new ticket

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile »

An implementation of the ``dual order hp'' version of the finite element method. This project targets parallel domain-decomposition methods for strongly coupled nonlinear problems with PDE constraints.

People watching this ticket

Tags

Pages