
The Atlas library (Linux_P4SSE2) seems to be 9x faster (!) than gslcblas in matrix multiplication: ghc-6.4.1 --make examples/pca.hs GSL/debuggslaux.o \ -L$(LIBATLAS) -lcblas /usr/lib/libgsl.a -latlas $ time ./a.out GSL Wrapper gsl_matrix_fscanf: 2 s GSL Wrapper submatrix: 0 s GSL Wrapper constant: 0 s GSL Wrapper constant: 0 s GSL Wrapper multiplyR (gsl_blas_dgemm): 1 s GSL Wrapper vector_scale: 0 s GSL Wrapper multiplyR (gsl_blas_dgemm): 0 s GSL Wrapper vector_scale: 0 s GSL Wrapper gsl_vector_add: 0 s GSL Wrapper trans: 0 s GSL Wrapper multiplyR (gsl_blas_dgemm): 4 s <---(the atlas version) GSL Wrapper vector_scale: 0 s GSL Wrapper trans: 0 s GSL Wrapper vector_scale: 0 s GSL Wrapper gsl_vector_add: 0 s GSL Wrapper toScalar: 0 s GSL Wrapper eigensystem: 11 s [337829.6562539419,253504.78675022084,209790.38118221355, etc.... real 0m17.630s user 0m17.255s sys 0m0.179s So gsl+atlas+haskell is not that bad... Also, the 5000x785 matrix can now be loaded just in 2 seconds, using a wrapper for gsl_matrix_fscanf. We could also try to include some lapack or atlas-lapack routines. Precompiled atlas for different processors can be downloaded from https://sourceforge.net/project/showfiles.php?group_id=23725 However, I have not yet been able to link them in interactive mode. The latest version of the library (extremely provisional, I am currently working actively in it) can be obtained from: darcs get http://dis.um.es/~alberto/GSLHaskell Of course, any contribution or suggestion will be greatly appreciated, including code samples that "should work" with this kind of library, to be used as examples or tests. Best regards, Alberto On Friday 17 March 2006 13:30, Alberto Ruiz wrote:
On Thursday 16 March 2006 18:13, Frederik Eaton wrote:
Also, in my experiments (with matrix inversion) it seems, subjectively, that Octave is about 5 or so times faster for operations on large matrices. Presumably you've tested this as well, do you have any comparison results?
Frederik, you are right, in my machine Octave is at least 3x faster than gsl (v1.5). Too much, specially in a simple matrix multiplication, and I don't know why. See below the times measured in the C side for the PCA example.
I will look into this...
Alberto