-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
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
Conversation
(cherry picked from commit 131b75b)
(cherry picked from commit 7005b7d)
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)
Avoids an assert when this is triggered (cherry picked from commit 2d81742)
(cherry picked from commit 01d439e)
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)
(cherry picked from commit 9ae49bc)
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)
(cherry picked from commit 310bf16)
(cherry picked from commit 6e1bae4)
(cherry picked from commit aa421ff)
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)
(cherry picked from commit e1669b6)
886b922
to
c2c5a83
Compare
Something went wrong when running your job:
Unfortunately, the logs could not be uploaded. |
(Q: did you mean to compare to master?) |
No.. Fail :( Although, it is surprising that: |
@nanosoldier |
Something went wrong when running your job:
Unfortunately, the logs could not be uploaded. |
I've uploaded without the data files: https://github.com/JuliaCI/NanosoldierReports/blob/master/benchmark/by_hash/0c1a860_vs_11e64d1/report.md But note also the very large number of errors reported in the "primary" log files: https://raw.githubusercontent.com/JuliaCI/NanosoldierReports/master/benchmark/by_hash/0c1a860_vs_11e64d1/logs/0c1a860ce5fb2f440bfd23be5a98343c28d39aef_primary.err due to c2c5a83 being backported incorrectly or without 795935f (#41697) |
Scary that all the tests passed... |
c2c5a83
to
c85012a
Compare
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
release: backport complicated compiler changes
Let's try with non-broken inference then. Third time's the charm? @nanosoldier |
Something went wrong when running your job:
Unfortunately, the logs could not be uploaded. |
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. |
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? |
Not part of the public API, so we can break them without consequence. |
platform_linux
jobs, after building Julia, make sure that the working directory is clean #41796pull_request_target
event instead of thepull_request
event #41814tester_
jobs #41822macosaarch64
andmusl64
statuses #41824tester_linuxppc64le
status #41831tester_linuxarmv7l
status #41832permissions
key in the workflow file for the "Statuses" workflow #41851llvmpasses
: use the latest rootfs image #41864modules_to_be_loaded
#41878base-buildkite-docs
repository #41956jl_cumulative_compile_time_ns
global (and reentrant). #41733LimitedAccuracy
handlings #42034abstract_iteration
#41839Conditional
inPartialStruct
#42091cmdlineargs
tests on Buildkite #42118Non-merged PRs with backport label:
package_linux
andtester_linux
for more Linux architectures #41707using
thread-safe #41602