Skip to content
Snippets Groups Projects

Loopsimd alignment

Merged Nils-Arne Dreier requested to merge nils.dreier/dune-common:loopsimd_alignment into master

This MR adds a additional template parameter to LoopSIMD to specify the alignment.

The default alignment is the alignment of the underlying type.

I'm not sure how to determine the proper alignment for some return types or RebindType. To mitigate that problem I define conversion constructors and assignment operators from LoopSIMD types with different alignment.

This MR depends on !669 (merged).

Feel free to push at the source branch!

Edited by Nils-Arne Dreier

Merge request reports

Pipeline #19676 passed with warnings

Pipeline passed with warnings for bbe30918 on nils.dreier:loopsimd_alignment

Approval is optional
Ready to merge by members who can write to the target branch.

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
  • Nils-Arne Dreier added 2 commits

    added 2 commits

    • 7b8601eb - fix template arguments
    • b69e9f37 - switch LoopSIMD of Mask to Mask of LoopSIMD

    Compare with previous version

  • Nils-Arne Dreier resolved all discussions

    resolved all discussions

  • added 1 commit

    • 303b6538 - Apply suggestion to dune/common/simd/loop.hh

    Compare with previous version

  • added 1 commit

    • 2f131bbe - add assertion that checks the allignement of a LoopSIMD object

    Compare with previous version

  • added 1 commit

    • d7f8f261 - only check whether LoopSIMD is at least as good aligned as it is guaranteed

    Compare with previous version

      • regarding the RebindType I suggest to take the max alignment of the old and the new type.
      • regarding the implementation, please check with Jö, I have the impression that you started with an older master and now there are some inconsistencies regarding the bool return types.
    • regarding the RebindType I suggest to take the max alignment of the old and the new type.

      You are right. I changed this. I recognized that previously even Rebind<double, LoopSIMD<float, 1>> was ill-formed. Since it would be resolved to LoopSIMD<double, 1, 4>, which is ill-formed since the natural alignemnt of doubleis 8.

      regarding the implementation, please check with Jö, I have the impression that you started with an older master and now there are some inconsistencies regarding the bool return types.

      I don't really know what you mean. I merged the current master. It went through without problems. Just waiting for the CI...

    • Please register or sign in to reply
  • Nils-Arne Dreier added 48 commits

    added 48 commits

    • d7f8f261...dfa40b10 - 46 commits from branch core:master
    • 4356f480 - Merge remote-tracking branch 'origin/master' into loopsimd_alignment
    • bbe30918 - use the maximum of A and the alignemnt of the underlying type for a rebind type

    Compare with previous version

  • Is there a reason that this MR is still WIP? Otherwise I'd merge.

  • Probably because Nils is still waiting for input from me after some offline discussion months ago. This input is unlikely to come, and anyway I think it was basically choosing between to incompatible options, and it was unclear which one was better. So go ahead as far as I'm concerned.

  • Nils-Arne Dreier unmarked as a Work In Progress

    unmarked as a Work In Progress

  • Nils-Arne Dreier changed the description

    changed the description

  • mentioned in commit 3c5922d7

  • Please revert this. MR !669 (merged) already increase the amount of memory needed to build looptest.cc.o with g++-8 -c -O0 to about 9gb. This MR !670 (merged) is even worse: Now I can no longer build this target (and thus build_tests) with 16gb memory.

    Also the time used by the CI increased from about 5min to about 1h. The fact that the pipeline failed with a timeout could have been an indicator for this.

  • Sorry, as the pipeline is failing for various reason recently, I didn't realize this issue.

  • mentioned in commit ebae92f0

  • Christian Engwer mentioned in merge request !782 (merged)

    mentioned in merge request !782 (merged)

  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Loading
  • Please register or sign in to reply
    Loading