-
Notifications
You must be signed in to change notification settings - Fork 67
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
WIP: shorten compile time with nospecialize #76
Conversation
Running the test suite prints a lot of times. How noisy are Travis runs? I can also run the tests locally to compare as well. |
Do you mean, can one use the time as a guide to progress on this issue? Or, might I have left a stray |
Actually, this might already be helping: if memory serves it used to be ~205s for me to run the whole test suite, this run came out as 177. Of course that's completely uncontrolled (what else was my machine doing at the same time? was I plugged into power? did packages have to be compiled first?), but something to keep an eye on. Travis has a heterogeneous collection of machines, I think, so probably not very accurate to compare run-to-run timings on Travis. |
Yes, I was wondering if we could use Travis to track progress. How many other builds were ongoing / competing for CI's resources, etc? |
Here's results from a more controlled experiment where I ran each twice:
I don't know what happened with that one fast run, but so far this isn't helping. Of course, if we've identified a crack in the control of specializations (which I suspect we have), the conclusion might change. These tests were done on Julia 1.3. |
Would it be better to ditch the precompile file when timing this? That file shows a huge list of methods from the broadcast file I don't want it specializing on, such as specific static sizes or patterns of true/false in LowDimArray. On a couple day old build of Julia master, I got, with LoopVectorization master This PR, after merging master I've disabled all turboing on this desktop (i.e., it'll run at the same speed regardless of how many cores are under load, or how long it has been working [although speeds will change as a function of work, so clocks vary with sse/avx/avx512/idle, but that should be consistent within a given workload]; but that does mean that the max speed it I have it configured to run at is actually 0.2 GHz slower than the stock max single core boost). There's still a fair bit of noise, but this PR does already look a bit faster on my computer. It seems to allocate a little less memory. |
Great observation. This PR is very much partial, so it might get even better. Still, I have a sense that something isn't right, so I'll wait a bit and see if Jeff discovers anything else. |
Superseded by #97 |
This is a branch that, for the moment, is mostly for JuliaLang/julia#35131. Steps to reproduce: after
dev
ing this branch, doTo be clear, the point of
abstractparameters
is to allow one to write certain methods without awhere
clause and still be able to access the parameters. I am assuming that having thewhere
will force specialization independent of a@nospecialize
. (If that's not correct, I'd rather get rid ofabstractparameters
and go back to the way they were before.) So it's ironic thatabstractparameters
itself seems to get inferred for many different input types.