xref: /petsc/src/mat/impls/dense/mpi/mmdense.c (revision 0500aece852c5d5e89681225b84bddfc7009e089)
1*0500aeceSBarry Smith #ifndef lint
2*0500aeceSBarry Smith static char vcid[] = "$Id: mmaij.c,v 1.20 1995/09/30 19:28:49 bsmith Exp $";
3*0500aeceSBarry Smith #endif
4*0500aeceSBarry Smith 
5*0500aeceSBarry Smith 
6*0500aeceSBarry Smith /*
7*0500aeceSBarry Smith    Support for the parallel dense matrix vector multiply
8*0500aeceSBarry Smith */
9*0500aeceSBarry Smith #include "mpidense.h"
10*0500aeceSBarry Smith #include "vec/vecimpl.h"
11*0500aeceSBarry Smith 
12*0500aeceSBarry Smith int MatSetUpMultiply_MPIDense(Mat mat)
13*0500aeceSBarry Smith {
14*0500aeceSBarry Smith   Mat_MPIDense *mdn = (Mat_MPIDense *) mat->data;
15*0500aeceSBarry Smith   int          ierr;
16*0500aeceSBarry Smith   IS           tofrom;
17*0500aeceSBarry Smith   Vec          gvec;
18*0500aeceSBarry Smith 
19*0500aeceSBarry Smith   /* Create local vector that is used to scatter into */
20*0500aeceSBarry Smith   ierr = VecCreateSeq(MPI_COMM_SELF,mdn->N,&mdn->lvec); CHKERRQ(ierr);
21*0500aeceSBarry Smith 
22*0500aeceSBarry Smith   /* Create temporary index set for building scatter gather */
23*0500aeceSBarry Smith   ierr = ISCreateStrideSeq(MPI_COMM_SELF,mdn->N,0,1,&tofrom); CHKERRQ(ierr);
24*0500aeceSBarry Smith 
25*0500aeceSBarry Smith   /* Create temporary global vector to generate scatter context */
26*0500aeceSBarry Smith   ierr = VecCreateMPI(mat->comm,mdn->n,mdn->N,&gvec); CHKERRQ(ierr);
27*0500aeceSBarry Smith 
28*0500aeceSBarry Smith   /* Generate the scatter context */
29*0500aeceSBarry Smith   ierr = VecScatterCreate(gvec,tofrom,mdn->lvec,tofrom,&mdn->Mvctx); CHKERRQ(ierr);
30*0500aeceSBarry Smith   PLogObjectParent(mat,mdn->Mvctx);
31*0500aeceSBarry Smith   PLogObjectParent(mat,mdn->lvec);
32*0500aeceSBarry Smith   PLogObjectParent(mat,tofrom);
33*0500aeceSBarry Smith   ierr = ISDestroy(tofrom); CHKERRQ(ierr);
34*0500aeceSBarry Smith   ierr = VecDestroy(gvec);
35*0500aeceSBarry Smith   return 0;
36*0500aeceSBarry Smith }
37*0500aeceSBarry Smith 
38*0500aeceSBarry Smith 
39*0500aeceSBarry Smith 
40