1 #ifndef PARGEMSLR_MATRIXOPS_H
2 #define PARGEMSLR_MATRIXOPS_H
14 #include "../vectors/vector.hpp"
15 #include "../utils/mmio.hpp"
33 PrecisionEnum GetMatrixPrecision(
const MatrixClass<int> &mat);
41 PrecisionEnum GetMatrixPrecision(
const MatrixClass<long int> &mat);
49 PrecisionEnum GetMatrixPrecision(
const MatrixClass<float> &mat);
57 PrecisionEnum GetMatrixPrecision(
const MatrixClass<double> &mat);
65 PrecisionEnum GetMatrixPrecision(
const MatrixClass<complexs> &mat);
73 PrecisionEnum GetMatrixPrecision(
const MatrixClass<complexd> &mat);
81 PrecisionEnum GetMatrixPPrecision(
const MatrixClass<int> *mat);
89 PrecisionEnum GetMatrixPPrecision(
const MatrixClass<long int> *mat);
97 PrecisionEnum GetMatrixPPrecision(
const MatrixClass<float> *mat);
105 PrecisionEnum GetMatrixPPrecision(
const MatrixClass<double> *mat);
113 PrecisionEnum GetMatrixPPrecision(
const MatrixClass<complexs> *mat);
121 PrecisionEnum GetMatrixPPrecision(
const MatrixClass<complexd> *mat);
137 template <
typename T>
138 int DenseMatrixPMatVecTemplate(
char trans,
int nrows,
int ncols,
const T &alpha,
const T *aa,
int ldim,
const T *x,
const T &beta, T *y);
151 int DenseMatrixMatVec(
const DenseMatrixClass<float> &A,
char trans,
const float &alpha,
const VectorClass<float> &x,
const float &beta, VectorClass<float> &y);
164 int DenseMatrixMatVec(
const DenseMatrixClass<double> &A,
char trans,
const double &alpha,
const VectorClass<double> &x,
const double &beta, VectorClass<double> &y);
177 int DenseMatrixMatVec(
const DenseMatrixClass<complexs> &A,
char trans,
const complexs &alpha,
const VectorClass<complexs> &x,
const complexs &beta, VectorClass<complexs> &y);
190 int DenseMatrixMatVec(
const DenseMatrixClass<complexd> &A,
char trans,
const complexd &alpha,
const VectorClass<complexd> &x,
const complexd &beta, VectorClass<complexd> &y);
192 #ifdef PARGEMSLR_CUDA
206 int DenseMatrixSMatVecDevice(
const DenseMatrixClass<float> &A,
char trans,
const float &alpha,
const VectorClass<float> &x,
const float &beta, VectorClass<float> &y);
220 int DenseMatrixDMatVecDevice(
const DenseMatrixClass<double> &A,
char trans,
const double &alpha,
const VectorClass<double> &x,
const double &beta, VectorClass<double> &y);
234 int DenseMatrixCMatVecDevice(
const DenseMatrixClass<complexs> &A,
char trans,
const complexs &alpha,
const VectorClass<complexs> &x,
const complexs &beta, VectorClass<complexs> &y);
248 int DenseMatrixZMatVecDevice(
const DenseMatrixClass<complexd> &A,
char trans,
const complexd &alpha,
const VectorClass<complexd> &x,
const complexd &beta, VectorClass<complexd> &y);
258 int DenseMatrixInvertHost( DenseMatrixClass<float> &A);
266 int DenseMatrixInvertHost( DenseMatrixClass<double> &A);
274 int DenseMatrixInvertHost( DenseMatrixClass<complexs> &A);
282 int DenseMatrixInvertHost( DenseMatrixClass<complexd> &A);
290 int DenseMatrixInvertUpperTriangularHost( DenseMatrixClass<float> &A);
298 int DenseMatrixInvertUpperTriangularHost( DenseMatrixClass<double> &A);
306 int DenseMatrixInvertUpperTriangularHost( DenseMatrixClass<complexs> &A);
314 int DenseMatrixInvertUpperTriangularHost( DenseMatrixClass<complexd> &A);
323 int DenseMatrixQRDecompositionHost( DenseMatrixClass<float> &A, DenseMatrixClass<float> &Q);
332 int DenseMatrixQRDecompositionHost( DenseMatrixClass<double> &A, DenseMatrixClass<double> &Q);
341 int DenseMatrixQRDecompositionHost( DenseMatrixClass<complexs> &A, DenseMatrixClass<complexs> &Q);
350 int DenseMatrixQRDecompositionHost( DenseMatrixClass<complexd> &A, DenseMatrixClass<complexd> &Q);
359 int DenseMatrixHessDecompositionHost( DenseMatrixClass<float> &A, DenseMatrixClass<float> &Q);
370 int DenseMatrixHessDecompositionHost( DenseMatrixClass<float> &A,
int start,
int end, DenseMatrixClass<float> &Q);
379 int DenseMatrixHessDecompositionHost( DenseMatrixClass<double> &A, DenseMatrixClass<double> &Q);
390 int DenseMatrixHessDecompositionHost( DenseMatrixClass<double> &A,
int start,
int end, DenseMatrixClass<double> &Q);
399 int DenseMatrixHessDecompositionHost( DenseMatrixClass<complexs> &A, DenseMatrixClass<complexs> &Q);
410 int DenseMatrixHessDecompositionHost( DenseMatrixClass<complexs> &A,
int start,
int end, DenseMatrixClass<complexs> &Q);
419 int DenseMatrixHessDecompositionHost( DenseMatrixClass<complexd> &A, DenseMatrixClass<complexd> &Q);
430 int DenseMatrixHessDecompositionHost( DenseMatrixClass<complexd> &A,
int start,
int end, DenseMatrixClass<complexd> &Q);
441 int DenseMatrixRealHessSchurDecompositionHost( DenseMatrixClass<float> &A, DenseMatrixClass<float> &Q, vector_seq_float &wr, vector_seq_float &wi);
454 int DenseMatrixRealHessSchurDecompositionHost( DenseMatrixClass<float> &A,
int start,
int end, DenseMatrixClass<float> &Q, vector_seq_float &wr, vector_seq_float &wi);
465 int DenseMatrixRealHessSchurDecompositionHost( DenseMatrixClass<double> &A, DenseMatrixClass<double> &Q, vector_seq_double &wr, vector_seq_double &wi);
478 int DenseMatrixRealHessSchurDecompositionHost( DenseMatrixClass<double> &A,
int start,
int end, DenseMatrixClass<double> &Q, vector_seq_double &wr, vector_seq_double &wi);
488 int DenseMatrixComplexHessSchurDecompositionHost( DenseMatrixClass<complexs> &A, DenseMatrixClass<complexs> &Q, vector_seq_complexs &w);
500 int DenseMatrixComplexHessSchurDecompositionHost( DenseMatrixClass<complexs> &A,
int start,
int end, DenseMatrixClass<complexs> &Q, vector_seq_complexs &w);
510 int DenseMatrixComplexHessSchurDecompositionHost( DenseMatrixClass<complexd> &A, DenseMatrixClass<complexd> &Q, vector_seq_complexd &w);
522 int DenseMatrixComplexHessSchurDecompositionHost( DenseMatrixClass<complexd> &A,
int start,
int end, DenseMatrixClass<complexd> &Q, vector_seq_complexd &w);
534 int DenseMatrixRealOrderSchur( DenseMatrixClass<float> &A, DenseMatrixClass<float> &Q, vector_seq_float &wr, vector_seq_float &wi, vector_int &select);
546 int DenseMatrixRealOrderSchur( DenseMatrixClass<double> &A, DenseMatrixClass<double> &Q, vector_seq_double &wr, vector_seq_double &wi, vector_int &select);
558 int DenseMatrixComplexOrderSchur( DenseMatrixClass<complexs> &A, DenseMatrixClass<complexs> &Q, vector_seq_complexs &w, vector_int &select);
569 int DenseMatrixComplexOrderSchur( DenseMatrixClass<complexd> &A, DenseMatrixClass<complexd> &Q, vector_seq_complexd &w, vector_int &select);
583 int DenseMatrixRealOrderSchurClusters( DenseMatrixClass<float> &A, DenseMatrixClass<float> &Q, vector_seq_float &wr, vector_seq_float &wi, vector_int &clusters);
597 int DenseMatrixRealOrderSchurClusters( DenseMatrixClass<double> &A, DenseMatrixClass<double> &Q, vector_seq_double &wr, vector_seq_double &wi, vector_int &clusters);
609 int DenseMatrixComplexOrderSchurClusters( DenseMatrixClass<complexs> &A, DenseMatrixClass<complexs> &Q, vector_seq_complexs &w, vector_int &clusters);
620 int DenseMatrixComplexOrderSchurClusters( DenseMatrixClass<complexd> &A, DenseMatrixClass<complexd> &Q, vector_seq_complexd &w, vector_int &clusters);
631 int DenseMatrixRealHessEigenDecompositionHost( DenseMatrixClass<float> &A, DenseMatrixClass<float> &Q, vector_seq_float &wr, vector_seq_float &wi);
642 int DenseMatrixRealHessEigenDecompositionHost( DenseMatrixClass<double> &A, DenseMatrixClass<double> &Q, vector_seq_double &wr, vector_seq_double &wi);
652 int DenseMatrixComplexHessEigenDecompositionHost( DenseMatrixClass<complexs> &A, DenseMatrixClass<complexs> &Q, vector_seq_complexs &w);
662 int DenseMatrixComplexHessEigenDecompositionHost( DenseMatrixClass<complexd> &A, DenseMatrixClass<complexd> &Q, vector_seq_complexd &w);
677 template <
typename T>
678 int DenseMatrixMatMatTemplate(
const T &alpha,
const DenseMatrixClass<T> &A,
char transa,
const DenseMatrixClass<T> &B,
char transb,
const T &beta, DenseMatrixClass<T> &C);
693 int DenseMatrixMatMat(
const float &alpha,
const DenseMatrixClass<float> &A,
char transa,
const DenseMatrixClass<float> &B,
char transb,
const float &beta, DenseMatrixClass<float> &C);
708 int DenseMatrixMatMat(
const double &alpha,
const DenseMatrixClass<double> &A,
char transa,
const DenseMatrixClass<double> &B,
char transb,
const double &beta, DenseMatrixClass<double> &C);
723 int DenseMatrixMatMat(
const complexs &alpha,
const DenseMatrixClass<complexs> &A,
char transa,
const DenseMatrixClass<complexs> &B,
char transb,
const complexs &beta, DenseMatrixClass<complexs> &C);
738 int DenseMatrixMatMat(
const complexd &alpha,
const DenseMatrixClass<complexd> &A,
char transa,
const DenseMatrixClass<complexd> &B,
char transb,
const complexd &beta, DenseMatrixClass<complexd> &C);
740 #ifdef PARGEMSLR_CUDA
754 int DenseMatrixSMatMatDevice(
int m,
int n,
int k,
const float &alpha,
const DenseMatrixClass<float> &A,
char transa,
const DenseMatrixClass<float> &B,
char transb,
const float &beta, DenseMatrixClass<float> &C);
768 int DenseMatrixDMatMatDevice(
int m,
int n,
int k,
const double &alpha,
const DenseMatrixClass<double> &A,
char transa,
const DenseMatrixClass<double> &B,
char transb,
const double &beta, DenseMatrixClass<double> &C);
782 int DenseMatrixCMatMatDevice(
int m,
int n,
int k,
const complexs &alpha,
const DenseMatrixClass<complexs> &A,
char transa,
const DenseMatrixClass<complexs> &B,
char transb,
const complexs &beta, DenseMatrixClass<complexs> &C);
796 int DenseMatrixZMatMatDevice(
int m,
int n,
int k,
const complexd &alpha,
const DenseMatrixClass<complexd> &A,
char transa,
const DenseMatrixClass<complexd> &B,
char transb,
const complexd &beta, DenseMatrixClass<complexd> &C);
816 int CsrMatrixPMatVecHostTemplate(
const int *ia,
const int *ja,
const T *aa,
int nrows,
int ncols,
char trans,
const T &alpha,
const T *x,
const T &beta, T *y);
833 int CsrMatrixPMatVecHost(
const int *ia,
const int *ja,
const float *aa,
int nrows,
int ncols,
char trans,
const float &alpha,
const float *x,
const float &beta,
float *y);
850 int CsrMatrixPMatVecHost(
const int *ia,
const int *ja,
const double *aa,
int nrows,
int ncols,
char trans,
const double &alpha,
const double *x,
const double &beta,
double *y);
867 int CsrMatrixPMatVecHost(
const int *ia,
const int *ja,
const complexs *aa,
int nrows,
int ncols,
char trans,
const complexs &alpha,
const complexs *x,
const complexs &beta, complexs *y);
884 int CsrMatrixPMatVecHost(
const int *ia,
const int *ja,
const complexd *aa,
int nrows,
int ncols,
char trans,
const complexd &alpha,
const complexd *x,
const complexd &beta, complexd *y);
897 int CsrMatrixMatVec(
const CsrMatrixClass<float> &A,
char trans,
const float &alpha,
const VectorClass<float> &x,
const float &beta, VectorClass<float> &y);
910 int CsrMatrixMatVec(
const CsrMatrixClass<double> &A,
char trans,
const double &alpha,
const VectorClass<double> &x,
const double &beta, VectorClass<double> &y);
923 int CsrMatrixMatVec(
const CsrMatrixClass<complexs> &A,
char trans,
const complexs &alpha,
const VectorClass<complexs> &x,
const complexs &beta, VectorClass<complexs> &y);
936 int CsrMatrixMatVec(
const CsrMatrixClass<complexd> &A,
char trans,
const complexd &alpha,
const VectorClass<complexd> &x,
const complexd &beta, VectorClass<complexd> &y);
938 #ifdef PARGEMSLR_CUDA
951 int CsrMatrixSMatVecDevice(
const CsrMatrixClass<float> &A,
char trans,
const float &alpha,
const VectorClass<float> &x,
const float &beta, VectorClass<float> &y);
964 int CsrMatrixDMatVecDevice(
const CsrMatrixClass<double> &A,
char trans,
const double &alpha,
const VectorClass<double> &x,
const double &beta, VectorClass<double> &y);
977 int CsrMatrixCMatVecDevice(
const CsrMatrixClass<complexs> &A,
char trans,
const complexs &alpha,
const VectorClass<complexs> &x,
const complexs &beta, VectorClass<complexs> &y);
990 int CsrMatrixZMatVecDevice(
const CsrMatrixClass<complexd> &A,
char trans,
const complexd &alpha,
const VectorClass<complexd> &x,
const complexd &beta, VectorClass<complexd> &y);
998 int CsrMatrixCreateCusparseSpMat( CsrMatrixClass<float> &A);
1006 int CsrMatrixCreateCusparseSpMat( CsrMatrixClass<double> &A);
1014 int CsrMatrixCreateCusparseSpMat( CsrMatrixClass<complexs> &A);
1022 int CsrMatrixCreateCusparseSpMat( CsrMatrixClass<complexd> &A);
1043 template <
int INIDX,
int OUTIDX,
typename T>
1044 int CsrMatrixP2CscMatrixPHost(
int nrows,
int ncols,
bool copy_data, T* ai,
int *ji,
int *ii, T *ao,
int *jo,
int *io);
1062 template <
int INIDX,
int OUTIDX,
typename T>
1063 int CooMatrixP2CsrMatrixPHost(
int nrows,
int ncols,
int nnz, T* ai,
int *ji,
int *ii, T *ao,
int *jo,
int *io);
1072 template <
typename T>
1073 int CsrMatrixTransposeHost( CsrMatrixClass<T> &A, CsrMatrixClass<T> &AT);
1083 template <
typename T>
1084 int CsrMatrixAddHost( CsrMatrixClass<T> &A, CsrMatrixClass<T> &B, CsrMatrixClass<T> &C);
1093 template <
typename T>
1094 int ParallelCsrMatrixTransposeHost( ParallelCsrMatrixClass<T> &A, ParallelCsrMatrixClass<T> &AT);
1104 template <
typename T>
1105 int ParallelCsrMatrixAddHost( ParallelCsrMatrixClass<T> &A, ParallelCsrMatrixClass<T> &B, ParallelCsrMatrixClass<T> &C);
1121 template <
typename T>
1122 int CsrMatrixMetisKwayHost( CsrMatrixClass<T> &A,
int &num_dom, IntVectorClass<int> &map,
bool vertexsep, IntVectorClass<int> &sep,
int &edgecut, IntVectorClass<int> &perm, IntVectorClass<int> &dom_ptr);
1134 template <
typename T>
1135 int CsrMatrixMaxMatchingHost( CsrMatrixClass<T> &A,
int &nmatch, IntVectorClass<int> &match_row, IntVectorClass<int> &match_col);
1150 bool CsrMatrixMaxMatchingBfsHost(
int nrows,
int ncols,
int *A_i,
int *A_j, IntVectorClass<int> &dist, IntVectorClass<int> &match_row, IntVectorClass<int> &match_col);
1166 bool CsrMatrixMaxMatchingDfsHost(
int nrows,
int ncols,
int *A_i,
int *A_j, IntVectorClass<int> &dist, IntVectorClass<int> &match_row, IntVectorClass<int> &match_col,
int i);
1174 template <
typename T>
1175 int CsrMatrixSortRow( CsrMatrixClass<T> &A);
1177 #ifdef PARGEMSLR_CUDA
1184 int CsrMatrixSortRowDevice( matrix_csr_float &A);
1192 int CsrMatrixSortRowDevice( matrix_csr_double &A);
1200 int CsrMatrixSortRowDevice( matrix_csr_complexs &A);
1208 int CsrMatrixSortRowDevice( matrix_csr_complexd &A);
1220 template <
typename T>
1221 int CsrSubMatrixAmdHost(CsrMatrixClass<T> &A, vector_int &rowscols, vector_int &perm);
1231 template <
typename T>
1232 int CsrMatrixAmdHost(CsrMatrixClass<T> &A, vector_int &perm);
1243 template <
typename T>
1244 int CsrSubMatrixNdHost(CsrMatrixClass<T> &A, vector_int &rowscols, vector_int &perm);
1254 template <
typename T>
1255 int CsrMatrixNdHost(CsrMatrixClass<T> &A, vector_int &perm);
1266 template <
typename T>
1267 int CsrSubMatrixRcmHost(CsrMatrixClass<T> &A, vector_int &rowscols, vector_int &perm);
1279 template <
typename T>
1280 int CsrMatrixRcmHost(CsrMatrixClass<T> &A, vector_int &perm);
1292 template <
typename T>
1293 int CsrMatrixRcmRootHost(CsrMatrixClass<T> &G, vector_int &marker,
int &root);
1307 template <
typename T>
1308 int CsrMatrixRcmNumberingHost(CsrMatrixClass<T> &G,
int root, vector_int &marker, vector_int &perm,
int ¤t_num);
1322 template <
typename T>
1323 int CsrMatrixRcmPerphnHost(CsrMatrixClass<T> &G,
int &root, vector_int &marker);
1335 template <
typename T>
1336 int CsrMatrixRcmBfsHost(CsrMatrixClass<T> &G,
int root, vector_int &marker, std::vector<std::vector<int> > &level);
1345 int CsrMatrixRcmClearLevelHost(std::vector<std::vector<int> > &level);
1355 int CsrMatrixRcmSwapHost(vector_int &perm,
int a,
int b);
1366 int CsrMatrixRcmReverseHost(vector_int &perm,
int start,
int end);
1380 int ParmetisKwayHost(vector_long &vtxdist, vector_long &xadj, vector_long &adjncy,
long int &num_dom, vector_long &map, parallel_log &parlog);
1394 int ParmetisNodeND(vector_long &vtxdist, vector_long &xadj, vector_long &adjncy,
long int &num_dom, vector_long &map, parallel_log &parlog);
1408 template <
class VectorType,
class MatrixType,
typename DataType,
typename RealDataType>
1409 int PargemslrSubSpaceIteration( MatrixType &A,
int k,
int its, DenseMatrixClass<DataType> &V, DenseMatrixClass<DataType> &H, RealDataType tol);
1425 template <
class VectorType,
class MatrixType,
typename DataType,
typename RealDataType>
1426 int PargemslrArnoldiNoRestart( MatrixType &A,
int mstart,
int msteps, DenseMatrixClass<DataType> &V, DenseMatrixClass<DataType> &H, RealDataType tol_orth, RealDataType tol_reorth);
1447 template <
class VectorType,
class MatrixType,
typename DataType,
typename RealDataType>
1448 int PargemslrArnoldiThickRestartNoLock( MatrixType &A,
int msteps,
int maxits,
int rank,
int rank2, RealDataType truncate, RealDataType tr_fact, RealDataType tol_eig, RealDataType eig_target_mag, RealDataType eig_truncate, RealDataType (*weight)(ComplexValueClass<RealDataType>), DenseMatrixClass<DataType> &V, DenseMatrixClass<DataType> &H, RealDataType tol_orth, RealDataType tol_reorth);
1467 template <
typename T>
1468 int PargemslrArnoldiThickRestartChooseEigenValuesReal( DenseMatrixClass<T> &H, DenseMatrixClass<T> &Q, T h_last, T (*weight)(ComplexValueClass<T>), T truncate,
int &ncov,
int &nicov,
int &nsatis, T tol_eig, T eig_target_mag, T eig_truncate,
bool &cut, SequentialVectorClass<T> &wr, SequentialVectorClass<T> &wi, vector_int &icov, vector_int &iicov, vector_int &isatis, SequentialVectorClass<T> &dcov, SequentialVectorClass<T> &dicov, SequentialVectorClass<T> &dsatis);
1486 template <
typename DataType,
typename RealDataType>
1487 int PargemslrArnoldiThickRestartChooseEigenValuesComplex( DenseMatrixClass<DataType> &H, DenseMatrixClass<DataType> &Q, DataType h_last, RealDataType (*weight)(DataType), RealDataType truncate,
int &ncov,
int &nicov,
int &nsatis, RealDataType tol_eig, RealDataType eig_target_mag, RealDataType eig_truncate,
bool &cut, SequentialVectorClass<DataType> &w, vector_int &icov, vector_int &iicov, vector_int &isatis, SequentialVectorClass<RealDataType> &dcov, SequentialVectorClass<RealDataType> &dicov, SequentialVectorClass<RealDataType> &dsatis);
1500 template <
class VectorType,
typename DataType,
typename RealDataType>
1501 int PargemslrArnoldiThickRestartBuildThickRestartNewVector( DenseMatrixClass<DataType> &V, DenseMatrixClass<DataType> &H,
int m, RealDataType tol_orth, RealDataType tol_reorth, VectorType &v);
1514 template <
class VectorType,
typename DataType,
typename RealDataType>
1515 int PargemslrCgs2( VectorType &w, DenseMatrixClass<DataType> &V, DenseMatrixClass<DataType> &H, RealDataType &t,
int k, RealDataType tol_orth);
1529 template <
class VectorType,
typename DataType,
typename RealDataType>
1530 int PargemslrMgs( VectorType &w, DenseMatrixClass<DataType> &V, DenseMatrixClass<DataType> &H, RealDataType &t,
int k, RealDataType tol_orth, RealDataType tol_reorth);
1543 template <
class VectorType,
typename DataType,
typename RealDataType>
1544 int PargemslrOrthogonal( VectorType &w, DenseMatrixClass<DataType> &V, RealDataType &t,
int k, RealDataType tol_orth, RealDataType tol_reorth);
1555 template <
typename T>
1556 int DenseMatrixPlotHost( DenseMatrixClass<T> &A,
int conditiona,
int conditionb,
int width);
1568 template <
typename T>
1569 int CsrMatrixPlotHost( CsrMatrixClass<T> &A,
int *perm,
int conditiona,
int conditionb,
int width);
1580 int CooMatrixReadFromFile(CooMatrixClass<float> &coo,
const char *matfile,
int idxin,
int idxout);
1591 int CooMatrixReadFromFile(CooMatrixClass<double> &coo,
const char *matfile,
int idxin,
int idxout);
1602 int CooMatrixReadFromFile(CooMatrixClass<complexs> &coo,
const char *matfile,
int idxin,
int idxout);
1613 int CooMatrixReadFromFile(CooMatrixClass<complexd> &coo,
const char *matfile,
int idxin,
int idxout);
1630 template <
typename T>
1631 int SetupPermutationRKwayRecursive( CsrMatrixClass<T> &A,
bool vertexsep,
int clvl,
int &tlvl,
int num_dom,
int minsep,
int kmin,
int kfactor, vector_int &map_v, vector_int &mapptr_v);
1645 template <
typename T>
1646 int SetupPermutationNDRecursive( CsrMatrixClass<T> &A,
bool vertexsep,
int clvl,
int &tlvl,
int minsep, std::vector<std::vector<vector_int> > &level_str);
1655 int SetupPermutationNDCombineLevels(std::vector<vector_int> &level_stri,
int &ndom);
1677 template <
typename T>
1678 int ParallelCsrMatrixSetupPermutationParallelRKway( ParallelCsrMatrixClass<T> &A,
bool vertexsep,
int &nlev,
long int ncomp,
long int minsep,
long int kmin,
long int kfactor, vector_int &map_v, vector_int &mapptr_v,
bool bj_last);
1703 int SetupPermutationParallelRKwayRecursive(vector_long &vtxdist, vector_long &xadj, vector_long &adjncy,
int clvl,
int &tlvl,
long int ncomp,
long int minsep,
long int kmin,
long int kfactor, vector_int &map_v, vector_int &mapptr_v,
bool bj_last, parallel_log &parlog);
1721 int ParallelRKwayGetSeparator( vector_long &vtxdist, vector_long &xadj, vector_long &adjncy, vector_long &vtxdist_s, vector_long &xadj_s, vector_long &adjncy_s, vector_long &map,
int num_dom, vector_int &vtxsep, parallel_log &parlog);
1740 template <
typename T>
1741 int SetupPermutationParallelRKwayRecursive2(ParallelCsrMatrixClass<T> &A,
int clvl,
int &tlvl,
long int ncomp,
long int minsep,
long int kmin,
long int kfactor, vector_int &map_v, vector_int &mapptr_v,
bool bj_last, parallel_log &parlog);
1754 template <
typename T>
1755 int SetupPermutationParallelKwayVertexSep( ParallelCsrMatrixClass<T> &A,
long int &ncomp, vector_int &map_v, vector_long &perm_sep, parallel_log &parlog);
1769 template <
typename T>
1770 int SetupPermutationParallelKwayVertexSepRecursive(ParallelCsrMatrixClass<T> &A,
int clvl,
int tlvl,
bool &succeed, vector_int &map_v, parallel_log &parlog);
1786 int ParallelNDGetSeparator( vector_long &vtxdist, vector_long &xadj, vector_long &adjncy, vector_long &map,
long int &ndom1,
long int &ndom2,
long int &edge_cut, parallel_log &parlog);
1798 template <
typename T>
1799 int ParallelCsrMatrixSetupPermutationParallelND( ParallelCsrMatrixClass<T> &A,
bool vertexsep,
int &nlev,
long int minsep, vector_int &map_v, vector_int &mapptr_v);
1815 template <
typename T>
1816 int ParallelCsrMatrixSetupIOOrder(ParallelCsrMatrixClass<T> &parcsr_in, vector_int &local_perm,
int &nI, CsrMatrixClass<T> &B_mat, CsrMatrixClass<T> &E_mat, CsrMatrixClass<T> &F_mat, ParallelCsrMatrixClass<T> &C_mat,
int perm_option,
bool perm_c);