Extended SIMD interface
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 -
onVc::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
andlong long unsigned
versions ofVc::Vector
[AVX]. (We simply don't support those types for now.) -
Test Vc::SimdArray
in addition toVc::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. (Seecmake/modules/DuneInstances.cmake
) -
Introduce enough additional interface functions for the vectorization of luDecomposition()
indensematrix.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 unaryLeaving 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.+
,-
, and~
on masks (not supported by Vc atm), see test.hh (line 1084). -
Deal with compile time of unit tests.
Merge request reports
Activity
Reassigned to @joe
Mentioned in issue #59 (closed)
added 122 commits
-
a8cfbde1...92f0318b - 118 commits from branch
master
- 11b7124d - Merge remote-tracking branch 'origin/master' into feature/proper-simd-interface
- ce0c8304 - [simd][doc] Set up the modules properly.
- 14fef7ae - [simd] Improve Doxygen docs.
- 621c91e6 - [simd][doc] The idea of SIMD types and the limitations of the abstraction
Toggle commit list-
a8cfbde1...92f0318b - 118 commits from branch
added 23 commits
-
621c91e6...42ad16e7 - 18 commits from branch
master
- 8d4fc70e - Merge branch 'master' into feature/proper-simd-interface
- 0458de80 - [simd][doc] Some minor improvements.
- bba30797 - [simd][doc] Polish the Abstraction Developer's documentation a bit.
- e14407e3 - [simd][standard] Move Dune::Simd::IsStandard into it's own header file.
- c9f57752 - [simd][doc] Document the abstraction layer for standard types.
Toggle commit list-
621c91e6...42ad16e7 - 18 commits from branch
added 1 commit
- 0eabaf06 - [doc][simd] Revise TODO about Simd::IsStandard
added 1 commit
- e183dab3 - [doc][simd][vc] Document the Vc simd abstraction implementation.
added 1 commit
- e086972c - [doc][simd] Describe the working/non-working constructs in a compact table.
added 1 commit
- db09d9d2 - [test][simd][vc] Explicitly instantiate the test functions.
added 257 commits
-
db09d9d2...a0cf1a70 - 256 commits from branch
master
- 7aa39405 - Merge remote-tracking branch 'origin/master' into tmpmerg
-
db09d9d2...a0cf1a70 - 256 commits from branch
added 10 commits
-
7aa39405...39752738 - 9 commits from branch
master
- 6ba99460 - Merge remote-tracking branch 'origin/master' into feature/proper-simd-interface
-
7aa39405...39752738 - 9 commits from branch
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 added 1 commit
- 354fbd23 - Move the "designe document" into the source directory.
added 1 commit
- 4738f80d - Don't use a universal reference in the default implementation.
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.
Toggle commit listIf 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.
added 1 commit
- a6d21c37 - [SIMD] Avoid the string(APPEND) command to make cmake 3.0.2 happy.
added 1 commit
- 0dfcd6e6 - [SIMD] Only add additional source files if CMAKE_GUARD passes.
added 1 commit
- 4607451c - [SIMD] Avoid duplication of CMAKE_GUARD condition.
@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.
mentioned in commit 166a4604
mentioned in commit 25eadf79
added 78 commits
-
2cc176e4...d0365a7a - 77 commits from branch
master
- 86f09e90 - Merge branch 'master' into feature/proper-simd-interface
-
2cc176e4...d0365a7a - 77 commits from branch
added 1 commit
- 3a68594d - [SIMD] Work around Vc 1.3.2 and g++ 7.2 incompatibilities.
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.
Toggle commit list-
3a68594d...2e4e53ee - 6 commits from branch
added 4 commits
Toggle commit listmentioned in merge request dune-istl!142 (merged)
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).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.