Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clang 4.0 Cuda Build broken again #560

Closed
crtrott opened this issue Dec 2, 2016 · 5 comments
Closed

Clang 4.0 Cuda Build broken again #560

crtrott opened this issue Dec 2, 2016 · 5 comments
Labels
Bug Broken / incorrect code; it could be Kokkos' responsibility, or others’ (e.g., Trilinos) Compiler Issue An issue that Kokkos cannot / should not fix; Kokkos must communicate to relevant vendor

Comments

@crtrott
Copy link
Member

crtrott commented Dec 2, 2016

Trying to bisect right now since the latest pull fails some tests (based on github.com/llvm-mirror)

//Doesn't work Oct 14
Clang f34d92b55bb16ecfa6cb5808c3ca455b90c85429
LLVM aca34111f644ac1bdec998edc4b0fc7a5ce6ef1a

//Works Oct 4:
Clang: e506eb44f35c2080e987d6dafcb5b69af3126227
LLVM: aca34111f644ac1bdec998edc4b0fc7a5ce6ef1a

@crtrott crtrott added Bug Broken / incorrect code; it could be Kokkos' responsibility, or others’ (e.g., Trilinos) Compiler Issue An issue that Kokkos cannot / should not fix; Kokkos must communicate to relevant vendor labels Dec 2, 2016
@crtrott
Copy link
Member Author

crtrott commented Dec 2, 2016

Ok I got it down to the exact LLVM commit which broke stuff.
The commit message says:

Author: Kyle Butt <kyle+llvm@iteratee.net>
Date:   Tue Oct 11 20:36:43 2016 +0000

    Codegen: Tail-duplicate during placement.
    
    The tail duplication pass uses an assumed layout when making duplication
    decisions. This is fine, but passes up duplication opportunities that
    may arise when blocks are outlined. Because we want the updated CFG to
    affect subsequent placement decisions, this change must occur during
    placement.
    
    In order to achieve this goal, TailDuplicationPass is split into a
    utility class, TailDuplicator, and the pass itself. The pass delegates
    nearly everything to the TailDuplicator object, except for looping over
    the blocks in a function. This allows the same code to be used for tail
    duplication in both places.
    
    This change, in concert with outlining optional branches, allows
    triangle shaped code to perform much better, esepecially when the
    taken/untaken branches are correlated, as it creates a second spine when
    the tests are small enough.
    
    Issue from previous rollback fixed, and a new test was added for that
    case as well. Issue was worklist/scheduling/taildup issue in layout.
    
    Issue from 2nd rollback fixed, with 2 additional tests. Issue was
    tail merging/loop info/tail-duplication causing issue with loops that share
    a header block.
    
    Issue with early tail-duplication of blocks that branch to a fallthrough
    predecessor fixed with test case: tail-dup-branch-to-fallthrough.ll
    
    Differential revision: https://reviews.llvm.org/D18226
    
    git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@283934 91177308-0d34-0410-b5e6-96231b3b80d8

Works:
Clang: 204eb555222d86837d865007c1526018e391bf67
LLVM: 6f185f662a9dc692c12417784c9756bc3212cde8

Fails:
Clang: 204eb555222d86837d865007c1526018e391bf67
LLVM: 2a18018c101b6b4f40049a2ab951cda505074970

@crtrott
Copy link
Member Author

crtrott commented Dec 2, 2016

Clang: 61a39e4b5bf70f40db70d51f71948a66e567c559
LLVM: 6f185f662a9dc692c12417784c9756bc3212cde8

Also works

@crtrott
Copy link
Member Author

crtrott commented Dec 2, 2016

@crtrott
Copy link
Member Author

crtrott commented Dec 3, 2016

There is a strong possibility that this is actually connected to issue #542

@crtrott
Copy link
Member Author

crtrott commented Jul 11, 2017

Ok we have now clang 4.0 work as a Cuda compiler, assuming you have a driver 384.27 or higher loaded.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Broken / incorrect code; it could be Kokkos' responsibility, or others’ (e.g., Trilinos) Compiler Issue An issue that Kokkos cannot / should not fix; Kokkos must communicate to relevant vendor
Projects
None yet
Development

No branches or pull requests

1 participant