diff --git a/SimpleTests/MatrixTests/MatVecMultNDPerm.cpp b/SimpleTests/MatrixTests/MatVecMultNDPerm.cpp index 20ce14d29a9e72f2d1b1014ad1928a2694b846b0..33d6ed2449256aa007951c1a1764199a7534772a 100644 --- a/SimpleTests/MatrixTests/MatVecMultNDPerm.cpp +++ b/SimpleTests/MatrixTests/MatVecMultNDPerm.cpp @@ -7,6 +7,10 @@ #include <cstdlib> +#ifdef OGS_BUILD_INFO +#include "BuildInfo.h" +#endif + // BaseLib #include "RunTime.h" #include "CPUTime.h" @@ -74,6 +78,10 @@ int main(int argc, char *argv[]) logog::Cout *logogCout(new logog::Cout); logogCout->SetFormatter(*custom_format); +#ifdef OGS_BUILD_INFO + INFO("git commit: %s, executed on machine: ", GIT_COMMIT_INFO); +#endif + // *** reading matrix in crs format from file std::ifstream in(fname_mat.c_str(), std::ios::in | std::ios::binary); double *A(NULL); diff --git a/SimpleTests/MatrixTests/MatVecMultPerm.cpp b/SimpleTests/MatrixTests/MatVecMultPerm.cpp deleted file mode 100644 index 02f22eab46eb5f8ea2f29086ec4cc97ebf7a3de7..0000000000000000000000000000000000000000 --- a/SimpleTests/MatrixTests/MatVecMultPerm.cpp +++ /dev/null @@ -1,173 +0,0 @@ -/* - * MatVecMultPerm.cpp - * - * Created on: Jan 3, 2012 - * Author: TF - */ - -#include <cstdlib> - -// BaseLib -#include "RunTime.h" -#include "CPUTime.h" -// BaseLib/tclap -#include "tclap/CmdLine.h" -// BaseLib/logog -#include "logog.hpp" -#include "formatter.hpp" - -// MathLib -#include "sparse.h" - -#include "LinAlg/Sparse/NestedDissectionPermutation/AdjMat.h" -#include "LinAlg/Sparse/NestedDissectionPermutation/CRSMatrixReordered.h" -#include "LinAlg/Sparse/NestedDissectionPermutation/Cluster.h" -#include "LinAlg/Sparse/CRSMatrix.h" - -/** - * 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(); - - 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 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. - cmd.add( matrix_arg ); - -// 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, "number of multiplications"); - cmd.add( n_mults_arg ); - - TCLAP::ValueArg<std::string> output_arg("o", "output", "output file", false, "", "string"); - cmd.add( output_arg ); - - TCLAP::ValueArg<unsigned> verbosity_arg("v", "verbose", "level of verbosity [0 very low information, 1 much information]", false, 0, "string"); - cmd.add( verbosity_arg ); - - cmd.parse( argc, argv ); - - // read the number of multiplication to execute - unsigned n_mults (n_mults_arg.getValue()); - std::string fname_mat (matrix_arg.getValue()); - bool verbose (verbosity_arg.getValue()); - - FormatterCustom *custom_format (new FormatterCustom); - logog::Cout *logogCout(new logog::Cout); - logogCout->SetFormatter(*custom_format); - - // *** reading matrix in crs format from file - std::ifstream in(fname_mat.c_str(), std::ios::in | std::ios::binary); - double *A(NULL); - unsigned *iA(NULL), *jA(NULL), n; - if (in) { - if (verbose) { - INFO("reading matrix from %s ...", fname_mat.c_str()); - } - BaseLib::RunTime timer; - timer.start(); - CS_read(in, n, iA, jA, A); - timer.stop(); - if (verbose) { - INFO("ok, %e s", timer.elapsed()); - } - } else { - ERR("error reading matrix from %s", fname_mat.c_str()); - return -1; - } - unsigned nnz(iA[n]); - if (verbose) { - INFO("Parameters read: n=%d, nnz=%d", n, nnz); - } - - MathLib::CRSMatrixReordered mat(n, iA, jA, A); - - double *x(new double[n]); - double *y(new double[n]); - - for (unsigned k(0); k<n; ++k) - x[k] = 1.0; - - // create time measurement objects - BaseLib::RunTime run_timer; - BaseLib::CPUTime cpu_timer; - - // calculate the nested dissection reordering - if (verbose) { - INFO("*** calculating nested dissection (ND) permutation of matrix ..."); - } - run_timer.start(); - cpu_timer.start(); - MathLib::Cluster cluster_tree(n, iA, jA); - unsigned *op_perm(new unsigned[n]); - unsigned *po_perm(new unsigned[n]); - for (unsigned k(0); k<n; k++) - op_perm[k] = po_perm[k] = k; - cluster_tree.createClusterTree(op_perm, po_perm, 1000); - cpu_timer.stop(); - run_timer.stop(); - if (verbose) { - INFO("\t[ND] - took %e sec \t%e sec", cpu_timer.elapsed(), run_timer.elapsed()); - } - - // applying the nested dissection reordering - if (verbose) { - INFO("\t[ND] applying nested dissection permutation to FEM matrix ... "); - } - run_timer.start(); - cpu_timer.start(); - mat.reorderMatrix(op_perm, po_perm); - cpu_timer.stop(); - run_timer.stop(); - if (verbose) { - INFO("\t[ND]: - took %e sec\t%e sec", cpu_timer.elapsed(), run_timer.elapsed()); - } - -#ifndef NDEBUG -// 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) { - INFO("*** matrix vector multiplication (MVM) with Toms amuxCRS ... "); - } - run_timer.start(); - cpu_timer.start(); - for (size_t k(0); k<n_mults; k++) { - mat.amux (1.0, x, y); - } - cpu_timer.stop(); - run_timer.stop(); - - if (verbose) { - INFO("\t[MVM] - took %e sec\t %e sec", cpu_timer.elapsed(), run_timer.elapsed()); - } - - delete [] x; - delete [] y; - - return 0; -}