-
-
Notifications
You must be signed in to change notification settings - Fork 5.6k
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
Upgrade to LLVM 3.9 #19123
Comments
#19054 had the important bits and pieces of #18863 and from what I can tell we need:
|
|
Note that the threads patch was initially borrowed from rust (who have the same toolchain C++11 threads issue we do with mingw), so we should check if they have a rebased version we could use to save ourselves a bit of time there. (edit: they do) |
Something else I just noticed is that the Intel Compiler 2016_update2 is not able to build llvm. See https://sft.its.cern.ch/jira/browse/ROOT-8233 and https://software.intel.com/en-us/forums/intel-c-compiler/topic/640702 |
Looks like that's icc's bug, but llvm continues to do an incredible job of finding new ways to break every other compiler... |
Worth keeping an eye on: https://github.com/lhmouse/mcfgthread There was some discussion on the gcc list in April, but I don't see any response or recent activity, so it is unclear if/when it might go in to mainline. There is some further discussion/development on mingw-w64-public. lhmouse does have a forked toolchain build here. (related: https://github.com/meganz/mingw-std-threads -- header-only, but does not implement |
Yes, though unless that somehow gets backported to gcc 4, we'll need to worry about https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77333... or come up with a proper fix to gmp's build system so it works with clang on windows and start using that (ref #15488 which doesn't work in cross-compile). |
Another issue we'll start seeing is that LLVM symbols conflict with graphics drivers on Linux distributions that have (stupidly) chosen to dynamically link LLVM into their graphics drivers. I have a patch (https://reviews.llvm.org/D13330) that adds capabilities to clang, to avoid generating the problematic symbols, but I doubt similar capabilities will make it into gcc anytime soon. |
Does this work at all on Linux? Need LLVM 3.9 to start testing Julia performance on KNL. |
Stock/patched LLVM 3.9.0 should work with no problem on x86/x64 linux. |
@kpamnany I had to use LLVM-svn on KNL but it worked fine (~a month ago.) |
@kpamnany Apply https://reviews.llvm.org/D26123 or a commit before https://reviews.llvm.org/rL285426 if you want a llvm-svn build without assertion enabled. |
Bump. What's the status here? |
#19138 can be merged, but bootstrap crashes on both win32 and win64 last time I tried with 3.9. |
What's necessary to get this not to crash? |
@Keno is necessary, perhaps? |
Use of the NVPTX back-end is only tested on LLVM 3.9 (and hence depends on #19123), in combination with the CUDAnative.jl package.
Use of the NVPTX back-end is only tested on LLVM 3.9 (and hence depends on #19123), in combination with the CUDAnative.jl package.
Use of the NVPTX back-end is only tested on LLVM 3.9 (and hence depends on #19123), in combination with the CUDAnative.jl package.
@vchuravy that's what https://reviews.llvm.org/D27653 is intended to address, right? |
Yes. But I don't think that's the right solution. I think the long term solution is to make sure we can find |
What effect would that have? Things are working without requiring libatomic on llvn 3.7. There actually is no toolchain option that can build llvm 3.7 (and the rest of release-0.5 julia) correctly on win32 and includes libatomic as far as I'm aware. |
Larger memory consumption.
Due to a LLVM bug. |
What other consequences does the llvm bug have? A memory regression on 32 bit might be fine if it's not too large. Can we avoid libatomic or do we need to fix gcc 5+ (or libgmp's build system) to be able to have a toolchain that can build both llvm 3.9 and release-0.5 julia? |
The instructions it generates violates the platform ABI, which shouldn't cause too much issue due to our limited use of it currently.
That's why I mentioned a short term solution? Or are you talking about something else? |
crossing threads in my head here, sorry. what needs patching to remove szclass 12? |
1857f07 apart from the |
So modifying the ifdef conditionals there to also include win32? What about i686 linux? Not sure whether llvm 3.9 has been tested there yet but we have buildbots that run tests there. I can test this if anyone can propose the right patch; so could anyone else who has a win32 source build handy but I'm guessing there aren't that many aside from me. |
Yes.
I suspect this is less useful than win32 so may as well include it as well if we are going to change it on win32.
I've tested it and the tests should all pass.
If we decide to do this I'll write the patch. Or maybe we can test it first anyway? |
From my point of view removing I can test this over the weekend. |
Tests pass for me with 3.9.0. Someone will need to submit an llvm39-julia homebrew formula to the homebrew-julia tap (should leave the llvm37-julia alone as it is, best not to delete it), may as well make it 3.9.1 plus all our patches for consistency with how source builds will look. |
Use of the NVPTX back-end is only tested on LLVM 3.9 (and hence depends on #19123), in combination with the CUDAnative.jl package.
Noting the homebrew tap for llvm39 PR here: staticfloat/homebrew-julia#229 @vchuravy It seems that all the items in your list above are carried out. Can you checkmark them all if appropriate? |
Should we close this one and focus on #19678 ? |
#19678 will close this when merged. |
Ah I missed that #19678 was a PR. Sorry about the noise. |
Related but closed: #18863. What's the status of this?
The text was updated successfully, but these errors were encountered: