You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm running into a subtle type-instability with blocksizes, which breaks the type-inference of a function I am trying to define further down the line.
using BlockArrays
x =BlockedArray(rand(4, 4), [2, 2], [2, 2])
@inferredblocksizes(x, 1)
ERROR:return type Vector{Int64} does not match inferred return type Union{FillArrays.Fill{Int64, 1, Tuple{Base.OneTo{Int64}}}, Vector{Int64}}
I did some digging, and it seems that the culprit is that Base.axes(::AbstractArray, n) will output a OneTo whenever n is larger than the number of dimensions. It seems like the compiler isn't able to const-propagate the n to figure this out. I was wondering if there is a way to avoid this instability, maybe by defining a fallback for axes(::AbstractBlockArray, d::Int) to output a BlockedOneTo instead?
I can definitely open a PR to make changes and tests, I just wanted to ask for some comments and feedback first.
The text was updated successfully, but these errors were encountered:
This should be fixed by #429, but this would work only within a function, and not at the top-level. This is because the dimension needs to be constant-propagated, and such optimizations won't happen at the top level.
I'm running into a subtle type-instability with
blocksizes
, which breaks the type-inference of a function I am trying to define further down the line.I did some digging, and it seems that the culprit is that
Base.axes(::AbstractArray, n)
will output aOneTo
whenevern
is larger than the number of dimensions. It seems like the compiler isn't able to const-propagate then
to figure this out. I was wondering if there is a way to avoid this instability, maybe by defining a fallback foraxes(::AbstractBlockArray, d::Int)
to output aBlockedOneTo
instead?I can definitely open a PR to make changes and tests, I just wanted to ask for some comments and feedback first.
The text was updated successfully, but these errors were encountered: