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

Benchmark 0.5 vs 0.6 [do not merge] #20993

Closed
wants to merge 1 commit into from
Closed

Conversation

KristofferC
Copy link
Sponsor Member

#20947 got auto closed for some reason... Oh well.

Benchmarks again now when the inlining improvements were merged.:

@nanosoldier runbenchmarks(ALL, vs = "@6445c82d0060dbe82b88436f0f4371a4ee64d918")

@nanosoldier
Copy link
Collaborator

Your benchmark job has completed - possible performance regressions were detected. A full report can be found here. cc @jrevels

@KristofferC
Copy link
Sponsor Member Author

KristofferC commented Mar 14, 2017

Copied from comment in #20947 and updated.

Summary of stuff that got slower:

Arrays:

  • ["array","index",("sumcolon","1.0:1.0:100000.0")]
  • ["array","index",("sumeach_view","BitArray{2}")]
  • ["array","index",("sumlinear_view","BitArray{2}")]
  • ["array","index",("sumrange","1.0:1.0:100000.0")]
  • Some of the concatenations.

Date accessors in general

For example: ["dates","accessor","millisecond"]

Fixed by #20853?

Eig and Schur Factorizations

For example: ["linalg","factorization",("eig","Matrix",256)]

div with BigNumbers

For example: ["scalar","arithmetic",("div","BigFloat","Complex{Float32}")]

Maybe some new promotion paths that leads to multiple allocations of big numbers?

Yes, changed from:

/(a::Real, z::Complex) = a*inv(z)

to

/{R<:Real,S<:Complex}(a::R, z::S) = (T = promote_type(R,S); a*inv(T(z)))

Parallell remotecall

For example ["parallel","remotecall",("identity",2)]

Sorting in general

For example ["sort","insertionsort",("sort forwards","ascending")]

I think this happened when we upgraded LLVM

Sparse indexing

For example ["sparse","index",("spmat","col","array",10)]

Other

  • ["problem","laplacian","laplace_sparse_matvec"]
  • ["misc","bitshift",("UInt32","UInt32")]
  • ["shootout","revcomp"]

@tkelman
Copy link
Contributor

tkelman commented Mar 17, 2017

["scalar","arithmetic",("div","BigFloat","Complex{Float32}")]

that should be pretty easy to fix by adding a few specialized methods that avoid creating the intermediate BigFloats that the new promotion path introduced

@tkelman
Copy link
Contributor

tkelman commented Mar 30, 2017

cc @rfourquet if you're working on BigInt / BigFloat performance tweaks

@pabloferz
Copy link
Contributor

With all the recent changes to codegen and bugfixes for the type system would it be worth to rebase this and rerun the benchmarks?

@KristofferC
Copy link
Sponsor Member Author

@nanosoldier runbenchmarks(ALL, vs = "@6445c82d0060dbe82b88436f0f4371a4ee64d918")

@nanosoldier
Copy link
Collaborator

Something went wrong when running your job:

NanosoldierError: failed to run benchmarks against comparison commit: failed process: Process(`sudo cset shield -e su nanosoldier -- -c ./benchscript.sh`, ProcessExited(1)) [1]

Logs and partial data can be found here
cc @jrevels

@KristofferC
Copy link
Sponsor Member Author

Looks like the benchmarks I added are to blame:

ERROR: LoadError: LoadError: UndefVarError: IndexStyle not defined

https://github.com/JuliaCI/BaseBenchmarks.jl/blob/master/src/tuple/TupleBenchmarks.jl#L62

Anyone know what the problem is?

@timholy
Copy link
Sponsor Member

timholy commented Apr 7, 2017

Is it using an old version of Compat? It needs at least v0.19.

@KristofferC
Copy link
Sponsor Member Author

Perhaps, the required one is too low at least. I made a PR to bump it.

@jrevels
Copy link
Member

jrevels commented Apr 7, 2017

Now that Compat is updated on Nanosoldier:

@nanosoldier runbenchmarks(ALL, vs = "@6445c82d0060dbe82b88436f0f4371a4ee64d918")

@nanosoldier
Copy link
Collaborator

Your benchmark job has completed - possible performance regressions were detected. A full report can be found here. cc @jrevels

@jebej
Copy link
Contributor

jebej commented Apr 7, 2017

Factorization regressions are still there :(

@jrevels
Copy link
Member

jrevels commented Apr 13, 2017

Let's see if benchmarks vs. v0.4.7 work now (I did a Pkg.update() on Nanosoldier's v0.4 installation):

@nanosoldier runbenchmarks(ALL, vs = "@ae26b25d43317d7dd3ca05f60b70677aab9c0e08")

@nanosoldier
Copy link
Collaborator

Your benchmark job has completed - possible performance regressions were detected. A full report can be found here. cc @jrevels

