ParGeMSLR
matrixops.hpp
Go to the documentation of this file.
1 #ifndef PARGEMSLR_MATRIXOPS_H
2 #define PARGEMSLR_MATRIXOPS_H
3 
12 #include <vector>
13 
14 #include "../vectors/vector.hpp"
15 #include "../utils/mmio.hpp"
16 #include "matrix.hpp"
17 #include "csr_matrix.hpp"
18 #include "parallel_csr_matrix.hpp"
19 #include "coo_matrix.hpp"
20 #include "dense_matrix.hpp"
21 
22 using namespace std;
23 
24 namespace pargemslr
25 {
26 
33  PrecisionEnum GetMatrixPrecision(const MatrixClass<int> &mat);
34 
41  PrecisionEnum GetMatrixPrecision(const MatrixClass<long int> &mat);
42 
49  PrecisionEnum GetMatrixPrecision(const MatrixClass<float> &mat);
50 
57  PrecisionEnum GetMatrixPrecision(const MatrixClass<double> &mat);
58 
65  PrecisionEnum GetMatrixPrecision(const MatrixClass<complexs> &mat);
66 
73  PrecisionEnum GetMatrixPrecision(const MatrixClass<complexd> &mat);
74 
81  PrecisionEnum GetMatrixPPrecision(const MatrixClass<int> *mat);
82 
89  PrecisionEnum GetMatrixPPrecision(const MatrixClass<long int> *mat);
90 
97  PrecisionEnum GetMatrixPPrecision(const MatrixClass<float> *mat);
98 
105  PrecisionEnum GetMatrixPPrecision(const MatrixClass<double> *mat);
106 
113  PrecisionEnum GetMatrixPPrecision(const MatrixClass<complexs> *mat);
114 
121  PrecisionEnum GetMatrixPPrecision(const MatrixClass<complexd> *mat);
122 
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);
139 
151  int DenseMatrixMatVec( const DenseMatrixClass<float> &A, char trans, const float &alpha, const VectorClass<float> &x, const float &beta, VectorClass<float> &y);
152 
164  int DenseMatrixMatVec( const DenseMatrixClass<double> &A, char trans, const double &alpha, const VectorClass<double> &x, const double &beta, VectorClass<double> &y);
165 
177  int DenseMatrixMatVec( const DenseMatrixClass<complexs> &A, char trans, const complexs &alpha, const VectorClass<complexs> &x, const complexs &beta, VectorClass<complexs> &y);
178 
190  int DenseMatrixMatVec( const DenseMatrixClass<complexd> &A, char trans, const complexd &alpha, const VectorClass<complexd> &x, const complexd &beta, VectorClass<complexd> &y);
191 
192 #ifdef PARGEMSLR_CUDA
193 
206  int DenseMatrixSMatVecDevice( const DenseMatrixClass<float> &A, char trans, const float &alpha, const VectorClass<float> &x, const float &beta, VectorClass<float> &y);
207 
220  int DenseMatrixDMatVecDevice( const DenseMatrixClass<double> &A, char trans, const double &alpha, const VectorClass<double> &x, const double &beta, VectorClass<double> &y);
221 
234  int DenseMatrixCMatVecDevice( const DenseMatrixClass<complexs> &A, char trans, const complexs &alpha, const VectorClass<complexs> &x, const complexs &beta, VectorClass<complexs> &y);
235 
248  int DenseMatrixZMatVecDevice( const DenseMatrixClass<complexd> &A, char trans, const complexd &alpha, const VectorClass<complexd> &x, const complexd &beta, VectorClass<complexd> &y);
249 
250 #endif
251 
258  int DenseMatrixInvertHost( DenseMatrixClass<float> &A);
259 
266  int DenseMatrixInvertHost( DenseMatrixClass<double> &A);
267 
274  int DenseMatrixInvertHost( DenseMatrixClass<complexs> &A);
275 
282  int DenseMatrixInvertHost( DenseMatrixClass<complexd> &A);
283 
290  int DenseMatrixInvertUpperTriangularHost( DenseMatrixClass<float> &A);
291 
298  int DenseMatrixInvertUpperTriangularHost( DenseMatrixClass<double> &A);
299 
306  int DenseMatrixInvertUpperTriangularHost( DenseMatrixClass<complexs> &A);
307 
314  int DenseMatrixInvertUpperTriangularHost( DenseMatrixClass<complexd> &A);
315 
323  int DenseMatrixQRDecompositionHost( DenseMatrixClass<float> &A, DenseMatrixClass<float> &Q);
324 
332  int DenseMatrixQRDecompositionHost( DenseMatrixClass<double> &A, DenseMatrixClass<double> &Q);
333 
341  int DenseMatrixQRDecompositionHost( DenseMatrixClass<complexs> &A, DenseMatrixClass<complexs> &Q);
342 
350  int DenseMatrixQRDecompositionHost( DenseMatrixClass<complexd> &A, DenseMatrixClass<complexd> &Q);
351 
359  int DenseMatrixHessDecompositionHost( DenseMatrixClass<float> &A, DenseMatrixClass<float> &Q);
360 
370  int DenseMatrixHessDecompositionHost( DenseMatrixClass<float> &A, int start, int end, DenseMatrixClass<float> &Q);
371 
379  int DenseMatrixHessDecompositionHost( DenseMatrixClass<double> &A, DenseMatrixClass<double> &Q);
380 
390  int DenseMatrixHessDecompositionHost( DenseMatrixClass<double> &A, int start, int end, DenseMatrixClass<double> &Q);
391 
399  int DenseMatrixHessDecompositionHost( DenseMatrixClass<complexs> &A, DenseMatrixClass<complexs> &Q);
400 
410  int DenseMatrixHessDecompositionHost( DenseMatrixClass<complexs> &A, int start, int end, DenseMatrixClass<complexs> &Q);
411 
419  int DenseMatrixHessDecompositionHost( DenseMatrixClass<complexd> &A, DenseMatrixClass<complexd> &Q);
420 
430  int DenseMatrixHessDecompositionHost( DenseMatrixClass<complexd> &A, int start, int end, DenseMatrixClass<complexd> &Q);
431 
441  int DenseMatrixRealHessSchurDecompositionHost( DenseMatrixClass<float> &A, DenseMatrixClass<float> &Q, vector_seq_float &wr, vector_seq_float &wi);
442 
454  int DenseMatrixRealHessSchurDecompositionHost( DenseMatrixClass<float> &A, int start, int end, DenseMatrixClass<float> &Q, vector_seq_float &wr, vector_seq_float &wi);
455 
465  int DenseMatrixRealHessSchurDecompositionHost( DenseMatrixClass<double> &A, DenseMatrixClass<double> &Q, vector_seq_double &wr, vector_seq_double &wi);
466 
478  int DenseMatrixRealHessSchurDecompositionHost( DenseMatrixClass<double> &A, int start, int end, DenseMatrixClass<double> &Q, vector_seq_double &wr, vector_seq_double &wi);
479 
488  int DenseMatrixComplexHessSchurDecompositionHost( DenseMatrixClass<complexs> &A, DenseMatrixClass<complexs> &Q, vector_seq_complexs &w);
489 
500  int DenseMatrixComplexHessSchurDecompositionHost( DenseMatrixClass<complexs> &A, int start, int end, DenseMatrixClass<complexs> &Q, vector_seq_complexs &w);
501 
510  int DenseMatrixComplexHessSchurDecompositionHost( DenseMatrixClass<complexd> &A, DenseMatrixClass<complexd> &Q, vector_seq_complexd &w);
511 
522  int DenseMatrixComplexHessSchurDecompositionHost( DenseMatrixClass<complexd> &A, int start, int end, DenseMatrixClass<complexd> &Q, vector_seq_complexd &w);
523 
534  int DenseMatrixRealOrderSchur( DenseMatrixClass<float> &A, DenseMatrixClass<float> &Q, vector_seq_float &wr, vector_seq_float &wi, vector_int &select);
535 
546  int DenseMatrixRealOrderSchur( DenseMatrixClass<double> &A, DenseMatrixClass<double> &Q, vector_seq_double &wr, vector_seq_double &wi, vector_int &select);
547 
558  int DenseMatrixComplexOrderSchur( DenseMatrixClass<complexs> &A, DenseMatrixClass<complexs> &Q, vector_seq_complexs &w, vector_int &select);
559 
569  int DenseMatrixComplexOrderSchur( DenseMatrixClass<complexd> &A, DenseMatrixClass<complexd> &Q, vector_seq_complexd &w, vector_int &select);
570 
583  int DenseMatrixRealOrderSchurClusters( DenseMatrixClass<float> &A, DenseMatrixClass<float> &Q, vector_seq_float &wr, vector_seq_float &wi, vector_int &clusters);
584 
597  int DenseMatrixRealOrderSchurClusters( DenseMatrixClass<double> &A, DenseMatrixClass<double> &Q, vector_seq_double &wr, vector_seq_double &wi, vector_int &clusters);
598 
609  int DenseMatrixComplexOrderSchurClusters( DenseMatrixClass<complexs> &A, DenseMatrixClass<complexs> &Q, vector_seq_complexs &w, vector_int &clusters);
610 
620  int DenseMatrixComplexOrderSchurClusters( DenseMatrixClass<complexd> &A, DenseMatrixClass<complexd> &Q, vector_seq_complexd &w, vector_int &clusters);
621 
631  int DenseMatrixRealHessEigenDecompositionHost( DenseMatrixClass<float> &A, DenseMatrixClass<float> &Q, vector_seq_float &wr, vector_seq_float &wi);
632 
642  int DenseMatrixRealHessEigenDecompositionHost( DenseMatrixClass<double> &A, DenseMatrixClass<double> &Q, vector_seq_double &wr, vector_seq_double &wi);
643 
652  int DenseMatrixComplexHessEigenDecompositionHost( DenseMatrixClass<complexs> &A, DenseMatrixClass<complexs> &Q, vector_seq_complexs &w);
653 
662  int DenseMatrixComplexHessEigenDecompositionHost( DenseMatrixClass<complexd> &A, DenseMatrixClass<complexd> &Q, vector_seq_complexd &w);
663 
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);
679 
693  int DenseMatrixMatMat( const float &alpha, const DenseMatrixClass<float> &A, char transa, const DenseMatrixClass<float> &B, char transb, const float &beta, DenseMatrixClass<float> &C);
694 
708  int DenseMatrixMatMat( const double &alpha, const DenseMatrixClass<double> &A, char transa, const DenseMatrixClass<double> &B, char transb, const double &beta, DenseMatrixClass<double> &C);
709 
723  int DenseMatrixMatMat( const complexs &alpha, const DenseMatrixClass<complexs> &A, char transa, const DenseMatrixClass<complexs> &B, char transb, const complexs &beta, DenseMatrixClass<complexs> &C);
724 
738  int DenseMatrixMatMat( const complexd &alpha, const DenseMatrixClass<complexd> &A, char transa, const DenseMatrixClass<complexd> &B, char transb, const complexd &beta, DenseMatrixClass<complexd> &C);
739 
740 #ifdef PARGEMSLR_CUDA
741 
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);
755 
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);
769 
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);
783 
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);
797 
798 #endif
799 
815  template<typename T>
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);
817 
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);
834 
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);
851 
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);
868 
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);
885 
897  int CsrMatrixMatVec( const CsrMatrixClass<float> &A, char trans, const float &alpha, const VectorClass<float> &x, const float &beta, VectorClass<float> &y);
898 
910  int CsrMatrixMatVec( const CsrMatrixClass<double> &A, char trans, const double &alpha, const VectorClass<double> &x, const double &beta, VectorClass<double> &y);
911 
923  int CsrMatrixMatVec( const CsrMatrixClass<complexs> &A, char trans, const complexs &alpha, const VectorClass<complexs> &x, const complexs &beta, VectorClass<complexs> &y);
924 
936  int CsrMatrixMatVec( const CsrMatrixClass<complexd> &A, char trans, const complexd &alpha, const VectorClass<complexd> &x, const complexd &beta, VectorClass<complexd> &y);
937 
938 #ifdef PARGEMSLR_CUDA
939 
951  int CsrMatrixSMatVecDevice( const CsrMatrixClass<float> &A, char trans, const float &alpha, const VectorClass<float> &x, const float &beta, VectorClass<float> &y);
952 
964  int CsrMatrixDMatVecDevice( const CsrMatrixClass<double> &A, char trans, const double &alpha, const VectorClass<double> &x, const double &beta, VectorClass<double> &y);
965 
977  int CsrMatrixCMatVecDevice( const CsrMatrixClass<complexs> &A, char trans, const complexs &alpha, const VectorClass<complexs> &x, const complexs &beta, VectorClass<complexs> &y);
978 
990  int CsrMatrixZMatVecDevice( const CsrMatrixClass<complexd> &A, char trans, const complexd &alpha, const VectorClass<complexd> &x, const complexd &beta, VectorClass<complexd> &y);
991 
998  int CsrMatrixCreateCusparseSpMat( CsrMatrixClass<float> &A);
999 
1006  int CsrMatrixCreateCusparseSpMat( CsrMatrixClass<double> &A);
1007 
1014  int CsrMatrixCreateCusparseSpMat( CsrMatrixClass<complexs> &A);
1015 
1022  int CsrMatrixCreateCusparseSpMat( CsrMatrixClass<complexd> &A);
1023 
1024 #endif
1025 
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);
1045 
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);
1064 
1072  template <typename T>
1073  int CsrMatrixTransposeHost( CsrMatrixClass<T> &A, CsrMatrixClass<T> &AT);
1074 
1083  template <typename T>
1084  int CsrMatrixAddHost( CsrMatrixClass<T> &A, CsrMatrixClass<T> &B, CsrMatrixClass<T> &C);
1085 
1093  template <typename T>
1094  int ParallelCsrMatrixTransposeHost( ParallelCsrMatrixClass<T> &A, ParallelCsrMatrixClass<T> &AT);
1095 
1104  template <typename T>
1105  int ParallelCsrMatrixAddHost( ParallelCsrMatrixClass<T> &A, ParallelCsrMatrixClass<T> &B, ParallelCsrMatrixClass<T> &C);
1106 
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);
1123 
1134  template <typename T>
1135  int CsrMatrixMaxMatchingHost( CsrMatrixClass<T> &A, int &nmatch, IntVectorClass<int> &match_row, IntVectorClass<int> &match_col);
1136 
1150  bool CsrMatrixMaxMatchingBfsHost(int nrows, int ncols, int *A_i, int *A_j, IntVectorClass<int> &dist, IntVectorClass<int> &match_row, IntVectorClass<int> &match_col);
1151 
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);
1167 
1174  template <typename T>
1175  int CsrMatrixSortRow( CsrMatrixClass<T> &A);
1176 
1177 #ifdef PARGEMSLR_CUDA
1178 
1184  int CsrMatrixSortRowDevice( matrix_csr_float &A);
1185 
1192  int CsrMatrixSortRowDevice( matrix_csr_double &A);
1193 
1200  int CsrMatrixSortRowDevice( matrix_csr_complexs &A);
1201 
1208  int CsrMatrixSortRowDevice( matrix_csr_complexd &A);
1209 #endif
1210 
1220  template <typename T>
1221  int CsrSubMatrixAmdHost(CsrMatrixClass<T> &A, vector_int &rowscols, vector_int &perm);
1222 
1231  template <typename T>
1232  int CsrMatrixAmdHost(CsrMatrixClass<T> &A, vector_int &perm);
1233 
1243  template <typename T>
1244  int CsrSubMatrixNdHost(CsrMatrixClass<T> &A, vector_int &rowscols, vector_int &perm);
1245 
1254  template <typename T>
1255  int CsrMatrixNdHost(CsrMatrixClass<T> &A, vector_int &perm);
1256 
1266  template <typename T>
1267  int CsrSubMatrixRcmHost(CsrMatrixClass<T> &A, vector_int &rowscols, vector_int &perm);
1268 
1279  template <typename T>
1280  int CsrMatrixRcmHost(CsrMatrixClass<T> &A, vector_int &perm);
1281 
1292  template <typename T>
1293  int CsrMatrixRcmRootHost(CsrMatrixClass<T> &G, vector_int &marker, int &root);
1294 
1307  template <typename T>
1308  int CsrMatrixRcmNumberingHost(CsrMatrixClass<T> &G, int root, vector_int &marker, vector_int &perm, int &current_num);
1309 
1322  template <typename T>
1323  int CsrMatrixRcmPerphnHost(CsrMatrixClass<T> &G, int &root, vector_int &marker);
1324 
1335  template <typename T>
1336  int CsrMatrixRcmBfsHost(CsrMatrixClass<T> &G, int root, vector_int &marker, std::vector<std::vector<int> > &level);
1337 
1345  int CsrMatrixRcmClearLevelHost(std::vector<std::vector<int> > &level);
1355  int CsrMatrixRcmSwapHost(vector_int &perm, int a, int b);
1356 
1366  int CsrMatrixRcmReverseHost(vector_int &perm, int start, int end);
1367 
1380  int ParmetisKwayHost(vector_long &vtxdist, vector_long &xadj, vector_long &adjncy, long int &num_dom, vector_long &map, parallel_log &parlog);
1381 
1394  int ParmetisNodeND(vector_long &vtxdist, vector_long &xadj, vector_long &adjncy, long int &num_dom, vector_long &map, parallel_log &parlog);
1395 
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);
1410 
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);
1427 
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);
1449 
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);
1469 
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);
1488 
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);
1502 
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);
1516 
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);
1531 
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);
1545 
1555  template <typename T>
1556  int DenseMatrixPlotHost( DenseMatrixClass<T> &A, int conditiona, int conditionb, int width);
1557 
1568  template <typename T>
1569  int CsrMatrixPlotHost( CsrMatrixClass<T> &A, int *perm, int conditiona, int conditionb, int width);
1570 
1580  int CooMatrixReadFromFile(CooMatrixClass<float> &coo, const char *matfile, int idxin, int idxout);
1581 
1591  int CooMatrixReadFromFile(CooMatrixClass<double> &coo, const char *matfile, int idxin, int idxout);
1592 
1602  int CooMatrixReadFromFile(CooMatrixClass<complexs> &coo, const char *matfile, int idxin, int idxout);
1603 
1613  int CooMatrixReadFromFile(CooMatrixClass<complexd> &coo, const char *matfile, int idxin, int idxout);
1614 
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);
1632 
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);
1647 
1655  int SetupPermutationNDCombineLevels(std::vector<vector_int> &level_stri, int &ndom);
1656 
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);
1679 
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);
1704 
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);
1722 
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);
1742 
1754  template <typename T>
1755  int SetupPermutationParallelKwayVertexSep( ParallelCsrMatrixClass<T> &A, long int &ncomp, vector_int &map_v, vector_long &perm_sep, parallel_log &parlog);
1756 
1769  template <typename T>
1770  int SetupPermutationParallelKwayVertexSepRecursive(ParallelCsrMatrixClass<T> &A, int clvl, int tlvl, bool &succeed, vector_int &map_v, parallel_log &parlog);
1771 
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);
1787 
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);
1800 
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);
1817 
1818 }
1819 
1820 #endif
parallel_csr_matrix.hpp
Parallel csr matrix data structure.
csr_matrix.hpp
CSR matrix data structure.
dense_matrix.hpp
Dense matrix data structure.
matrix.hpp
The virtual matrix classes.
coo_matrix.hpp
COO matrix data structure.
pargemslr::PrecisionEnum
PrecisionEnum
The precision enum.
Definition: utils.hpp:453