Tony,

Here are a few Julia routines sparse matrix routines that I looked for and 
didn't find.  Maybe I looked in the wrong place.

- Getting the P'*L factor from SuiteSparse's sparse Cholesky back into 
Julia.  In other words, if F is the cholmod representation of the Cholesky 
factor, then sparse(F[:L]) works to retrieve the L factor, but 
sparse(F[:PtL]) does not work to retrieve P'*L (so I wrote my own wrapper).

- A general routine for computing a null vector.  So I wrote my own, based 
on the squeezed SuiteSparse QR factorization.  (See the next item.)

- A routine to extract the squeezed R factor from the SuiteSparse QR 
factorization.  I wrote a wrapper for this.

All of this functionality is built into Matlab.

-- Steve



On Friday, August 5, 2016 at 5:54:24 PM UTC-4, Tony Kelman wrote:
>
> > Furthermore, the exposed APIs give the Julia programmer significantly 
> fewer capabilities than the sparse matrix suite of Matlab.
>
> Like what? There is a SuiteSparse.jl package under the JuliaSparse 
> organization that currently has a handful of routines (Julia ports) but 
> will be the home as more of the bindings gradually get migrated there, and 
> out of base Julia. The long-term plan is to be less reliant on SuiteSparse 
> as the only option, and instead to come up with a more general interface 
> that multiple different solver packages could plug into. Outside of base 
> Julia, a SuiteSparse.jl package would be more flexible to wrap as much of 
> the SuiteSparse API as its contributors and maintainers choose.
>
>
> On Friday, August 5, 2016 at 2:17:09 PM UTC-7, [email protected] wrote:
>>
>> 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