mbauman added a commit that referenced this pull request May 2, 2017
This works around some of the performance regressions flagged in #20993. The instability itself is not new nor is it the cause of the regression. The trouble is just that there are a few more inlined functions now, each of which needs a dynamic dispatch.

It is worth noting that 0.6 (with this patch) is significantly faster than 0.5 (with this patch). I measure an improvement of ~30%.
KristofferC pushed a commit that referenced this pull request May 3, 2017
This works around some of the performance regressions flagged in #20993. The instability itself is not new nor is it the cause of the regression. The trouble is just that there are a few more inlined functions now, each of which needs a dynamic dispatch.

It is worth noting that 0.6 (with this patch) is significantly faster than 0.5 (with this patch). I measure an improvement of ~30%.
tkelman pushed a commit that referenced this pull request May 4, 2017
This works around some of the performance regressions flagged in #20993. The instability itself is not new nor is it the cause of the regression. The trouble is just that there are a few more inlined functions now, each of which needs a dynamic dispatch.

It is worth noting that 0.6 (with this patch) is significantly faster than 0.5 (with this patch). I measure an improvement of ~30%.
(cherry picked from commit 253fa74)
tkelman pushed a commit that referenced this pull request May 4, 2017
This works around some of the performance regressions flagged in #20993. The instability itself is not new nor is it the cause of the regression. The trouble is just that there are a few more inlined functions now, each of which needs a dynamic dispatch.

It is worth noting that 0.6 (with this patch) is significantly faster than 0.5 (with this patch). I measure an improvement of ~30%.
(cherry picked from commit 253fa74)
@KristofferC
Copy link
Sponsor Member Author

How should this be continued? Should I open a new PR against some release-0.6 branch or just keep benchmarking against master?

@tkelman
Copy link
Contributor

tkelman commented May 5, 2017

at the moment the latest wip state is at tk/backports-0.6.0-rc1

@KristofferC
Copy link
Sponsor Member Author

KristofferC commented May 5, 2017

Ah, I can change the branch to merge into from an existing PR. Cool

@KristofferC KristofferC changed the base branch from master to tk/backports-0.6.0-rc1 May 5, 2017 09:08
@KristofferC
Copy link
Sponsor Member Author

KristofferC commented May 5, 2017

tk/backports-0.6.0-rc1 vs 0.4.7:

@nanosoldier runbenchmarks(ALL, vs = "@ae26b25d43317d7dd3ca05f60b70677aab9c0e08")

@KristofferC
Copy link
Sponsor Member Author

tk/backports-0.6.0-rc1 vs 0.5.1:

@nanosoldier runbenchmarks(ALL, vs = "@6445c82d0060dbe82b88436f0f4371a4ee64d918")

@nanosoldier
Copy link
Collaborator

Something went wrong when running your job:

NanosoldierError: failed to run benchmarks against comparison commit: failed process: Process(`make -j3`, ProcessExited(2)) [2]

Logs and partial data can be found here
cc @jrevels

@nanosoldier
Copy link
Collaborator

Your benchmark job has completed - possible performance regressions were detected. A full report can be found here. cc @jrevels

@oscardssmith
Copy link
Member

This looks really good overall. Does anyone know what caused the regression in div for complex bigfloats?

@KristofferC
Copy link
Sponsor Member Author

Yes, read the first post.

@tkelman tkelman changed the base branch from tk/backports-0.6.0-rc1 to release-0.6 May 6, 2017 15:16
@KristofferC KristofferC changed the base branch from release-0.6 to tk/backports-0.6.0-rc2 May 14, 2017 21:53
@KristofferC
Copy link
Sponsor Member Author

KristofferC commented May 14, 2017

0.6-rc2 vs 0.5.2:

@nanosoldier runbenchmarks(ALL, vs = "@6445c82d0060dbe82b88436f0f4371a4ee64d918")

@nanosoldier
Copy link
Collaborator

Your benchmark job has completed - possible performance regressions were detected. A full report can be found here. cc @jrevels

@tkelman
Copy link
Contributor

tkelman commented May 15, 2017

dates constructors, uint bitshift, and some of the simd regressions might be worth looking at to see if they're fixable

I looked a bit at bigint divided by complex (and bigfloat divided by complex) but couldn't find a way of preserving the more accurate result with fewer allocations. I think it would require writing some careful in-place code, which would be really messy without the module reorganization @rfourquet did recently (which for now is 0.7-only)

@tkelman tkelman changed the base branch from tk/backports-0.6.0-rc2 to release-0.6 May 18, 2017 02:29
@jebej
Copy link
Contributor

jebej commented Jun 3, 2017

Should the benchmarks be run for the upcoming rc3 as well?

@KristofferC
Copy link
Sponsor Member Author

KristofferC commented Jun 3, 2017

They are run for regressions against the last rc but she how useful it is to benchmark here. Could probably close it.

@tkelman tkelman deleted the benchmark_05_06 branch June 25, 2017 18:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

8 participants