[SciPy-Dev] Python bindings for KLU

Robert Cimrman cimrman3 at ntc.zcu.cz
Sun Mar 18 07:01:54 EDT 2012


Hi,

On 03/18/2012 11:12 AM, Nathaniel Smith wrote:
> On Sun, Mar 18, 2012 at 1:08 AM, Richard Lincoln<r.w.lincoln at gmail.com>  wrote:
>> On 17 March 2012 20:36, Nathaniel Smith<njs at pobox.com>  wrote:
>>> On Mar 17, 2012 5:21 PM, "Richard Lincoln"<r.w.lincoln at gmail.com>  wrote:
>>>>
>>>> Hello SciPy-Dev,
>>>
>>> Hi Richard,
>>>
>>>> I am working on a distribution system simulator in Python.  I would
>>>> like to use KLU to solve sparse sets of complex linear equations.
>>>>
>>>> http://www.cise.ufl.edu/research/sparse/klu/
>>>>
>>>> What would you recommend I use to create Python bindings for this C
>>>> library?  I don't have any experience with this and there seem to be
>>>> several options available.  If you could point me towards any good
>>>> examples of similar bindings, that too would be very greatly
>>>> appreciated.
>>>
>>> I'd suggest using Cython for bindings, and taking a look at scikits.sparse:
>>>   https://code.google.com/p/scikits-sparse/
>>>
>>> It has quite complete Cython bindings for CHOLMOD:
>>>   http://packages.python.org/scikits.sparse/cholmod.html
>>>   https://code.google.com/p/scikits-sparse/source/browse/scikits/sparse/cholmod.pyx
>>>
>>> Not only does this give an example of using Cython to work with sparse
>>> matrices and Tim Davis' code, there's a fair amount of infrastructure
>>> that can probably be re-used -- I believe that KLU relies on CHOLMOD's
>>> data structures for basic sparse matrix tasks. If you'd like to
>>> contribute your work to scikits.sparse, then we can factor this out
>>> into shared code.
>>
>> Thank you for the advice Nathaniel.  Unfortunately, my project has a
>> BSD license and scikits-sparse uses the GNU GPL.  However, I found
>> scikits-umfpack by Robert Cimrman.
>>
>> http://scikits.appspot.com/umfpack
>>
>> It uses SWIG and shouldn't take much effort to adapt.
>
> I'm happy to release my wrapper code under the BSD; I just haven't
> bothered since CHOLMOD itself is GPLed. I can't see where Robert put a
> license on that UMFPACK wrapper, but it's in exactly the same
> situation -- UMFPACK is also GPLed.

Yes, it's the same situation. I have BSDed the wrappers as they were 
originally a part of scipy (this is now deprecated). It would be great 
if you relicensed your wrappers under the BSD, see below.

> I do also see that I was confused, and KLU doesn't depend on CHOLMOD
> (I was thinking of SuiteSparseQR). I do think you might still prefer
> to look at the CHOLMOD wrapper, both because people seem to prefer
> Cython to SWIG and because KLU and CHOLMOD seem to use very similar
> APIs, but of course it's up to you.
>
> I do think it would be nice if we could find a way to make your
> wrapper more generally available, and the idea of scikits.sparse is to
> try and gather up such code so people can find it. So if you have any
> thoughts on how we could make that work, I can be flexible :-).

I have written the umfpack wrappers a long time ago (no cython then) - 
now I would have used definitely cython - I use it now in my projects 
too. Ideally, I would prefer to have all Tim Davis code wrappers in one 
place (scikits.sparse), BSD licensed, and in cython. Then the wrappers 
could be easily bundled with other BSD-licensed codes.

It should not be difficult to adapt the umfpack wrapper code, but I 
cannot do it in the next couple of weeks (several article deadlines). 
Later I would be happy to devote some care... Just my two 0.01CZK.

Cheers,
r.



More information about the SciPy-Dev mailing list