diff --git a/SimpleTests/MatrixTests/MatMult.cpp b/SimpleTests/MatrixTests/MatMult.cpp index c93141da607e2c549031e17dca5286dcc7bea07e..ff2c8c7ad620329adc8b2ddadaf8f08a1d94808f 100644 --- a/SimpleTests/MatrixTests/MatMult.cpp +++ b/SimpleTests/MatrixTests/MatMult.cpp @@ -18,13 +18,28 @@ // BaseLib #include "RunTime.h" #include "CPUTime.h" +// BaseLib/logog #include "logog.hpp" +#include "formatter.hpp" +// BaseLib/tclap #include "tclap/CmdLine.h" #ifdef _OPENMP #include <omp.h> #endif +/** + * new formatter for logog + */ +class FormatterCustom : public logog::FormatterGCC +{ + virtual TOPIC_FLAGS GetTopicFlags( const logog::Topic &topic ) + { + return ( Formatter::GetTopicFlags( topic ) & + ~( TOPIC_FILE_NAME_FLAG | TOPIC_LINE_NUMBER_FLAG )); + } +}; + int main(int argc, char *argv[]) { LOGOG_INITIALIZE(); @@ -58,7 +73,15 @@ int main(int argc, char *argv[]) unsigned n_mults (n_mults_arg.getValue()); std::string fname_mat (matrix_arg.getValue()); - logog::Cout* logogCout = new logog::Cout; + FormatterCustom *custom_format (new FormatterCustom); + logog::Cout *logogCout(new logog::Cout); + logogCout->SetFormatter(*custom_format); + + logog::LogFile *logog_file(NULL); + if (! output_arg.getValue().empty()) { + logog_file = new logog::LogFile(output_arg.getValue().c_str()); + logog_file->SetFormatter( *custom_format ); + } // read number of threads unsigned n_threads (n_cores_arg.getValue()); @@ -87,7 +110,7 @@ int main(int argc, char *argv[]) MathLib::CRSMatrix<double, unsigned> mat (n, iA, jA, A); #endif // CRSMatrixPThreads<double> mat (n, iA, jA, A, n_threads); - INFO("%d x %d", mat.getNRows(), mat.getNCols()); + INFO("%d x %d ", mat.getNRows(), mat.getNCols()); double *x(new double[n]); double *y(new double[n]); @@ -124,7 +147,9 @@ int main(int argc, char *argv[]) delete [] x; delete [] y; + delete custom_format; delete logogCout; + delete logog_file; LOGOG_SHUTDOWN(); return 0; diff --git a/SimpleTests/MatrixTests/MatVecMultPerm.cpp b/SimpleTests/MatrixTests/MatVecMultPerm.cpp index 0d608bf16844b2ee66c0515c916cdb1efcb87e6b..7d908788846c72b16ea87da2a30e3ac3b6732667 100644 --- a/SimpleTests/MatrixTests/MatVecMultPerm.cpp +++ b/SimpleTests/MatrixTests/MatVecMultPerm.cpp @@ -22,12 +22,12 @@ int main(int argc, char *argv[]) { - TCLAP::CmdLine cmd("Simple matrix vector multiplication test", ' ', "0.1"); + TCLAP::CmdLine cmd("The purpose of this program is the speed test of sparse matrix vector multiplication (MVM), where the matrix is stored in CRS format. Before executing the MVM a nested dissection reordering is performed.", ' ', "0.1"); // Define a value argument and add it to the command line. // A value arg defines a flag and a type of value that it expects, // such as "-m matrix". - TCLAP::ValueArg<std::string> matrix_arg("m","matrix","input matrix file",true,"","string"); + TCLAP::ValueArg<std::string> matrix_arg("m","matrix","input matrix file in CRS format",true,"","file name of the matrix in CRS format"); // Add the argument mesh_arg to the CmdLine object. The CmdLine object // uses this Arg to parse the command line. @@ -36,7 +36,7 @@ int main(int argc, char *argv[]) // TCLAP::ValueArg<unsigned> n_cores_arg("n", "number-cores", "number of cores to use", true, "1", "number"); // cmd.add( n_cores_arg ); - TCLAP::ValueArg<unsigned> n_mults_arg("n", "number-of-multiplications", "number of multiplications to perform", true, 10, "unsigned"); + TCLAP::ValueArg<unsigned> n_mults_arg("n", "number-of-multiplications", "number of multiplications to perform", true, 10, "number of multiplications"); cmd.add( n_mults_arg ); TCLAP::ValueArg<std::string> output_arg("o", "output", "output file", false, "", "string"); @@ -140,20 +140,13 @@ int main(int argc, char *argv[]) } #ifndef NDEBUG -// MathLib::AdjMat *global_reordered_adj_mat((cluster_tree.getGlobalAdjMat())->getMat(0,n,op_perm, po_perm)); -// const unsigned adj_nnz(global_reordered_adj_mat->getNNZ()); -// double* adj_mat_data(new double[adj_nnz]); -// for (unsigned k(0); k<adj_nnz; k++) adj_mat_data[k] = 1.0; -// std::string fname_out (fname_mat); -// fname_out = fname_out.substr(0,fname_mat.length()-4); -// fname_out += "_adj.bin"; -// std::ofstream os (fname_out.c_str(), std::ios::binary); -// CS_write(os, n, global_reordered_adj_mat->getRowPtrArray(), global_reordered_adj_mat->getColIdxArray(), adj_mat_data); -// std::string fname_fem_out (fname_mat); -// fname_fem_out = fname_fem_out.substr(0,fname_mat.length()-4); -// fname_fem_out += "_fem_reordered.bin"; -// std::ofstream os (fname_fem_out.c_str(), std::ios::binary); -// CS_write(os, n, mat.getRowPtrArray(), mat.getColIdxArray(), mat.getEntryArray()); +// std::string fname_mat_out(fname_mat.substr(0,fname_mat.length()-4)+"-reordered.bin"); +// std::ofstream os (fname_mat_out.c_str(), std::ios::binary); +// if (os) { +// std::cout << "writing matrix to " << fname_mat_out << " ... " << std::flush; +// CS_write(os, n, mat.getRowPtrArray(), mat.getColIdxArray(), mat.getEntryArray()); +// std::cout << "done" << std::endl; +// } #endif if (verbose) {