Simon Burton <simon at arrowtheory.com> writes:

> Hi,
>
> Along the lines of python's numarray [1], we need some way of
> operating pointwise (and inner/outer operations) on Mat/Vec objects. 
>
> In particular, we need things like the following:
> (a) v=add.reduce(m)   (sum along rows/cols of a Mat to produce a Vec)

  This seems to be handled.

> (b) m=add.outer(v1,v2)        (sum of all elements of two Vecs to produce a 
> Mat)

  This should be in MatDense() interface specifically since it produces a dense 
matrix. In fact,
I thought it was always preferrable not to form the matrix explicitly. I would 
have to see how
it is used.

> (c) m=add(m1,m2)              (pointwise sum)

  We have MatAXPY()

> (d) m=exp(m)          (pointwise exp)

  We could add pointwise operations just like the VecPointwise*().

     Matt

> Right now we can do (a) and (b) using dgemm and single column/row matrices 
> with just 1s,
> and we can do (c) using SetValues. But for (d): it looks like we will be 
> writing a c-loop ?
>
> And I don't think the PETSc interface to dgemm (MatMatMult*) is general 
> enough to do (b)
> (we need one of the products to be added to the other product, so beta=1).
>
> It would be easy enough to use numarray to "shadow" the PETSc arrays (using 
> *GetArray)
> and then make numarray do the work, but this seems doomed to failure because
> numarray is inherently dense.
>
> Simon.
>
>
> [1]: http://stsdas.stsci.edu/numarray/numarray-1.3.html/node35.html
>
> -- 
> Simon Burton, B.Sc.
> Licensed PO Box 8066
> ANU Canberra 2601
> Australia
> Ph. 61 02 6249 6940
> http://arrowtheory.com 
>
>
>

-- 
"Failure has a thousand explanations. Success doesn't need one" -- Sir Alec 
Guiness


Reply via email to