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

release-1.7: Backports for 1.7-RC1 #41781

Merged
merged 66 commits into from
Sep 9, 2021
Merged

Conversation

KristofferC
Copy link
Member

@KristofferC KristofferC commented Aug 4, 2021

Non-merged PRs with backport label:

@KristofferC KristofferC added the release Release management and versioning. label Aug 4, 2021
DilumAluthge and others added 27 commits August 25, 2021 12:46
…ake sure that the working directory is clean (#41796)

(cherry picked from commit cb30aa7)
…(yellow) commit statuses for all Buildbot jobs (#41811)

(cherry picked from commit 6fce8d5)
…low, use the `pull_request_target` event instead of the `pull_request` event (#41814)

(cherry picked from commit d62e206)
…e pending (yellow) statuses for the `tester_` jobs (#41822)

(cherry picked from commit 08fae51)
…h64` and `musl64` statuses (#41824)

(cherry picked from commit bdd7457)
Fixes dynamic arch detection on certain ARMv8 cores.
See OpenMathLib/OpenBLAS#3060

(cherry picked from commit cd6e67f)
I am experimenting with showing some other information besides just the
types here as well and I think this would be generally useful. This
passes that information as an `IOContext` as to not break any downstream
uses of this code.

(cherry picked from commit c2b4b38)
…le for the "Statuses" workflow (#41851)

(cherry picked from commit 34dc044)
Avoids an assert when this is triggered

(cherry picked from commit 2d81742)
This reverts commit 4a19b75.
Closes #41799.

(cherry picked from commit 702cf55)
This adds `lbt_find_backing_library()`, which is a useful debugging
routine to allow advanced users/package authors to query LBT to
determine which backing BLAS library will service a particular BLAS
call.  It also exposes the "footgun API", which allows users to directly
set/get forwarding on a per-function basis.  Because this has the
ability to generate truly bizarre setups, we do not advertise this
capability broadly (simply using `lbt_forward()` should be enough for
most usecases) however it's nice to have wrapped.

(cherry picked from commit b40ae6b)
These get invalidated by loading Static.jl, specifically the method
```
Base.convert(::Type{T}, ::StaticInt{N}) where {T<:Number,N} = convert(T, N)
```

(cherry picked from commit 232ee11)
ChainRulesCore defines `==(a, b::AbstractThunk)` and its converse,
and these end up invaliding parts of the REPL (including `eval_user_input`)
via inference failures in `modules_to_be_loaded`.

Co-authored by: Jameson Nash <vtjnash@gmail.com>

(cherry picked from commit 7a6336d)
Zero and copy only the used portion of the union state buffer.

(cherry picked from commit 0258553)
vtjnash and others added 6 commits September 8, 2021 12:14
* InteractiveUtils: recursive correctly in varinfo, et al.

Fixes #42045

(cherry picked from commit a163e37)
Lacking inlining, but now expressing the direct invoke:
this gets us within about 2x of a primitive atomicrmw add.

(cherry picked from commit 85518c8)
* inference: propagate variable changes to all exception frames

Fix #42022

* Update test/compiler/inference.jl

* Update test/compiler/inference.jl

Co-authored-by: Shuhei Kadowaki <40514306+aviatesk@users.noreply.github.com>

* fixup! inference: propagate variable changes to all exception frames

Co-authored-by: Shuhei Kadowaki <40514306+aviatesk@users.noreply.github.com>
(cherry picked from commit e83b317)
@nanosoldier
Copy link
Collaborator

Something went wrong when running your job:

NanosoldierError: error when preparing/pushing to report repo: failed process: Process(setenv(`git push`; dir="/run/media/system/data/nanosoldier/workdir/NanosoldierReports"), ProcessExited(1)) [1]

Unfortunately, the logs could not be uploaded.
cc @christopher-dG

@vtjnash
Copy link
Member

vtjnash commented Sep 8, 2021

@KristofferC
Copy link
Member Author

KristofferC commented Sep 8, 2021

No.. Fail :(

Although, it is surprising that: ["problem", "spellcheck", "spellcheck"] and a bunch of the find functions are slower on master.

@KristofferC
Copy link
Member Author

@nanosoldier runbenchmarks(ALL, vs=":release-1.6")

@nanosoldier
Copy link
Collaborator

Something went wrong when running your job:

NanosoldierError: error when preparing/pushing to report repo: failed process: Process(setenv(`git push`; dir="/run/media/system/data/nanosoldier/workdir/NanosoldierReports"), ProcessExited(1)) [1]

Unfortunately, the logs could not be uploaded.
cc @christopher-dG

@vtjnash
Copy link
Member

vtjnash commented Sep 9, 2021

@KristofferC
Copy link
Member Author

Scary that all the tests passed...

aviatesk and others added 5 commits September 9, 2021 05:23
Separated from compiler-plugin prototyping.

cherry-picked from 799136d
(this PR is the final output of my demo at [our workshop](https://github.com/aviatesk/juliacon2021-workshop-pkgdev))

This PR eliminated much of runtime dispatches within our type inference
routine, that are reported by the following JET analysis:
```julia
using JETTest

const CC = Core.Compiler

function function_filter(@nospecialize(ft))
    ft === typeof(CC.isprimitivetype) && return false
    ft === typeof(CC.ismutabletype) && return false
    ft === typeof(CC.isbitstype) && return false
    ft === typeof(CC.widenconst) && return false
    ft === typeof(CC.widenconditional) && return false
    ft === typeof(CC.widenwrappedconditional) && return false
    ft === typeof(CC.maybe_extract_const_bool) && return false
    ft === typeof(CC.ignorelimited) && return false
    return true
end

function frame_filter((; linfo) = sv)
    meth = linfo.def
    isa(meth, Method) || return true
    return occursin("compiler/", string(meth.file))
end

report_dispatch(CC.typeinf, (CC.NativeInterpreter, CC.InferenceState); function_filter, frame_filter)
```

> on master
```
═════ 137 possible errors found ═════
...
```
> on this PR
```
═════ 51 possible errors found ═════
...
```

And it seems like this PR makes JIT slightly faster:
> on master
```julia
~/julia/julia master
❯ ./usr/bin/julia -e '@time using Plots; @time plot(rand(10,3));'
  3.659865 seconds (7.19 M allocations: 497.982 MiB, 3.94% gc time, 0.39% compilation time)
  2.696410 seconds (3.62 M allocations: 202.905 MiB, 7.49% gc time, 56.39% compilation time)
```
> on this PR
```julia
~/julia/julia avi/jetdemo* 7s
❯ ./usr/bin/julia -e '@time using Plots; @time plot(rand(10,3));'
  3.396974 seconds (7.16 M allocations: 491.442 MiB, 4.80% gc time, 0.28% compilation time)
  2.591130 seconds (3.48 M allocations: 196.026 MiB, 7.29% gc time, 56.72% compilation time)
```

cherry-picked from 795935f
Otherwise we can end up in an infinite cycle of attempting
const-prop, and that failing. Also handle `Varargs` in method-lookup
matching, which was the cause for which we could not compute the
const-prop signature.

Fixes #42097

cherry-picked from 3a4198e
release: backport complicated compiler changes
@KristofferC
Copy link
Member Author

Let's try with non-broken inference then. Third time's the charm?

@nanosoldier runbenchmarks(ALL, vs=":release-1.6")

@nanosoldier
Copy link
Collaborator

Something went wrong when running your job:

NanosoldierError: error when preparing/pushing to report repo: failed process: Process(setenv(`git push`; dir="/run/media/system/data/nanosoldier/workdir/NanosoldierReports"), ProcessExited(1)) [1]

Unfortunately, the logs could not be uploaded.
cc @christopher-dG

@KristofferC KristofferC changed the title release-1.7: Backports for 1.7-RC1/1.7-beta5 release-1.7: Backports for 1.7-RC1 Sep 9, 2021
@KristofferC KristofferC merged commit b4eeb2d into release-1.7 Sep 9, 2021
@KristofferC KristofferC deleted the backports-release-1.7 branch September 9, 2021 19:44
@timholy
Copy link
Member

timholy commented Sep 9, 2021

Awesome! What are your thoughts on the likelihood of getting #42125 in? In a sense maybe it doesn't matter since it's not a supported name, but it's not crazy to think that a renaming post-rc1 is also a bit weird.

@DilumAluthge
Copy link
Member

Are those names part of the public API/do those names appear in the documentation? If not, it wouldn't be breaking to change the names in 1.8, right?

@timholy
Copy link
Member

timholy commented Sep 9, 2021

Not part of the public API, so we can break them without consequence.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
release Release management and versioning.
Projects
None yet
Development

Successfully merging this pull request may close these issues.