SparseArrays.jl icon indicating copy to clipboard operation
SparseArrays.jl copied to clipboard

strange method definition overwritten WARNING in tests

Open vtjnash opened this issue 2 years ago • 3 comments

WARNING: Method definition getindex(SparseArrays.AbstractSparseMatrixCSC{Tv, Ti} where Ti<:Integer where Tv, Tuple{Integer, Integer}) in module SparseArrays at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsematrix.jl:2664 overwritten.
WARNING: Method definition getindex(SparseArrays.AbstractSparseMatrixCSC{T, Ti} where Ti<:Integer, Integer, Integer) where {T} in module SparseArrays at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsematrix.jl:2666 overwritten.
WARNING: Method definition setindex!(SparseArrays.AbstractSparseMatrixCSC{Tv, Ti} where Ti<:Integer where Tv, Any, Integer, Integer) in module SparseArrays at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsematrix.jl:3112 overwritten.
WARNING: Method definition setindex!(SparseArrays.AbstractCompressedVector{Tv, Ti}, Tv, Ti) where {Tv, Ti<:Integer} in module SparseArrays at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsevector.jl:393 overwritten.
WARNING: Method definition setindex!(SparseArrays.AbstractCompressedVector{Tv, Ti}, Any, Integer) where {Tv, Ti<:Integer} in module SparseArrays at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsevector.jl:411 overwritten.
WARNING: Method definition getindex(SparseArrays.AbstractSparseArray{Tv, Ti, 1} where Ti where Tv, Integer) in module SparseArrays at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsevector.jl:945 overwritten.
WARNING: Method definition getindex(SparseArrays.AbstractSparseMatrixCSC{Tv, Ti} where Ti<:Integer where Tv, Tuple{Integer, Integer}) in module SparseArrays overwritten at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsematrix.jl:2664.
WARNING: Method definition getindex(SparseArrays.AbstractSparseMatrixCSC{T, Ti} where Ti<:Integer, Integer, Integer) where {T} in module SparseArrays overwritten at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsematrix.jl:2666.
WARNING: Method definition setindex!(SparseArrays.AbstractSparseMatrixCSC{Tv, Ti} where Ti<:Integer where Tv, Any, Integer, Integer) in module SparseArrays overwritten at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsematrix.jl:3112.
WARNING: Method definition setindex!(SparseArrays.AbstractCompressedVector{Tv, Ti}, Tv, Ti) where {Tv, Ti<:Integer} in module SparseArrays overwritten at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsevector.jl:393.
WARNING: Method definition setindex!(SparseArrays.AbstractCompressedVector{Tv, Ti}, Any, Integer) where {Tv, Ti<:Integer} in module SparseArrays overwritten at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsevector.jl:411.
WARNING: Method definition getindex(SparseArrays.AbstractSparseArray{Tv, Ti, 1} where Ti where Tv, Integer) in module SparseArrays overwritten at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsevector.jl:945.
WARNING: Method definition getindex(SparseArrays.AbstractSparseMatrixCSC{Tv, Ti} where Ti<:Integer where Tv, Tuple{Integer, Integer}) in module SparseArrays at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsematrix.jl:2664 overwritten.
WARNING: Method definition getindex(SparseArrays.AbstractSparseMatrixCSC{T, Ti} where Ti<:Integer, Integer, Integer) where {T} in module SparseArrays at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsematrix.jl:2666 overwritten.
WARNING: Method definition setindex!(SparseArrays.AbstractSparseMatrixCSC{Tv, Ti} where Ti<:Integer where Tv, Any, Integer, Integer) in module SparseArrays at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsematrix.jl:3112 overwritten.
WARNING: Method definition setindex!(SparseArrays.AbstractCompressedVector{Tv, Ti}, Tv, Ti) where {Tv, Ti<:Integer} in module SparseArrays at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsevector.jl:393 overwritten.
WARNING: Method definition setindex!(SparseArrays.AbstractCompressedVector{Tv, Ti}, Any, Integer) where {Tv, Ti<:Integer} in module SparseArrays at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsevector.jl:411 overwritten.
WARNING: Method definition getindex(SparseArrays.AbstractSparseArray{Tv, Ti, 1} where Ti where Tv, Integer) in module SparseArrays at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsevector.jl:945 overwritten.
WARNING: Method definition getindex(SparseArrays.AbstractSparseMatrixCSC{Tv, Ti} where Ti<:Integer where Tv, Tuple{Integer, Integer}) in module SparseArrays overwritten at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsematrix.jl:2664.
WARNING: Method definition getindex(SparseArrays.AbstractSparseMatrixCSC{T, Ti} where Ti<:Integer, Integer, Integer) where {T} in module SparseArrays overwritten at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsematrix.jl:2666.
WARNING: Method definition setindex!(SparseArrays.AbstractSparseMatrixCSC{Tv, Ti} where Ti<:Integer where Tv, Any, Integer, Integer) in module SparseArrays overwritten at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsematrix.jl:3112.
WARNING: Method definition setindex!(SparseArrays.AbstractCompressedVector{Tv, Ti}, Tv, Ti) where {Tv, Ti<:Integer} in module SparseArrays overwritten at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsevector.jl:393.
WARNING: Method definition setindex!(SparseArrays.AbstractCompressedVector{Tv, Ti}, Any, Integer) where {Tv, Ti<:Integer} in module SparseArrays overwritten at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsevector.jl:411.
WARNING: Method definition getindex(SparseArrays.AbstractSparseArray{Tv, Ti, 1} where Ti where Tv, Integer) in module SparseArrays overwritten at /home/runner/work/SparseArrays.jl/SparseArrays.jl/src/sparsevector.jl:945.

vtjnash avatar Jul 12 '23 15:07 vtjnash

My guess is that this has something to do with the (in my opinion) non ideal implementation of disabling getindex.

KristofferC avatar Jul 12 '23 16:07 KristofferC

It does. I wonder if you know of a better way? IIRC it was based on how CUDA does it

rayegun avatar Jul 12 '23 18:07 rayegun

I think there are two other ways to do it, add a global Ref{Bool} can_index state that is checked by those functions, or store it as part of the matrix/type of the matrix.

From a performance perspective, the current implementation is the safest and most compatible; small benchmarks do not convince me that the global state does not hurt performance. And at the end of the day, this is just for debugging, not something anyone should use in production.

SobhanMP avatar Jul 12 '23 19:07 SobhanMP