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

Tests take twice as much time to run with USE_ORCJIT #15246

Closed
nalimilan opened this issue Feb 25, 2016 · 10 comments
Closed

Tests take twice as much time to run with USE_ORCJIT #15246

nalimilan opened this issue Feb 25, 2016 · 10 comments
Labels
compiler:codegen Generation of LLVM IR and native code kind:regression Regression in behavior compared to a previous version performance Must go faster

Comments

@nalimilan
Copy link
Member

When USE_ORCJIT is defined, tests take about twice more time to run on Fedora and RHEL. This happens both with a vanilla Julia build (including all in-tree dependencies) and when building RPM packages (with USE_SYSTEM_*=1 and LLVM 3.7.1).

What's curious is that USE_ORCJIT reduces RAM usage a lot, but apparently this isn't enough to make it faster.

See the timings in the two logs, which were run on my laptop:
With USE_ORCJIT: https://gist.github.com/nalimilan/ed141ce0153b264958d6
Without USE_ORCJIT: https://gist.github.com/nalimilan/4e2e728cf7d8569dd64c
(Note that I had to kill the latter in the middle of the testsuite as I only have 6GB RAM and the system started swapping heavily. I could run everything again with a maxrss limit if it's useful.)

Am I the only one to observe this dramatic difference? It would be surprising that I see this on 4 different distribution versions on both 32- and 64-bit, but that nobody else would see it.

@Keno
Copy link
Member

Keno commented Feb 25, 2016

Twice is suspicious. When I tested this ORCJIT was definitely faster than MCJIT. Maybe somehow we're running everything twice now?

@Keno
Copy link
Member

Keno commented Feb 25, 2016

Oh, also are you doing a debug or a release build (of julia, not LLVM)?

@nalimilan
Copy link
Member Author

When building the RPMs, I do both, but the logs shown above are just the result of make clean && make && make test.

@nalimilan
Copy link
Member Author

Am I the only one to see this? I've noticed the Travis queue is particularly busy these days, could it be related?

@Keno
Copy link
Member

Keno commented Mar 3, 2016

I'll take a look at this in a bit, but I wouldn't be surprised if all that's happening is that somehow the code path that adds the LLVM optimizations got dropped from the MCJIT case, so what you're really seeing is that MCJIT isn't running any optimizations.

@vtjnash vtjnash added performance Must go faster kind:regression Regression in behavior compared to a previous version compiler:codegen Generation of LLVM IR and native code labels Mar 8, 2016
@nalimilan
Copy link
Member Author

@Keno Have you had the chance to look into this?

@Keno
Copy link
Member

Keno commented Mar 29, 2016

No I haven't, but the codegen was also recently rewritten again so it would be good to see if the same phenomenon can still be observed.

@nalimilan
Copy link
Member Author

The timings when building RPMs are still the same AFAICT.

@nalimilan
Copy link
Member Author

Spoke too soon, there's been a noticeable improvement yesterday (right after I started the build I was talking about). Likely #15609.

That said, while some tests run even faster than without USE_ORCJIT before (timings above), some still take more time: e.g. the penalty associated with USE_ORCJIT seems to be half of what it was before for linalg/triangular. So overall, the tests run much faster, but still not as fast as before.

Unfortunately, I can't test master without USE_ORCJIT as the build fails (#15688).

@nalimilan
Copy link
Member Author

Now that the build works on master without USE_ORCJIT, I've retried the comparison. And the difference seems to have vanished:

Overall it looks like the tests are a bit slower than before (as I noted above), but there's no consistent pattern. Anyway, doesn't look like it's related to USE_ORCJIT now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
compiler:codegen Generation of LLVM IR and native code kind:regression Regression in behavior compared to a previous version performance Must go faster
Projects
None yet
Development

No branches or pull requests

3 participants