-
-
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
RFC: Customizable lazy broadcasting with options for pure-Julia fusion and eager evaluation #25377
Commits on Jan 7, 2018
-
Reduce build-time calls to broadcasting machinery
The main one left is in concatenation, in a line inds[i] = offsets[i] .+ cat_indices(x, i)
Configuration menu - View commit details
-
Copy full SHA for c0db74c - Browse repository at this point
Copy the full SHA c0db74cView commit details -
Allow test/core.jl to be run from REPL
If you've already said `using Test`, defining a function named `Test` causes problems.
Configuration menu - View commit details
-
Copy full SHA for 0c6617a - Browse repository at this point
Copy the full SHA 0c6617aView commit details -
Turn range&number arithmetic operations into broadcast methods
This is consistent with the deprecation of methods like `[1,2,3] + 1`.
Configuration menu - View commit details
-
Copy full SHA for 98fe8ab - Browse repository at this point
Copy the full SHA 98fe8abView commit details -
Configuration menu - View commit details
-
Copy full SHA for aeba265 - Browse repository at this point
Copy the full SHA aeba265View commit details -
Configuration menu - View commit details
-
Copy full SHA for 98f6bdc - Browse repository at this point
Copy the full SHA 98f6bdcView commit details -
Integrate lazy broadcast representation into new broadcast machinery
Configuration menu - View commit details
-
Copy full SHA for 0698edc - Browse repository at this point
Copy the full SHA 0698edcView commit details -
Configuration menu - View commit details
-
Copy full SHA for 4c02b07 - Browse repository at this point
Copy the full SHA 4c02b07View commit details -
Configuration menu - View commit details
-
Copy full SHA for e4d1962 - Browse repository at this point
Copy the full SHA e4d1962View commit details
Commits on Jan 9, 2018
-
Configuration menu - View commit details
-
Copy full SHA for 944e069 - Browse repository at this point
Copy the full SHA 944e069View commit details -
Configuration menu - View commit details
-
Copy full SHA for 69eca0b - Browse repository at this point
Copy the full SHA 69eca0bView commit details
Commits on Jan 10, 2018
-
Update doctests for TupleLLEnd
and use a slightly more thorough search through nested arguments
Configuration menu - View commit details
-
Copy full SHA for 3cf994b - Browse repository at this point
Copy the full SHA 3cf994bView commit details
Commits on Jan 11, 2018
-
Fix and test nested scalar broadcasts
within .-fused expressions that contain custom arrays with custom broadcast styles.
Configuration menu - View commit details
-
Copy full SHA for de9e321 - Browse repository at this point
Copy the full SHA de9e321View commit details
Commits on Jan 13, 2018
-
Merge remote-tracking branch 'origin/master' into teh-jn/lazydotfuse
Only needed to manually resolve a trivial conflict in NEWS.md; everything else git did automagically.
Configuration menu - View commit details
-
Copy full SHA for 61bb21f - Browse repository at this point
Copy the full SHA 61bb21fView commit details
Commits on Jan 19, 2018
-
Merge remote-tracking branch 'origin/master' into teh-jn/lazydotfuse
Conflicts: NEWS.md base/broadcast.jl base/compiler/optimize.jl stdlib/SparseArrays/src/higherorderfns.jl
Configuration menu - View commit details
-
Copy full SHA for 8dcd8c1 - Browse repository at this point
Copy the full SHA 8dcd8c1View commit details -
Configuration menu - View commit details
-
Copy full SHA for a14ed08 - Browse repository at this point
Copy the full SHA a14ed08View commit details
Commits on Jan 20, 2018
-
Allow construction of instantiated Broadcasted{Nothing} objects
This comes up when `flatten`-ing a broadcasted object within a "fallback" `copyto!` method: `flatten` wants to construct a new Broadcast object and copy the instantiated information, but we've already destroyed the `Style` information when we deferred dispatch to the destination! So this simply permits instantiating `Broadcasted{Nothing}` objects in the sole signature that gets called by `flatten`.
Configuration menu - View commit details
-
Copy full SHA for 1774bdf - Browse repository at this point
Copy the full SHA 1774bdfView commit details
Commits on Jan 25, 2018
-
Replace BitArray piecemeal broadcast...
with new infrastructure. Captures many more cases in a very straightforward manner
Configuration menu - View commit details
-
Copy full SHA for 7381ea4 - Browse repository at this point
Copy the full SHA 7381ea4View commit details -
Configuration menu - View commit details
-
Copy full SHA for 25598ea - Browse repository at this point
Copy the full SHA 25598eaView commit details -
Configuration menu - View commit details
-
Copy full SHA for 99507a2 - Browse repository at this point
Copy the full SHA 99507a2View commit details -
Structured broadcasts: Support Bidiagonal broadcasts and perform runt…
…ime test for zero preserving
Configuration menu - View commit details
-
Copy full SHA for 2e371e4 - Browse repository at this point
Copy the full SHA 2e371e4View commit details -
Configuration menu - View commit details
-
Copy full SHA for 3e42812 - Browse repository at this point
Copy the full SHA 3e42812View commit details -
Configuration menu - View commit details
-
Copy full SHA for 0115326 - Browse repository at this point
Copy the full SHA 0115326View commit details -
Configuration menu - View commit details
-
Copy full SHA for 1de78ac - Browse repository at this point
Copy the full SHA 1de78acView commit details
Commits on Jan 26, 2018
-
Configuration menu - View commit details
-
Copy full SHA for 8e41f2f - Browse repository at this point
Copy the full SHA 8e41f2fView commit details
Commits on Jan 27, 2018
-
Configuration menu - View commit details
-
Copy full SHA for adaf337 - Browse repository at this point
Copy the full SHA adaf337View commit details
Commits on Jan 29, 2018
-
Fix Sparse inference; improve allocations
Things are vastly improved; the majority of allocations still appear to be coming from the repeated construction of the same function.
Configuration menu - View commit details
-
Copy full SHA for cf0f8ce - Browse repository at this point
Copy the full SHA cf0f8ceView commit details -
Configuration menu - View commit details
-
Copy full SHA for 4f8233f - Browse repository at this point
Copy the full SHA 4f8233fView commit details -
Configuration menu - View commit details
-
Copy full SHA for 5749afc - Browse repository at this point
Copy the full SHA 5749afcView commit details
Commits on Jan 30, 2018
-
Configuration menu - View commit details
-
Copy full SHA for f90f5fe - Browse repository at this point
Copy the full SHA f90f5feView commit details
Commits on Apr 4, 2018
-
Configuration menu - View commit details
-
Copy full SHA for 28d5421 - Browse repository at this point
Copy the full SHA 28d5421View commit details
Commits on Apr 10, 2018
-
Configuration menu - View commit details
-
Copy full SHA for cfa9caa - Browse repository at this point
Copy the full SHA cfa9caaView commit details -
Configuration menu - View commit details
-
Copy full SHA for 8147932 - Browse repository at this point
Copy the full SHA 8147932View commit details
Commits on Apr 12, 2018
-
Removing broadcasting from the new optimizer
to make it bootstrap friendly
Configuration menu - View commit details
-
Copy full SHA for 90ad8eb - Browse repository at this point
Copy the full SHA 90ad8ebView commit details -
Remove Structured broadcast deferral to DefaultArrayStyle
We effectively do that in any case with broadcast similar, and it remains type-stable
Configuration menu - View commit details
-
Copy full SHA for 03287c1 - Browse repository at this point
Copy the full SHA 03287c1View commit details -
work around SparseArrays inference failure in broadcast!
and remove some unneeded code
Configuration menu - View commit details
-
Copy full SHA for f71db14 - Browse repository at this point
Copy the full SHA f71db14View commit details -
Merge remote-tracking branch 'origin/master' into teh-jn/lazydotfuse
* origin/master: A few more #26670 fixes (#26773) Revert "deprecate using the value of `.=`. fixes #25954" (#26754) change dim arguments for `diff` and `unique` to keyword args (#26776) reorder pmap arguments to allow do-block syntax (#26783) correct deprecated parametric method syntax (#26789) [NewOptimizer] handle new IR nodes correctly in binary format [NewOptimizer] support line number emission from new IR format fix #26453, require obviously-concrete lower bound for a var to be diagonal (#26567) fix #26743, spurious `return` path in try-finally in tail position (#26753) Also lift SelectInst addrspaces
Configuration menu - View commit details
-
Copy full SHA for e3eede4 - Browse repository at this point
Copy the full SHA e3eede4View commit details
Commits on Apr 13, 2018
-
Decouple Broadcasting API from inference
Some of the broadcasting API users still lean on inference -- that can be fixed up later -- but this now no longer hand-feeds them the inferred result of the broadcast. This has the slight downside that a type-unstable broadcast will not fall back to the simpler `copyto!` method as it must incrementally widen instead. I find this a worthwhile tradeoff. Also simplify instantiation now that we no longer need to worry about the eltype.
Configuration menu - View commit details
-
Copy full SHA for 0edbd99 - Browse repository at this point
Copy the full SHA 0edbd99View commit details -
Configuration menu - View commit details
-
Copy full SHA for 71b830f - Browse repository at this point
Copy the full SHA 71b830fView commit details -
Configuration menu - View commit details
-
Copy full SHA for b248953 - Browse repository at this point
Copy the full SHA b248953View commit details
Commits on Apr 18, 2018
-
Remove broadcast_skip_axes_initialization
in favor of just overloading `instantiate(::Broadcasted{CustomStyle})`.
Configuration menu - View commit details
-
Copy full SHA for 964039a - Browse repository at this point
Copy the full SHA 964039aView commit details
Commits on Apr 19, 2018
-
Configuration menu - View commit details
-
Copy full SHA for 37220d5 - Browse repository at this point
Copy the full SHA 37220d5View commit details -
Expose simpler axes/getindex methods for Broadcasted objects
as a nicer internal API. Also accomodate the loss of a broadcast style due to falling back to a `Broadcasted{Nothing}`.
Configuration menu - View commit details
-
Copy full SHA for 79ce497 - Browse repository at this point
Copy the full SHA 79ce497View commit details -
Configuration menu - View commit details
-
Copy full SHA for a6cc656 - Browse repository at this point
Copy the full SHA a6cc656View commit details -
Configuration menu - View commit details
-
Copy full SHA for 98b5e84 - Browse repository at this point
Copy the full SHA 98b5e84View commit details -
Configuration menu - View commit details
-
Copy full SHA for 2e9c0f2 - Browse repository at this point
Copy the full SHA 2e9c0f2View commit details -
Merge remote-tracking branch 'origin/master' into teh-jn/lazydotfuse
* origin/master: (22 commits) separate `isbitstype(::Type)` from `isbits` (#26850) bugfix for regex matches ending with non-ASCII (#26831) [NewOptimizer] track inbounds state as a per-statement flag change default LOAD_PATH and DEPOT_PATH (#26804, fix #25709) Change url scheme to https (#26835) [NewOptimizer] inlining: Refactor todo object inference: enable CodeInfo method_for_inference_limit_heuristics support (#26822) [NewOptimizer] Fix _apply elision (#26821) add test case from issue #26607, cfunction with no args (#26838) add `do` in front-end deparser. fixes #17781 (#26840) Preserve CallInst metadata in LateLowerGCFrame pass. Improve differences from R documentation (#26810) reserve syntax that could be used for computed field types (#18466) (#26816) Add support for Atomic{Bool} (Fix #26542). (#26597) Remove argument restriction on dims2string and inds2string (#26799) (#26817) remove some unnecessary `eltype` methods (#26791) optimize: ensure merge_value_ssa doesn't drop PiNodes inference: improve tmerge for Conditional and Const ensure more iterators stay type-stable code loading docs (#26787) ...
Configuration menu - View commit details
-
Copy full SHA for 3870fdf - Browse repository at this point
Copy the full SHA 3870fdfView commit details -
Configuration menu - View commit details
-
Copy full SHA for c1f2eba - Browse repository at this point
Copy the full SHA c1f2ebaView commit details
Commits on Apr 20, 2018
-
WIP: maybe don't use indexers?
this solves the allocations in perf_op_bcast
Configuration menu - View commit details
-
Copy full SHA for 9afdbbe - Browse repository at this point
Copy the full SHA 9afdbbeView commit details -
Configuration menu - View commit details
-
Copy full SHA for 81bd635 - Browse repository at this point
Copy the full SHA 81bd635View commit details
Commits on Apr 22, 2018
-
Configuration menu - View commit details
-
Copy full SHA for 82d0a3b - Browse repository at this point
Copy the full SHA 82d0a3bView commit details -
Completely move indexing helpers into wrappers
The key insight here is that these indexing helpers are an _implementation detail_ of an optimization for a particular argument type within a given broadcast implementation. They are not universal across all Broadcasted wrappers -- which is precisely why some styles had wanted to opt out of them. Now the _broadcast_getindex function is solely responsible for allowing indexing into arguments with broadcasted dimensions properly constrained as appropriate. The `Extruded` type pre-computes the dimensions to constrain, allowing an optimization for types who do not statically know this answer -- by default just all `AbstractArray`s. This still has a performance regression over master in the reduced example `f(r, x) = r .= x.*x.*x.*x` because it does not currently vectorize on this branch. Not sure why.
Configuration menu - View commit details
-
Copy full SHA for fb8234a - Browse repository at this point
Copy the full SHA fb8234aView commit details -
Don't recursively initialize the Broadcasted objects
We only need to store the outer set of axes; we do not need the axes of any of the nested Broadcasted objects once that is known -- all other accesses defer to individual argument axes.
Configuration menu - View commit details
-
Copy full SHA for aba2da7 - Browse repository at this point
Copy the full SHA aba2da7View commit details -
Configuration menu - View commit details
-
Copy full SHA for 5f99c2e - Browse repository at this point
Copy the full SHA 5f99c2eView commit details -
Hack around losing Type{T} information in the final tuple...
that constructs the arguments to call the function. Julia actually knows the value statically, but it doesn't follow the type information through that transient tuple.
Configuration menu - View commit details
-
Copy full SHA for 52a3202 - Browse repository at this point
Copy the full SHA 52a3202View commit details
Commits on Apr 23, 2018
-
Configuration menu - View commit details
-
Copy full SHA for a8a2608 - Browse repository at this point
Copy the full SHA a8a2608View commit details -
Mitagate some of the performance issues with non-type-stable...
broadcasting by preprocessing the arguments to potentially wrap them with indexing helpers.
Configuration menu - View commit details
-
Copy full SHA for db690e0 - Browse repository at this point
Copy the full SHA db690e0View commit details -
* Slightly clearer recursion through arg lists in not_nested * Move show(::IO, ::Broadcasted) to a more sensible location and have it print its type fully qualified with the `Style` parameter.
Configuration menu - View commit details
-
Copy full SHA for a2b9015 - Browse repository at this point
Copy the full SHA a2b9015View commit details -
Configuration menu - View commit details
-
Copy full SHA for c8bb374 - Browse repository at this point
Copy the full SHA c8bb374View commit details -
Merge remote-tracking branch 'origin/master' into teh-jn/lazydotfuse
* origin/master: (23 commits) fix deprecations of \cdot and \times (#26884) Support reshaping custom 0-dimensional arrays (#26870) fix some cases of dot syntax lowering (#26878) Pkg3: deterministically close the LibGit2 repo in tests (#26883) code loading docs: add missing graph edge (#26874) add news for #26858 and #26859 [ci skip] (#26869) Deprecate using && and || within at-dot expressions (#26792) widen `Int8` and `Int16` to `Int` instead of `Int32` (#26859) fix #26038, make `isequal` consistent with `hash` for `Ptr` (#26858) Deprecate variadic size(A, dim1, dim2, dims...) method (#26862) add using Random to example in manual (#26864) warn once instead of depwarn since we want to test it Revert "reserve syntax that could be used for computed field types (#18466) (#26816)" (#26857) Fix compilation on LLVM 6.0 change promotion behaviour of `cumsum` and `cumsum!` to match `sum` [LLVM 6] add patch to diamond if-conversion add a precompile command that can be used to precompile all dependencies (#254) use registry if no version entry exist in project for developed pacakges make Pkg3 work as a drop in for the old CI scripts update registries when adding (#253) ...
Configuration menu - View commit details
-
Copy full SHA for 110a0a5 - Browse repository at this point
Copy the full SHA 110a0a5View commit details -
Configuration menu - View commit details
-
Copy full SHA for 6fdb86e - Browse repository at this point
Copy the full SHA 6fdb86eView commit details -
Configuration menu - View commit details
-
Copy full SHA for df51b31 - Browse repository at this point
Copy the full SHA df51b31View commit details -
Configuration menu - View commit details
-
Copy full SHA for a1d4e7e - Browse repository at this point
Copy the full SHA a1d4e7eView commit details