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
mapmat.h
Go to the documentation of this file.
1 
13 #define NONE 0
14 #define RING 1
15 #define BUTTERFLY 2
16 #define NONBLOCKING 3
17 #define NOEMPTY 4
18 #define ALLTOALLV 5
19 #define ALLREDUCE 6
20 #define SEQ 0
21 #define OMP 1
22 #define GPU 2
23 
24 
25 
29 typedef struct {
30  int flag; // flag for communication scheme (NONE, RING, BUTTERFLY ...)
31  int m; // number local rows
32  int nnz; // number non-zero per rows
33  int *indices; // column indices tab; size = m * nnz; can be a global or local numbering
34  double *values; // non-zero values tab; size = m * nnz
35  //--------local shaping---------------
36  int lcount;
37  int *lindices; // local indices tab (monotony with global numbering); size = lcount
38 #ifdef W_MPI
39  MPI_Comm comm; // MPI communicator
40  //--------com shaping-----------------
41  int *com_indices, com_count;// communicated indices tab, and size
42  int steps; // number of steps in the communication scheme
43  int *nS, *nR; // number of indices (to send and to receive); size = steps
44  int **R, **S; // sending or receiving indices tab
45 #endif
46 }Mat;
47 
48 
49 int MatInit(Mat *A, int m, int nnz, int *indices, double *values, int flag
50 #ifdef W_MPI
51 , MPI_Comm comm
52 #endif
53 );
54 
55 void MatSetIndices(Mat *A, int m, int nnz, int *indices);
56 
57 void MatSetValues(Mat *A, int m, int nnz, double *values);
58 
59 void MatFree(Mat *A);
60 
61 int MatLocalShape(Mat *A, int sflag);
62 
63 #if W_MPI
64 int MatComShape(Mat *A, int flag, MPI_Comm comm);
65 #endif
66 
67 int MatVecProd(Mat *A, double *x, double *y, int pflag);
68 
69 int TrMatVecProd(Mat *A, double *y, double* x, int pflag);
70 
71 
72 #if W_MPI
73 int TrMatVecProd_Naive(Mat *A, double *y, double* x, int pflag);
74 #endif
75 
76 int MatLoad(Mat *A, char *filename);
77 
78 int MatSave(Mat *A, char* filename);
79 
80 #if W_MPI
81 int MatInfo(Mat *A, int master, char* filename);
82 #endif
83 
84 int greedyreduce(Mat *A, double* x);
85 
86 
87 // Doxygen definitions
88