And going down teh columns in a sparse matrix could do this to you.

On Sun, Jun 26, 2011 at 6:40 PM, Jake Mannix <jake.man...@gmail.com> wrote:

> On Sun, Jun 26, 2011 at 1:47 PM, Vincent Xue <xue....@gmail.com> wrote:
>
> > Hi.
> >
> > I was wondering how useful an in memory sparse matrix multiplier would
> > be for mahout. In my current project I needed to multiply many large
> > sparse matrices but submitting hundreds of jobs to the cluster creates
> > too much overhead.
> >
> > I wrote up an implementation of sparse matrix multiplication using
> > threads which can multiply a 30,000 x 48,0000 matrix by its transpose
> > in about 5 minutes using 16 cores. Granted this matrix is composed
> > mostly of 1s, and -1s, (with about 16 elements per row), is this
> > considered fast? I have seen that my implementation is much faster
> > than iterating though a matrix naively and would like some input to
> > whether or not my 5 minute benchmark is by skewed.
> >
>
> about 16 elements per row (and column, I'm guessing?), means if you
> did this using the algorithm I usually use for matrix multiplication
> (matrix summing the outer products of the columns), then you're
> looking at the matrix sum of 48k matrices, each of which only has
> 16^2 = 256 entries.  So it should take only O(256 * 48k) = 12 million
> multiplications and 12 million additions.  This seems like it should
> be doable in well under a second using this algorithm.
>
> On the other hand, if you're doing 30k * 30k = 900M dot products,
> most of which are zero, but require 16 operations each to discover
> this, you'll need closer to 15 billion operations.  This would be lot
> slower.
>
>  -jake
>
>
> >
> > Many thanks for the input,
> > Vincent
> >
>

Reply via email to