MIDAPACK - MIcrowave Data Analysis PACKage  1.1b
Parallel software tools for high performance CMB DA analysis
 All Data Structures Files Functions Variables Typedefs Groups Pages
mapmatc.h
Go to the documentation of this file.
1 
9 #define NONE 0
10 #define RING 1
11 #define BUTTERFLY 2
12 #define NONBLOCKING 3
13 #define NOEMPTY 4
14 #define SEQ 0
15 #define OMP 1
16 #define GPU 2
17 
18 
19 
23 typedef struct {
24  int flag; // flag for communication scheme (NONE, RING, BUTTERFLY ...)
25  int r; // number of local coarse space
26  int *m; // table containing number of rows in each caorse space
27  int *nnz; // number non-zero per row in each corse space
28  int *disp; // displacement
29  int **indices; // column rows indices tab;
30  double **values; // non-zero values tab;
31  //--------local shaping---------------
32  int lcount;
33  int *lindices; // local indices tab (monotony with global numbering); size = lcount
34 #ifdef W_MPI
35  MPI_Comm comm; // MPI communicator
36  //--------com shaping-----------------
37  int *com_indices, com_count;// communicated indices tab, and size
38  int steps; // number of steps in the communication scheme
39  int *nS, *nR; // number of indices (to send and to receive); size = steps
40  int **R, **S; // sending or receiving indices tab
41 #endif
42 }CMat;
43 
44 
45 int CMatInit(CMat *A, int r, int *m, int *nnz, int **indices, double **values, int flag
46 #ifdef W_MPI
47  ,MPI_Comm comm
48 #endif
49 );
50 
51 int CMatFree(CMat *A);
52 
53 #ifdef W_MPI
54 int CMatComShape(CMat *A, int flag);
55 #endif
56 
57 int CMatVecProd(CMat *A, double *x, double *y, int pflag);
58 
59 int CTrMatVecProd(CMat *A, double *y, double* x, int pflag);
60 
61