-
-
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
Julia 0.3.1 slow startup on win64 (no sys.dll) #8724
Comments
Mostly this is because we don't ship a precompiled sys.dll on Windows, as explained in this comment. Hopefully this will be fixed in a future release backed by a later version of LLVM. I'm not sure if we have an issue tracking bringing sys.dll back--I couldn't find one. Maybe this should be it? @tkelman, thoughts? |
Thanks for the explanation! |
Oddly, I just ran |
If you're building your own build, @PythonNut, you probably have a sys.dll (unless you delete it). It's explicitly removed from the binaries that we distribute. |
Ah, that explains it. |
@pao nice searching. I agree with past me (not always the case) - not much has changed since July, LLVM 3.5.0 was released last month but my understanding is some of Keno's patches that we require were reverted so we're still on 3.3 for a while longer. |
Yes, last I heard (beginning of September) was that we will either have to ship a patched LLVM 3.5 (e.g. no using distribution packages) or wait until 3.6. So far, we're waiting for 3.6. |
When is LLVM 3.6 expected to be released? |
Would it make sense to use LLVM 3.5 patched for just the Windows build, where this doesn't matter? Or are we worried about fragmenting over multiple LLVM versions? |
We have Windows-only patches for LLVM 3.3 already, and several more for non-Windows too. Patches are slightly annoying but sometimes they're the best way to get things done quickly. For LLVM 3.5 I don't have the slightest idea what patches are required. The backtrace unit test actually goes from failing on LLVM 3.3 (Julia master) to passing with 3.5.0, but the numbers tests start failing #7728 (comment). Haven't looked in depth into the sys.dll issues yet, and apparently things are messed-up on Mac too. |
I can't compile julia on win64 yet (sysimg doesn't build), although win32 target seems to be working. @Keno any idea where the MCJIT emits the |
@tkelman it seems that julia w/ 3.5.0 crashes at startup if I don't have a sys.dll image to bootstrap with. what do you get for your configuration target:
|
Same, On Fri, Oct 24, 2014 at 8:24 PM, Tony Kelman [email protected]
|
@ihnorton I should've elaborated - what I was asking was do you also see Win64 Julia using mingw-builds and LLVM 3.5.0 crash at startup? |
My Windows builds for several months have all been cross-compiles from either Cygwin or Linux. In Cygwin the set of packages you need to build Julia is:
plus dependencies, and setting |
Yes, I see the crash with both 3.5 and llvm trunk (gcc x64-4.8.1-win32-seh-rev5) |
Thanks for confirming. Looks like we'll have to switch recommended Windows build configuration then? Any reasons not to make Cygwin cross-compile the main source build method for Windows (assuming people other than me can get it to work)? Now I'll really have to rewrite README.windows.md, I was hoping I could just add "here's another option" but apparently it'll be more of a replacement. If we make that switch then it'll be good to put in some error-quickly bits into the makefile to prevent people from trying to use Cygwin's gcc - same issue as the msys gcc, it can't build libuv. The MinGW cross compilers work well though, and you get them from the same setup program as the rest of Cygwin which makes things simpler to install. |
It would be nice to get a sense of why it is broken before doing that.
@vtjnash what is the issue with |
Yeah, good point. If fixable without changing build configuration then we should try to fix it.
There was a question of whether any SEH instructions get emitted with LLVM 3.5, I think. The answer looked like no? https://gist.github.com/tkelman/06dc5a277b2418697463 Some things Jameson said in IRC last night that I made sure to write down:
I understood some of those words. You might understand more of them. |
this is confirmed fixed by turning on LLVM35 (or later) |
@vtjnash does it somehow pass the numbers test now? #7728 (comment) |
who said anything about a numbers test? this issue was just about being faster. i just kicked off a rebuild (to sync up with recent changes in master), so it'll be a very long time before before I can run the full test suite. | | |_| | | | (_| | | Version 0.4.0-dev+1908 (2014-12-01 20:43 UTC)
_/ |\__'_|_|_|\__'_| | Commit 5f23e22* (11 days old master)
|__/ | x86_64-w64-mingw32
julia> fld(0.25, -1)
-1.0
julia> fld(promote(0.25, -1)...)
-1.0 |
Me, because I'm curious if anything has changed to somehow make llvm 3.5 work better. Even on 3.3 sys.dll gives faster startup and has all year, so fast startup isn't the entire issue. |
sure, but it broke backtraces and reliable exception handling. i was going to wait for the tests to run to push, but I guess there's no real need to: e00f0d9 |
I usually have to wait about 12 - 16 seconds for the Julia interpreter to start.
I'm not sure if this is normal on Windows but seeing startup times of about 2 - 3 seconds posted by linux users in your issues (for example in #260) I thought it is a bit weird.
below is a cleared-up ouput from Measure-Command in PowerShell running
julia -e 0
:I'd be happy to give you more info if needed.
The text was updated successfully, but these errors were encountered: