diff options
Diffstat (limited to 'bench/spbench/spbenchsolver.h')
-rw-r--r-- | bench/spbench/spbenchsolver.h | 62 |
1 files changed, 31 insertions, 31 deletions
diff --git a/bench/spbench/spbenchsolver.h b/bench/spbench/spbenchsolver.h index 99f05aabc..c48ed7aa7 100644 --- a/bench/spbench/spbenchsolver.h +++ b/bench/spbench/spbenchsolver.h @@ -10,7 +10,7 @@ #include <iostream> #include <fstream> -#include "Eigen/SparseCore" +#include <Eigen/SparseCore> #include <bench/BenchTimer.h> #include <cstdlib> #include <string> @@ -22,6 +22,8 @@ #include <Eigen/LU> #include <unsupported/Eigen/SparseExtra> +#include "spbenchstyle.h" + #ifdef EIGEN_CHOLMOD_SUPPORT #include <Eigen/CholmodSupport> #endif @@ -85,103 +87,103 @@ void printStatheader(std::ofstream& out) // Print XML header // NOTE It would have been much easier to write these XML documents using external libraries like tinyXML or Xerces-C++. - out << "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n"; - out << "<?xml-stylesheet type=\"text/xsl\" href=\"spbench.xsl\" ?> \n"; - out << "<!DOCTYPE BENCH SYSTEM \"spbench.dtd\"> \n"; - out << "\n<!-- Generated by the Eigen library -->\n"; - + out << "<?xml version='1.0' encoding='UTF-8'?> \n"; + out << "<?xml-stylesheet type='text/xsl' href='#stylesheet' ?> \n"; + out << "<!DOCTYPE BENCH [\n<!ATTLIST xsl:stylesheet\n id\t ID #REQUIRED>\n]>"; + out << "\n\n<!-- Generated by the Eigen library -->\n"; - // Write the root XML element - out << "\n<BENCH> \n" ; + out << "\n<BENCH> \n" ; //root XML element + // Print the xsl style section + printBenchStyle(out); // List all available solvers out << " <AVAILSOLVER> \n"; #ifdef EIGEN_UMFPACK_SUPPORT - out <<" <SOLVER ID=\"" << EIGEN_UMFPACK << "\">\n"; + out <<" <SOLVER ID='" << EIGEN_UMFPACK << "'>\n"; out << " <TYPE> LU </TYPE> \n"; out << " <PACKAGE> UMFPACK </PACKAGE> \n"; out << " </SOLVER> \n"; #endif #ifdef EIGEN_SUPERLU_SUPPORT - out <<" <SOLVER ID=\"" << EIGEN_SUPERLU << "\">\n"; + out <<" <SOLVER ID='" << EIGEN_SUPERLU << "'>\n"; out << " <TYPE> LU </TYPE> \n"; out << " <PACKAGE> SUPERLU </PACKAGE> \n"; out << " </SOLVER> \n"; #endif #ifdef EIGEN_CHOLMOD_SUPPORT - out <<" <SOLVER ID=\"" << EIGEN_CHOLMOD_SIMPLICIAL_LLT << "\">\n"; + out <<" <SOLVER ID='" << EIGEN_CHOLMOD_SIMPLICIAL_LLT << "'>\n"; out << " <TYPE> LLT SP</TYPE> \n"; out << " <PACKAGE> CHOLMOD </PACKAGE> \n"; out << " </SOLVER> \n"; - out <<" <SOLVER ID=\"" << EIGEN_CHOLMOD_SUPERNODAL_LLT << "\">\n"; + out <<" <SOLVER ID='" << EIGEN_CHOLMOD_SUPERNODAL_LLT << "'>\n"; out << " <TYPE> LLT</TYPE> \n"; out << " <PACKAGE> CHOLMOD </PACKAGE> \n"; out << " </SOLVER> \n"; - out <<" <SOLVER ID=\"" << EIGEN_CHOLMOD_LDLT << "\">\n"; + out <<" <SOLVER ID='" << EIGEN_CHOLMOD_LDLT << "'>\n"; out << " <TYPE> LDLT </TYPE> \n"; out << " <PACKAGE> CHOLMOD </PACKAGE> \n"; out << " </SOLVER> \n"; #endif #ifdef EIGEN_PARDISO_SUPPORT - out <<" <SOLVER ID=\"" << EIGEN_PARDISO << "\">\n"; + out <<" <SOLVER ID='" << EIGEN_PARDISO << "'>\n"; out << " <TYPE> LU </TYPE> \n"; out << " <PACKAGE> PARDISO </PACKAGE> \n"; out << " </SOLVER> \n"; - out <<" <SOLVER ID=\"" << EIGEN_PARDISO_LLT << "\">\n"; + out <<" <SOLVER ID='" << EIGEN_PARDISO_LLT << "'>\n"; out << " <TYPE> LLT </TYPE> \n"; out << " <PACKAGE> PARDISO </PACKAGE> \n"; out << " </SOLVER> \n"; - out <<" <SOLVER ID=\"" << EIGEN_PARDISO_LDLT << "\">\n"; + out <<" <SOLVER ID='" << EIGEN_PARDISO_LDLT << "'>\n"; out << " <TYPE> LDLT </TYPE> \n"; out << " <PACKAGE> PARDISO </PACKAGE> \n"; out << " </SOLVER> \n"; #endif #ifdef EIGEN_PASTIX_SUPPORT - out <<" <SOLVER ID=\"" << EIGEN_PASTIX << "\">\n"; + out <<" <SOLVER ID='" << EIGEN_PASTIX << "'>\n"; out << " <TYPE> LU </TYPE> \n"; out << " <PACKAGE> PASTIX </PACKAGE> \n"; out << " </SOLVER> \n"; - out <<" <SOLVER ID=\"" << EIGEN_PASTIX_LLT << "\">\n"; + out <<" <SOLVER ID='" << EIGEN_PASTIX_LLT << "'>\n"; out << " <TYPE> LLT </TYPE> \n"; out << " <PACKAGE> PASTIX </PACKAGE> \n"; out << " </SOLVER> \n"; - out <<" <SOLVER ID=\"" << EIGEN_PASTIX_LDLT << "\">\n"; + out <<" <SOLVER ID='" << EIGEN_PASTIX_LDLT << "'>\n"; out << " <TYPE> LDLT </TYPE> \n"; out << " <PACKAGE> PASTIX </PACKAGE> \n"; out << " </SOLVER> \n"; #endif - out <<" <SOLVER ID=\"" << EIGEN_BICGSTAB << "\">\n"; + out <<" <SOLVER ID='" << EIGEN_BICGSTAB << "'>\n"; out << " <TYPE> BICGSTAB </TYPE> \n"; out << " <PACKAGE> EIGEN </PACKAGE> \n"; out << " </SOLVER> \n"; - out <<" <SOLVER ID=\"" << EIGEN_BICGSTAB_ILUT << "\">\n"; + out <<" <SOLVER ID='" << EIGEN_BICGSTAB_ILUT << "'>\n"; out << " <TYPE> BICGSTAB_ILUT </TYPE> \n"; out << " <PACKAGE> EIGEN </PACKAGE> \n"; out << " </SOLVER> \n"; - out <<" <SOLVER ID=\"" << EIGEN_GMRES_ILUT << "\">\n"; + out <<" <SOLVER ID='" << EIGEN_GMRES_ILUT << "'>\n"; out << " <TYPE> GMRES_ILUT </TYPE> \n"; out << " <PACKAGE> EIGEN </PACKAGE> \n"; out << " </SOLVER> \n"; - out <<" <SOLVER ID=\"" << EIGEN_SIMPLICIAL_LDLT << "\">\n"; + out <<" <SOLVER ID='" << EIGEN_SIMPLICIAL_LDLT << "'>\n"; out << " <TYPE> LDLT </TYPE> \n"; out << " <PACKAGE> EIGEN </PACKAGE> \n"; out << " </SOLVER> \n"; - out <<" <SOLVER ID=\"" << EIGEN_SIMPLICIAL_LLT << "\">\n"; + out <<" <SOLVER ID='" << EIGEN_SIMPLICIAL_LLT << "'>\n"; out << " <TYPE> LLT </TYPE> \n"; out << " <PACKAGE> EIGEN </PACKAGE> \n"; out << " </SOLVER> \n"; - out <<" <SOLVER ID=\"" << EIGEN_CG << "\">\n"; + out <<" <SOLVER ID='" << EIGEN_CG << "'>\n"; out << " <TYPE> CG </TYPE> \n"; out << " <PACKAGE> EIGEN </PACKAGE> \n"; out << " </SOLVER> \n"; @@ -260,7 +262,7 @@ template<typename Solver, typename Scalar> void call_directsolver(Solver& solver, const int solver_id, const typename Solver::MatrixType& A, const Matrix<Scalar, Dynamic, 1>& b, const Matrix<Scalar, Dynamic, 1>& refX, std::string& statFile) { std::ofstream statbuf(statFile.c_str(), std::ios::app); - statbuf << " <SOLVER_STAT ID=\"" << solver_id <<"\">\n"; + statbuf << " <SOLVER_STAT ID='" << solver_id <<"'>\n"; call_solver(solver, solver_id, A, b, refX,statbuf); statbuf << " </SOLVER_STAT>\n"; statbuf.close(); @@ -273,7 +275,7 @@ void call_itersolver(Solver &solver, const int solver_id, const typename Solver: solver.setMaxIterations(MaximumIters); std::ofstream statbuf(statFile.c_str(), std::ios::app); - statbuf << " <SOLVER_STAT ID=\"" << solver_id <<"\">\n"; + statbuf << " <SOLVER_STAT ID='" << solver_id <<"'>\n"; call_solver(solver, solver_id, A, b, refX,statbuf); statbuf << " <ITER> "<< solver.iterations() << "</ITER>\n"; statbuf << " </SOLVER_STAT>\n"; @@ -303,7 +305,6 @@ void SelectSolvers(const SparseMatrix<Scalar>&A, unsigned int sym, Matrix<Scalar cout << "\nSolving with SUPERLU ... \n"; SuperLU<SpMat> solver; call_directsolver(solver, EIGEN_SUPERLU, A, b, refX,statFile); - printStatItem(stat, best_time_id, best_time_val); } #endif @@ -448,7 +449,6 @@ void SelectSolvers(const SparseMatrix<Scalar>&A, unsigned int sym, Matrix<Scalar // cout << "\nSolving with CG and IdentityPreconditioner ... \n"; // ConjugateGradient<SpMat, Lower, IdentityPreconditioner> solver; // call_itersolver(solver,EIGEN_CG_PRECOND, A, b, refX,statFile); -// printStatItem(stat, best_time_id, best_time_val); // } } // End SPD matrices } @@ -504,8 +504,8 @@ void Browse_Matrices(const string folder, bool statFileExists, std::string& stat if(statFileExists) { std::ofstream statbuf(statFile.c_str(), std::ios::app); - statbuf << " <BEST_SOLVER ID=\""<< best_time_id - << "\"></BEST_SOLVER>\n"; + statbuf << " <BEST_SOLVER ID='"<< best_time_id + << "'></BEST_SOLVER>\n"; statbuf << " </LINEARSYSTEM> \n"; statbuf.close(); } |