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?
>