Skip to content

Conversation

@DanielVandH
Copy link
Collaborator

@DanielVandH DanielVandH commented Nov 12, 2025

WIP for what we were discussing @dlfivefifty. WIP because I need to fix this new StackOverflow

using SemiclassicalOrthogonalPolynomials
P = SemiclassicalJacobi(2, 0.1, 0.2, 0.3)
B = diff(P).args[2]
n = 100
julia> B'.data[:, 1:1]
Warning: detected a stack overflow; program state may be corrupted, so further execution might be unreliable.
ERROR: StackOverflowError:
Stacktrace:
  [1] layout_broadcasted
    @ c:\Users\djv23\.julia\dev\LazyArrays.jl\src\lazybroadcasting.jl:9 [inlined]
  [2] layout_broadcasted
    @ c:\Users\djv23\.julia\dev\LazyArrays.jl\src\lazybroadcasting.jl:10 [inlined]
  [3] broadcasted
    @ c:\Users\djv23\.julia\dev\LazyArrays.jl\src\lazybroadcasting.jl:13 [inlined]
  [4] broadcasted
    @ .\broadcast.jl:1353 [inlined]
  [5] resize_bcargs!
    @ c:\Users\djv23\.julia\dev\LazyArrays.jl\src\cache.jl:399 [inlined]
  [6] copyto!(dest::SubArray{…}, bc::Base.Broadcast.Broadcasted{…})
    @ LazyArrays c:\Users\djv23\.julia\dev\LazyArrays.jl\src\cache.jl:421
  [7] copyto!(dest::SubArray{…}, bc::Base.Broadcast.Broadcasted{…}) (repeats 47525 times)
    @ LazyArrays c:\Users\djv23\.julia\dev\LazyArrays.jl\src\cache.jl:422
  [8] copyto!(dest::SubArray{…}, bc::Base.Broadcast.Broadcasted{…})
    @ LazyArrays c:\Users\djv23\.julia\dev\LazyArrays.jl\src\cache.jl:422
  [9] materialize!
    @ .\broadcast.jl:905 [inlined]
 [10] materialize!
    @ .\broadcast.jl:902 [inlined]
 [11] copyto!_layout(::ColumnMajor, ::BroadcastLayout{…}, dest::SubArray{…}, bc::SubArray{…})
    @ LazyArrays c:\Users\djv23\.julia\dev\LazyArrays.jl\src\lazybroadcasting.jl:43
 [12] copyto!_layout
    @ C:\Users\djv23\.julia\packages\ArrayLayouts\FxFFC\src\memorylayout.jl:310 [inlined]
 [13] copyto!_layout
    @ C:\Users\djv23\.julia\packages\ArrayLayouts\FxFFC\src\ArrayLayouts.jl:272 [inlined]
 [14] copyto!
    @ C:\Users\djv23\.julia\packages\ArrayLayouts\FxFFC\src\ArrayLayouts.jl:288 [inlined]
 [15] sub_materialize(lay::LazyArrays.ApplyLayout{…}, V::SubArray{…}, ::Tuple{…})
    @ LazyArrays c:\Users\djv23\.julia\dev\LazyArrays.jl\src\lazyconcat.jl:887
 [16] sub_materialize
    @ C:\Users\djv23\.julia\packages\ArrayLayouts\FxFFC\src\ArrayLayouts.jl:136 [inlined]
 [17] sub_materialize
    @ C:\Users\djv23\.julia\packages\ArrayLayouts\FxFFC\src\ArrayLayouts.jl:137 [inlined]
 [18] layout_getindex
    @ C:\Users\djv23\.julia\packages\ArrayLayouts\FxFFC\src\ArrayLayouts.jl:143 [inlined]
 [19] getindex(A::ApplyArray{Float64, 2, typeof(vcat), Tuple{Adjoint{…}, Adjoint{…}}}, kr::Colon, jr::UnitRange{Int64})
    @ ArrayLayouts C:\Users\djv23\.julia\packages\ArrayLayouts\FxFFC\src\ArrayLayouts.jl:156
 [20] eval(m::Module, e::Any)
    @ Core .\boot.jl:489
Some type information was truncated. Use `show(err)` to see complete types.

Also doesn't really change any of the timing issues we found - they're still on the same scale. Gotta do more digging. Creating the PR now just incase I can see what other downstream stuff might be breaking.

@codecov
Copy link

codecov bot commented Nov 12, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 95.89%. Comparing base (d7d4f63) to head (5d529bc).
⚠️ Report is 1 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #387      +/-   ##
==========================================
+ Coverage   95.88%   95.89%   +0.01%     
==========================================
  Files          17       17              
  Lines        3351     3360       +9     
==========================================
+ Hits         3213     3222       +9     
  Misses        138      138              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@DanielVandH DanielVandH reopened this Nov 13, 2025
@DanielVandH DanielVandH marked this pull request as ready for review November 17, 2025 13:37
dlfivefifty pushed a commit to JuliaLinearAlgebra/ArrayLayouts.jl that referenced this pull request Nov 18, 2025
Before:

```julia-repl
julia> using LazyArrays; v = ((1:10_000) .* LazyArrays.AccumulateAbstractVector(*, 1:10_000'))'; @time v[1:1, 1:10_000];
  0.031649 seconds (476.63 k allocations: 12.861 MiB)
```

After:

```julia-repl
julia> using LazyArrays; v = ((1:10_000) .* LazyArrays.AccumulateAbstractVector(*, 1:10_000'))'; @time v[1:1, 1:10_000];
  0.000031 seconds (65 allocations: 2.156 KiB)
```

(Improved timings also require
JuliaArrays/LazyArrays.jl#387)
@DanielVandH
Copy link
Collaborator Author

Found a better fix for the StackOverflow issue. It seems it was just a missing method for DualLayouts in the copyto! machinery from #383

@dlfivefifty dlfivefifty merged commit df11892 into master Nov 19, 2025
17 checks passed
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.

3 participants