Skip to content
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

[SparseArrays] similar on sparse matrix returned uninitialized space #40444

Merged
merged 1 commit into from
Apr 19, 2021

Conversation

vtjnash
Copy link
Member

@vtjnash vtjnash commented Apr 12, 2021

Rebase of #30435, closes #26560, while #30676 is stalled (of which this was a non-contentious subset). See discussion in those issues for context.

@ViralBShah ViralBShah added the sparse Sparse arrays label Apr 13, 2021
@vtjnash vtjnash merged commit 28a3312 into master Apr 19, 2021
@vtjnash vtjnash deleted the KlausC-krc/similarsparse branch April 19, 2021 09:27
@vtjnash
Copy link
Member Author

vtjnash commented Apr 22, 2021

This seems to have caused problems with BaseBenchmarks. In particular, the lines:
https://github.com/JuliaCI/BaseBenchmarks.jl/blob/38d9f9caab147de72fc623aca0f70fc6fb38b30c/src/sparse/SparseBenchmarks.jl#L148-L149
are now failing with:

      From worker 2:    ERROR: LoadError: ArgumentError: the length of destination argument `X`'s `rowval` array, `length(rowvals(X)) (= 0)`, must be greater than or equal to
 source argument `A`'s allocated entry count, `nnz(A) (= 195)`                                                                                                                
      From worker 2:    Stacktrace:                                                                                                                                           
      From worker 2:      [1] ftranspose!(X::SparseArrays.SparseMatrixCSC{Float64, Int64}, A::SparseArrays.SparseMatrixCSC{Float64, Int64}, f::Function)                      
      From worker 2:        @ SparseArrays /run/media/system/data/nanosoldier/workdir/jl_GpYekI/usr/share/julia/stdlib/v1.7/SparseArrays/src/sparsematrix.jl:1041             
      From worker 2:      [2] transpose!(X::SparseArrays.SparseMatrixCSC{Float64, Int64}, A::SparseArrays.SparseMatrixCSC{Float64, Int64})                                    
      From worker 2:        @ SparseArrays /run/media/system/data/nanosoldier/workdir/jl_GpYekI/usr/share/julia/stdlib/v1.7/SparseArrays/src/sparsematrix.jl:1051             
      From worker 2:      [3] allocmats_ds(om::Int64, ok::Int64, on::Int64, s::Float64, nnzc::Int64, T::Type)                                                                 
      From worker 2:        @ BaseBenchmarks.SparseBenchmarks /home/ubuntu/.julia/dev/BaseBenchmarks/src/sparse/SparseBenchmarks.jl:149                                       
      From worker 2:      [4] top-level scope                                                                                                                                 
      From worker 2:        @ /home/ubuntu/.julia/dev/BaseBenchmarks/src/sparse/SparseBenchmarks.jl:189                                                                       
      From worker 2:      [5] include(mod::Module, _path::String)                                                                                                             
      From worker 2:        @ Base ./Base.jl:388                                                                                                                              
      From worker 2:      [6] include(x::String)                                                                                                                              
      From worker 2:        @ BaseBenchmarks /home/ubuntu/.julia/dev/BaseBenchmarks/src/BaseBenchmarks.jl:1                                                                   
      From worker 2:      [7] top-level scope                                                                                                                                 
      From worker 2:        @ none:1                                                                                                                                          
      From worker 2:      [8] eval                                                                                                                                            
      From worker 2:        @ ./boot.jl:369 [inlined]                                                                                                                         
      From worker 2:      [9] load!(group::BenchmarkGroup, id::String; tune::Bool)                                                                                            
      From worker 2:        @ BaseBenchmarks /home/ubuntu/.julia/dev/BaseBenchmarks/src/BaseBenchmarks.jl:38                                                                  
      From worker 2:     [10] macro expansion                                                                                                                                 
      From worker 2:        @ ./timing.jl:287 [inlined]                                                                                                                       
      From worker 2:     [11] loadall!(group::BenchmarkGroup; verbose::Bool, tune::Bool)                                                                                      
      From worker 2:        @ BaseBenchmarks /home/ubuntu/.julia/dev/BaseBenchmarks/src/BaseBenchmarks.jl:54                                                                  
      From worker 2:     [12] loadall!     
      From worker 2:        @ /home/ubuntu/.julia/dev/BaseBenchmarks/src/BaseBenchmarks.jl:51 [inlined]                                                                       
      From worker 2:     [13] #loadall!#3                                              
      From worker 2:        @ /home/ubuntu/.julia/dev/BaseBenchmarks/src/BaseBenchmarks.jl:48 [inlined]                                                                       
      From worker 2:     [14] loadall!()   
      From worker 2:        @ BaseBenchmarks /home/ubuntu/.julia/dev/BaseBenchmarks/src/BaseBenchmarks.jl:48                                                                  
      From worker 2:     [15] top-level scope                                          
      From worker 2:        @ /run/media/system/data/nanosoldier/workdir/jl_CZM7oH/benchscript.jl:21                                                                          
      From worker 2:    in expression starting at /home/ubuntu/.julia/dev/BaseBenchmarks/src/sparse/SparseBenchmarks.jl:1                                                     
      From worker 2:    in expression starting at /run/media/system/data/nanosoldier/workdir/jl_CZM7oH/benchscript.jl:19                                                      

I think there's a missing resize!, which may be relevant also for #30676 / #40523 or means we need to get part of the fix from there.

ElOceanografo pushed a commit to ElOceanografo/julia that referenced this pull request May 4, 2021
antoine-levitt pushed a commit to antoine-levitt/julia that referenced this pull request May 9, 2021
johanmon pushed a commit to johanmon/julia that referenced this pull request Jul 5, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
sparse Sparse arrays
Projects
None yet
Development

Successfully merging this pull request may close these issues.

similar(::SparseMatrixCSC) waste of memory
3 participants