Efficient Library of Graph Algorithms and Sparse Matrices

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Efficient Library of Graph Algorithms and Sparse Matrices

Steffen Märcker
Hi,

are you aware of any public available libraries for
a) efficient graph algorithms,
b) matrix operations with sparse matrices?

Best,
Steffen
_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: Efficient Library of Graph Algorithms and Sparse Matrices

cdavidshaffer

On Dec 5, 2014, at 5:29 AM, Steffen Märcker <[hidden email]> wrote:

> Hi,
>
> are you aware of any public available libraries for
> a) efficient graph algorithms,
> b) matrix operations with sparse matrices?

Regarding b:

Maybe someone will point out some useful tools here but, unless you’re working with small matrices, I doubt you’ll be happy with Smalltalk’s performance.  There is Didier Besset’s library (Numerical Methods in the public StORE repo) but it doesn’t include sparse matrix support.  It isn’t difficult to use many of the C numeric libraries.  I have an ExternalInterface that uses a few functions from Numerical Recipes in C.  Normally getting this to work is a no-brainer (albeit more work than simply using someone else’s classes).  For example, I have a class NumericalRecipesExternalInterface (subclass of ExternalInterface) with:

four1: data nn: nn isign: isign
        <C: void four1(double *data, unsigned long nn, int isign)>
        ^self externalAccessFailedWith: _errorCode

The only challenge is making sure that the array you pass in for the data parameter is the appropriate pointer type.  I have a utility class that takes care of this by checking the type and copying the data if needed.  I followed the FloatArray example in NumericCollections (also in the public store repo) to avoid copying in many cases.  The DLLandCConnectGuide.pdf covers this pretty well.  I only wish that the automatic generation of the ExternalInterface functions worked better.  This part can get tedious if you’re calling a lot of C functions.

In your case you could consider ACML or BLASS/LAPACK.  It wouldn’t be much work to get this going if you only need a few functions.

Sorry I couldn’t be more help…

David


_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: Efficient Library of Graph Algorithms and Sparse Matrices

Cesar Rabak
I think the Jun Library has a lot of graph algorithms, maybe worthwhile to take a look.

On Fri, Dec 5, 2014 at 2:14 PM, David Shaffer <[hidden email]> wrote:

On Dec 5, 2014, at 5:29 AM, Steffen Märcker <[hidden email]> wrote:

> Hi,
>
> are you aware of any public available libraries for
> a) efficient graph algorithms,
> b) matrix operations with sparse matrices?

Regarding b:

Maybe someone will point out some useful tools here but, unless you’re working with small matrices, I doubt you’ll be happy with Smalltalk’s performance.  There is Didier Besset’s library (Numerical Methods in the public StORE repo) but it doesn’t include sparse matrix support.  It isn’t difficult to use many of the C numeric libraries.  I have an ExternalInterface that uses a few functions from Numerical Recipes in C.  Normally getting this to work is a no-brainer (albeit more work than simply using someone else’s classes).  For example, I have a class NumericalRecipesExternalInterface (subclass of ExternalInterface) with:

four1: data nn: nn isign: isign
        <C: void four1(double *data, unsigned long nn, int isign)>
        ^self externalAccessFailedWith: _errorCode

The only challenge is making sure that the array you pass in for the data parameter is the appropriate pointer type.  I have a utility class that takes care of this by checking the type and copying the data if needed.  I followed the FloatArray example in NumericCollections (also in the public store repo) to avoid copying in many cases.  The DLLandCConnectGuide.pdf covers this pretty well.  I only wish that the automatic generation of the ExternalInterface functions worked better.  This part can get tedious if you’re calling a lot of C functions.

In your case you could consider ACML or BLASS/LAPACK.  It wouldn’t be much work to get this going if you only need a few functions.

Sorry I couldn’t be more help…

David


_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc


_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc