[petsc-users] Reshaping a vector into a matrix

S V N Vishwanathan vishy at stat.purdue.edu
Thu Jan 6 11:48:37 CST 2011


On Thu, 2011-01-06 at 08:40 -0800, Jed Brown wrote:
> On Wed, Jan 5, 2011 at 22:02, S V N Vishwanathan
> <vishy at stat.purdue.edu> wrote:
>         I mean a two dimensional array. Basically my parameter vector
>         is of the
>         form
>         
>         vec = (vec1^t, vec2^t, vec3^t,...veck^t)^t
>         
>         which I represent as a Petsc Vector. In my objective function
>         calculation I am given a matrix X and need to compute
>         
>         fx = (X.vec1, X.vec2, ..., X.veck)^t
> 
> 1. How big is "k"?

My k is typically of the order of 10 to a 100 (max).

> 2. Since each vec1,vec2,... is the same size, this is likely to
> produce poor memory performance.  If you care about speed, I suggest
> interlacing the values in vec1,...,veck.  In that case, you can create
> an MAIJ matrix that acts on this "multi-vector".

I do not want to repeat X since it is a large sparse matrix (typically 1
million x 50 thousand) with around 4 -5% non-zero entries. However this
varies a lot from problem to problem. In some cases a dense matrix is
the most appropriate representation for X (in this case the dimensions
are typically 50thousand x 200). 

I am trying to use the block matrices and vectors provided by PetscExt
to see if they can solve my problem.

vishy




More information about the petsc-users mailing list