Jaroslav Hajek wrote:
> hi all,
>
> I contributed a toy implementation of block sparse matrices to the
> linear-algebra package (also attached).
> This is probably not meant for serious business, as all the code is
> m-files only, but is rather a demonstration of what can now be done in
> Octave.
>
> Basic operations (+, -, *, ', .') are supported. No division, of course.
>
> Curiously enough, despite the m-file implementation, already for a
> 1000x1000 matrix with 10x10 blocks and 4 blocks per row
> (corresponds to a FE matrix of 1000-element conforming triangular grid
> with 3-rd order discontinuous polynomial elements),
> this toy implementation can outperform the built-in sparse matrices:
>
> nb = 10; n = 1000; nrhs = 1;
> [i, j] = find (sprand (n, n, 3/n) + speye (n));
> a = rand (nb, nb, length (i));
> s = blksparse (i, j, a, n, n);
>
> v = rand (nb*n, nrhs);
>
> tic;
> for it = 1:100/nrhs
>   s * v;
> endfor
> toc
>
> s = sparse (s);
> tic;
> for it = 1:100/nrhs
>   s * v;
> endfor
> toc
>
> On my computer (Core 2 Duo, g++ -O3 -march=native), I get:
>
> octave:1> ttbs
> Elapsed time is 0.180152 seconds.
> Elapsed time is 0.344266 seconds.
>
> with nrhs=10 (thus reducing interpreter overhead and improving cache
> locality for blksparse), it gets even better:
>
> octave:3> ttbs
> Elapsed time is 0.0802341 seconds.
> Elapsed time is 0.34509 seconds.
>
> Of course, as division is unsupported, the usefulness of this
> implementation is quite limited, but still it can be used e.g. for
> iterative solvers.
>
> Comments? Suggestions?
> Note that this code requires Octave tip as it relies on certain recent
> additions (blkmm, accumdim).
>
>   
Well, I'd wondered about revisiting the * sparse operator in Octave to 
see if the CXSPARSE code that matlab now uses is faster. We already have 
a dependency on CXSPARSE and so doing this might be a benefit without 
the cost of a new dependency.

D.


------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Octave-dev mailing list
Octave-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/octave-dev

Reply via email to