Skip to content
Snippets Groups Projects

Extended SIMD interface

Merged Jö Fahlke requested to merge feature/proper-simd-interface into master

Intent to merge: 2018-05-21.

Design of the interface: dune/common/simd/DESIGN.md

  • Move the documentation (vc.org) into Doxygen.
  • Move the documentation (simd-abstraction.md) into Doxygen. (Moved to dune/common/simd/DESIGN.md instead)
  • (Maybe) make the test switchable between the strict and the watered-down version. (Not doing that right now, but test labels are implemented in master, !423 (merged))
  • (Maybe) use concepts for tests that can fail during compile time. If they fail during compile time we could just report them as failed during run-time. That would mean you get an overview over everything that fails, instead of seeing only the next item. (Not doing that right now)
  • Decide what to do about the failing unary - on Vc::Vector<unsigned short> [AVX] (this was, in fact, a bug in the test).
  • Decide what to do about the missing broadcast for the long, long unsigned, long long and long long unsigned versions of Vc::Vector [AVX]. (We simply don't support those types for now.)
  • Test Vc::SimdArray in addition to Vc::Vector
  • Do the explicit instantiations for Vc.
  • (Maybe) do the explicit instantiations with some cmake trickery, instead of using an extra .cc for each instantiation. (See cmake/modules/DuneInstances.cmake)
  • Introduce enough additional interface functions for the vectorization of luDecomposition() in densematrix.hh.
  • Work around (or fix) the SFINAE issue with clang (see CI). (I don't remember what this was about, seems gone)
  • What to do about the unary +, -, and ~ on masks (not supported by Vc atm), see test.hh (line 1084). Leaving that open for the moment -- we have similar issues with vectorclass, see https://gitlab.dune-project.org/lukas.renelt/dune-vectorclass/merge_requests/3#note_42995.
  • Deal with compile time of unit tests.
Edited by Jö Fahlke

Merge request reports

Loading
Loading

Activity

Filter activity
  • Approvals
  • Assignees & reviewers
  • Comments (from bots)
  • Comments (from users)
  • Commits & branches
  • Edits
  • Labels
  • Lock status
  • Mentions
  • Merge request status
  • Tracking
504 504 DUNE_SIMD_PREFIX_OP (Plus, + );
505 505 DUNE_SIMD_PREFIX_OP (Minus, - );
506 506 DUNE_SIMD_PREFIX_OP (LogicNot, ! );
507 // Do not warn about ~ being applied to bool. (1) Yes, doing that is
508 // weird, but we do want to test the weird stuff too. (2) It avoids
509 // running into <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82040> on
510 // g++-7.0 through 7.2. Also, ignore -Wpragmas to not warn about an
511 // unknown -Wbool-operation on compilers that do not know that option.
512 #pragma GCC diagnostic push
513 #pragma GCC diagnostic ignored "-Wpragmas"
514 #pragma GCC diagnostic ignored "-Wbool-operation"
507 515 DUNE_SIMD_PREFIX_OP (BitNot, ~ );
516 #pragma GCC diagnostic push
  • Jö Fahlke added 1 commit

    added 1 commit

    • 33616290 - Fix stupid copy-n-paste error.

    Compare with previous version

  • Jö Fahlke added 1 commit

    added 1 commit

    Compare with previous version

  • Author Owner

    I can't find the file vc.org, so I'm assuming I've already moved it into Doxygen.

  • Jö Fahlke changed the description

    changed the description

  • Jö Fahlke added 1 commit

    added 1 commit

    • 354fbd23 - Move the "designe document" into the source directory.

    Compare with previous version

  • Jö Fahlke changed the description

    changed the description

  • Jö Fahlke added 1 commit

    added 1 commit

    • 4738f80d - Don't use a universal reference in the default implementation.

    Compare with previous version

  • Jö Fahlke added 3 commits

    added 3 commits

    • 7e2df8a1 - Make lanes<V>() more convenient.
    • a89fe35f - Generally strip qualifiers automatically in the interface classes.
    • aa0c43f7 - Merge branch 'fix/convenient-lane-count' into 'feature/proper-simd-interface'

    Compare with previous version

  • Jö Fahlke added 3 commits

    added 3 commits

    • 1bc5b209 - [SIMD] Fix name of any_true() in docs.
    • 41f71ee7 - [SIMD] Elaborate on what we expect from simd types.
    • 75f78599 - Merge branch 'feature/proper-simd-interface' of…

    Compare with previous version

  • Jö Fahlke changed the description

    changed the description

  • Jö Fahlke changed the description

    changed the description

  • Jö Fahlke changed the description

    changed the description

  • Jö Fahlke added 10 commits

    added 10 commits

    • 137803a4 - Move the "designe document" into the source directory.
    • 972007d2 - Don't use a universal reference in the default implementation.
    • 21693d01 - Make lanes<V>() more convenient.
    • 23199ab7 - Generally strip qualifiers automatically in the interface classes.
    • 755c8842 - Merge branch 'fix/convenient-lane-count' into 'feature/proper-simd-interface'
    • 9fed5603 - [SIMD] Fix name of any_true() in docs.
    • da977c5c - [SIMD] Elaborate on what we expect from simd types.
    • 981d3f15 - Merge branch 'feature/proper-simd-interface' of…
    • 864ad63c - [SIMD] Try to generate the files for test instantiations.
    • 7833ef41 - [SIMD] Fixup after filter-branch.

    Compare with previous version

  • Author Owner

    If you have a checked-out version of feature/proper-simd-interface, you should be aware: Due to !336 (closed), I had to do a filter branch to retroactively change the name of the design document to something the commit-hook accepts. You'll need to rebase.

  • Jö Fahlke added 1 commit

    added 1 commit

    • a6d21c37 - [SIMD] Avoid the string(APPEND) command to make cmake 3.0.2 happy.

    Compare with previous version

  • Jö Fahlke added 1 commit

    added 1 commit

    • 0dfcd6e6 - [SIMD] Only add additional source files if CMAKE_GUARD passes.

    Compare with previous version

  • Jö Fahlke added 1 commit

    added 1 commit

    • 4607451c - [SIMD] Avoid duplication of CMAKE_GUARD condition.

    Compare with previous version

  • Jö Fahlke added 2 commits

    added 2 commits

    • 0501aa2d - [SIMD][Vc] Generate more instanciations and fix the scalar types.
    • 0e4e47d1 - [SIMD][Vc] Fix spurious set(APPEND ...)

    Compare with previous version

  • Jö Fahlke marked the checklist item Test Vc::SimdArray in addition to Vc::Vector as completed

    marked the checklist item Test Vc::SimdArray in addition to Vc::Vector as completed

  • Jö Fahlke marked the checklist item Do the explicit instantiations for Vc. as completed

    marked the checklist item Do the explicit instantiations for Vc. as completed

  • Jö Fahlke unmarked as a Work In Progress

    unmarked as a Work In Progress

  • Author Owner

    @all The remaining tasks are all optional (even if they are not always marked explicitly as such). So I want to merge this in the near future. It probably won't go into 2.6 because the release manager thinks it's too experimental, though, so I have to fix #59 (closed) differently.

  • Jö Fahlke mentioned in commit 166a4604

    mentioned in commit 166a4604

  • Jö Fahlke mentioned in commit 25eadf79

    mentioned in commit 25eadf79

  • Jö Fahlke added 2 commits

    added 2 commits

    • 42ab36e1 - Provides the LoopSIMD-class and basic functionality such as operator overloads…
    • 2cc176e4 - Merge branch 'feature/faked-simd-types' into feature/proper-simd-interface

    Compare with previous version

  • Jö Fahlke added 78 commits

    added 78 commits

    Compare with previous version

  • Jö Fahlke added 1 commit

    added 1 commit

    • 3a68594d - [SIMD] Work around Vc 1.3.2 and g++ 7.2 incompatibilities.

    Compare with previous version

  • Jö Fahlke added 13 commits

    added 13 commits

    • 3a68594d...2e4e53ee - 6 commits from branch master
    • cc4881af - Merge branch 'master' into feature/proper-simd-interface
    • 50c7bfd8 - [SIMD][deprecation] Deprecate the old SIMD infrastructure.
    • b9d506db - [SIMD][deprecation] Fix warning in debugalign.hh
    • 0179a73e - [SIMD] Make GMPField a standard type.
    • ef5854d2 - [SIMD][Vc] Add missing include.
    • 61564395 - [SIMD][Vc] Steal back swap() on proxies from the deprecated SIMD interface.
    • 90848f2d - [SIMD] Port FieldMatrix to new SIMD interface.

    Compare with previous version

  • Jö Fahlke added 4 commits

    added 4 commits

    • 405b6491 - [SIMD][FieldMatrix] Only include simd/vc.hh if HAVE_VC
    • b8ad0e53 - [SIMD][Vc] Include the new simd/vc.hh from old simd.hh
    • 8dce9ff8 - [SIMD][AlignedNumber] Declare it a standard type.
    • 696bd4af - [SIMD][IsStandard] Move complex specialization to standard.hh.

    Compare with previous version

  • Jö Fahlke added 2 commits

    added 2 commits

    • d15931d0 - [SIMD][debugalign.hh] Implement SIMD interface for AlignedNumber.
    • c63a0188 - [Simd] Introduce minimum and maximum summary functions.

    Compare with previous version

  • Jö Fahlke mentioned in merge request dune-istl!142 (merged)

    mentioned in merge request dune-istl!142 (merged)

  • Author Owner

    I ported the LU decomposition in the DenseMatrix and the stuff in dune-istl (see dune-istl!142 (merged)) to the new interface. (The old istl stuff should still work even with the branch merged, but will emit deprecation warnings).

  • Author Owner

    There is a new problem though, which means we can't merge yet: compile-time of the unit tests. These currently do extensive tests for all kinds of types, in particular the Vc types, but also the built-in types. It would be good to have a way to enable just a smaller set of types for regular unit tests, and have a bigger set to be really thorough, that won't be compiled on every commit.

    Note: we're talking compile time here, not run time. Runtime is below 5 seconds.

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