Allow aligning the interior of grid functions in looping macros

Create issue
Issue #1791 open
Erik Schnetter created an issue

Currently, when grid functions are aligned, Cactus expects their origin to be aligned. These changes update the looping macros to allow aligning the interior of grid functions instead. Whether and how grid functions are aligned is still determined by the driver -- this only makes it possible to still use the looping macros in this case.

Implemented in and


Comments (6)

  1. Roland Haas
    • removed comment

    Looks fine to me. In fact I like the new way of making sure the final offset is smaller than the stride

    -        (bsnl ('    const int cctki0_ioff = ' . (sep '', rpt '[I==1?(cctki0_imin:+cctki0_[C-1]ash*([C]]') . (sep '', rpt ')') . ' & (cctki0_istr-1);')),
    +        (bsnl ('    const int cctki0_ioff0 = ' . (sep '', rpt '[I==1?(cctki0_imin:+cctki0_[C-1]ash*([C]]') . (sep '', rpt ')') . ' + cctki0_imod;')),
    +        # TODO: Omit this when grid arrays are aligned
    +        (bsnl '    const int cctki0_ioff = cctki0_ioff0 % cctki0_istr;'),

    better than the previous one since it allows for strides that are not powers of 2 (though I doubt we'll ever encounter those).

    One thing that had a me a bit confused is the name "_mod" used to designate the offset argument (and not a modulus).

    Please apply.

  2. Log in to comment