[SciPy-Dev] Python bindings for KLU

Nathaniel Smith njs@pobox....
Sun Mar 18 05:12:51 CDT 2012


On Sun, Mar 18, 2012 at 1:08 AM, Richard Lincoln <r.w.lincoln@gmail.com> wrote:
> On 17 March 2012 20:36, Nathaniel Smith <njs@pobox.com> wrote:
>> On Mar 17, 2012 5:21 PM, "Richard Lincoln" <r.w.lincoln@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.

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 :-).

- N


More information about the SciPy-Dev mailing list