46#include "euclid_common.h"
51#define MATVEC_MPI_TIME 1
52#define MATVEC_MPI_TIME2 5
53#define MATVEC_TOTAL_TIME 2
89 double time[MAT_DH_BINS];
90 double time_max[MAT_DH_BINS];
91 double time_min[MAT_DH_BINS];
97 MPI_Request *recv_req;
98 MPI_Request *send_req;
99 double *recvbuf, *sendbuf;
110 extern void Mat_dhCreate (Mat_dh * mat);
111 extern void Mat_dhDestroy (Mat_dh mat);
113 extern void Mat_dhTranspose (Mat_dh matIN, Mat_dh * matOUT);
114 extern void Mat_dhMakeStructurallySymmetric (Mat_dh A);
117 extern void Mat_dhMatVecSetup (Mat_dh mat);
118 extern void Mat_dhMatVecSetdown (Mat_dh mat);
126 extern void Mat_dhMatVec (Mat_dh mat,
double *lhs,
double *rhs);
129 extern void Mat_dhMatVec_omp (Mat_dh mat,
double *lhs,
double *rhs);
132 extern void Mat_dhMatVec_uni (Mat_dh mat,
double *lhs,
double *rhs);
135 extern void Mat_dhMatVec_uni_omp (Mat_dh mat,
double *lhs,
double *rhs);
139 extern int Mat_dhReadNz (Mat_dh mat);
150 extern void Mat_dhPrintGraph (Mat_dh mat, SubdomainGraph_dh sg, FILE * fp);
151 extern void Mat_dhPrintRows (Mat_dh mat, SubdomainGraph_dh sg, FILE * fp);
153 extern void Mat_dhPrintCSR (Mat_dh mat, SubdomainGraph_dh sg,
155 extern void Mat_dhPrintTriples (Mat_dh mat, SubdomainGraph_dh sg,
157 extern void Mat_dhPrintBIN (Mat_dh mat, SubdomainGraph_dh sg,
160 extern void Mat_dhReadCSR (Mat_dh * mat,
char *filename);
161 extern void Mat_dhReadTriples (Mat_dh * mat,
int ignore,
char *filename);
162 extern void Mat_dhReadBIN (Mat_dh * mat,
char *filename);
165 extern void Mat_dhPermute (Mat_dh Ain,
int *pIN, Mat_dh * Bout);
168 extern void Mat_dhFixDiags (Mat_dh A);
174 extern void Mat_dhPrintDiags (Mat_dh A, FILE * fp);
176 extern void Mat_dhGetRow (Mat_dh B,
int globalRow,
int *len,
int **ind,
178 extern void Mat_dhRestoreRow (Mat_dh B,
int row,
int *len,
int **ind,
182 extern void Mat_dhPartition (Mat_dh mat,
int k,
int **beg_rowOUT,
183 int **row_countOUT,
int **n2oOUT,
189 extern void Mat_dhZeroTiming (Mat_dh mat);
190 extern void Mat_dhReduceTiming (Mat_dh mat);
193 extern void Mat_dhRowPermute (Mat_dh);
195 extern void dldperm (
int job,
int n,
int nnz,
int colptr[],
int adjncy[],
196 double nzval[],
int *perm,
double u[],
double v[]);