Many thanks, Steve! Unsorted row indices were the issue. I mistakenly 
assumed that calling sparse() sorted the indices for me.

On Monday, August 22, 2016 at 11:24:19 PM UTC-4, [email protected] wrote:
>
> I've been using the cholmod routines recently also in 0.4.6 (Windows 64) 
> and have never seen this error.  The routine cholmod_check_sparse seems to 
> be in source code file cholmod_check.c of the SuiteSparse source code, and 
> it doesn't seem to do much except check that the row indices are in 
> increasing order for each column and that all indices are in range.  Is it 
> possible that your matrix has been corrupted and has row indices out of 
> order or out of range?
>
>
>
> On Monday, August 22, 2016 at 9:43:59 PM UTC-4, Dominique Orban wrote:
>>
>> I'm trying to solve a least-squares problem using sparse QR, but:
>>
>> julia> size(A)
>> (3140,1988)
>>
>> julia> nnz(A)
>> 8510
>>
>> julia> size(b)
>> (3140,)
>>
>> julia> typeof(A)
>> SparseMatrixCSC{Float64,Int64}
>>
>> julia> A \ b
>> ERROR: Base.SparseMatrix.CHOLMOD.CHOLMODException("")
>>  in convert at sparse/cholmod.jl:867
>>  in factorize at sparse/linalg.jl:854
>>  in \ at linalg/generic.jl:326
>>
>>
>> The matrix A is rank deficient, but I don't think that's the source of 
>> the problem. I get the same exception if I regularize the problem.
>>
>> This is with Julia 0.4.6. The relevant portion of sparse/cholmod.jl is:
>>
>>  
>> 856 function convert{Tv<:VTypes}(::Type{Sparse}, A::SparseMatrixCSC{Tv,
>> SuiteSparse_long}, stype::Integer)
>>  857     o = allocate_sparse(A.m, A.n, length(A.nzval), true, true, stype
>> , Tv)
>>  858     s = unsafe_load(o.p)
>>  859     for i = 1:length(A.colptr)
>>  860         unsafe_store!(s.p, A.colptr[i] - 1, i)
>>  861     end
>>  862     for i = 1:length(A.rowval)
>>  863         unsafe_store!(s.i, A.rowval[i] - 1, i)
>>  864     end
>>  865     unsafe_copy!(s.x, pointer(A.nzval), length(A.nzval))
>>  866
>>  867     @isok check_sparse(o)
>>  868
>>  869     return o
>>  870 end
>>
>>
>> How can I find out more about what's gone wrong?
>>
>

Reply via email to