Sparse matrix computation is a key aspect of scientific computing.  The 
creators of Julia made the smart decision to rely on SuiteSparse, 
high-quality free C++ software that carries out most of the common sparse 
matrix factorizations and related operations very efficiently.

The issue that concerns me is that the wrappers in Julia, namely, 
cholmod.jl, spqr.jl and umfpack.jl, expose only a small fraction of 
SuiteSparse's capabilities.  Furthermore, the exposed APIs give the Julia 
programmer significantly fewer capabilities than the sparse matrix suite of 
Matlab.

And the reason for this limitation has become clear to me over the past few 
days as I tried to develop a routine to find a right null vector of a 
sparse matrix using SuiteSparse: it is difficult and tedious to write Julia 
wrappers for the routines in SuiteSparse.  Even figuring out whether a 
particular variable is an Int32 or Int64 requires poring over SuiteSparse's 
nested header files full of conditional platform-dependent compilation 
directives.  And my resulting wrapper works only on one platform for one 
version of Julia and one version of SuiteSparse.  It is clear that whoever 
wrote cholmod.jl, spqr.jl and umfpack.jl put a lot of time and painstaking 
effort into getting these interfaces correct.

And this raises a question: will Julia ever fully incorporate SuiteSparse? 
 Will its sparse matrix capabilities ever approach Matlab's?  Who will take 
the time to write, test and maintain cross-platform Julia wrappers for 
SuiteSparse?  This is a tedious job that carries little glory - I certainly 
would not want to do it!  And yet sparse matrix computation is so important.

Reply via email to