diff --git a/SimpleTests/MatrixTests/MatMult.cpp b/SimpleTests/MatrixTests/MatMult.cpp index bd51cd6676da0d74ea7c84fe885423fce47e2e2c..0dbe86d9d99e7485db35a85a6efac2bc6ef29966 100644 --- a/SimpleTests/MatrixTests/MatMult.cpp +++ b/SimpleTests/MatrixTests/MatMult.cpp @@ -46,12 +46,12 @@ int main(int argc, char *argv[]) timer.start(); CS_read(in, n, iA, jA, A); timer.stop(); - DBUG("ok, %n s", timer.elapsed()); + DBUG("ok, %e s", timer.elapsed()); } else { ERR("error reading matrix from %s", fname_mat.c_str()); } unsigned nnz(iA[n]); - INFO("Parameters read: n=%n, nnz=%n", n, nnz); + INFO("Parameters read: n=%i, nnz=%i", n, nnz); #ifdef _OPENMP omp_set_num_threads(n_threads); @@ -60,7 +60,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("%n x %n", mat.getNRows(), mat.getNCols()); + INFO("%i x %i", mat.getNRows(), mat.getNCols()); double *x(new double[n]); double *y(new double[n]); @@ -68,7 +68,7 @@ int main(int argc, char *argv[]) for (unsigned k(0); k<n; ++k) x[k] = 1.0; - DBUG("matrix vector multiplication with Toms amuxCRS (%n threads) ...", n_threads); + DBUG("matrix vector multiplication with Toms amuxCRS (%i threads) ...", n_threads); BaseLib::RunTime run_timer; BaseLib::CPUTime cpu_timer; run_timer.start(); @@ -79,9 +79,9 @@ int main(int argc, char *argv[]) cpu_timer.stop(); run_timer.stop(); - DBUG("done [%n sec cpu time], [%n sec run time]", cpu_timer.elapsed(), run_timer.elapsed()); - DBUG("CPU time: %n", cpu_timer.elapsed()); - DBUG("wclock time: %n", run_timer.elapsed()); + DBUG("done [%e sec cpu time], [%e sec run time]", cpu_timer.elapsed(), run_timer.elapsed()); + DBUG("CPU time: %e", cpu_timer.elapsed()); + DBUG("wclock time: %e", run_timer.elapsed()); if (argc == 5) { std::ofstream result_os (argv[4], std::ios::app); @@ -90,7 +90,7 @@ int main(int argc, char *argv[]) } result_os.close(); } else { - INFO("%n \t %n", cpu_timer.elapsed(), run_timer.elapsed()); + INFO("%e \t %e", cpu_timer.elapsed(), run_timer.elapsed()); } diff --git a/SimpleTests/MatrixTests/MatVecMultPerm.cpp b/SimpleTests/MatrixTests/MatVecMultPerm.cpp index 5598ea1434908d14663f29b73442201ff77a20a1..0d608bf16844b2ee66c0515c916cdb1efcb87e6b 100644 --- a/SimpleTests/MatrixTests/MatVecMultPerm.cpp +++ b/SimpleTests/MatrixTests/MatVecMultPerm.cpp @@ -10,6 +10,7 @@ // BaseLib #include "RunTime.h" #include "CPUTime.h" +#include "tclap/CmdLine.h" // MathLib #include "sparse.h" @@ -21,18 +22,35 @@ int main(int argc, char *argv[]) { - if (argc < 4) { - std::cout << "Usage: " << argv[0] << " matrix number_of_multiplications resultfile" << std::endl; - return 1; - } + TCLAP::CmdLine cmd("Simple matrix vector multiplication test", ' ', "0.1"); - // read the number of multiplication to execute - unsigned n_mults (0); - n_mults = atoi (argv[2]); + // 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"); + + // 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 ); - std::string fname_mat (argv[1]); + TCLAP::ValueArg<unsigned> n_mults_arg("n", "number-of-multiplications", "number of multiplications to perform", true, 10, "unsigned"); + cmd.add( n_mults_arg ); - bool verbose (false); + 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()); // *** reading matrix in crs format from file std::ifstream in(fname_mat.c_str(), std::ios::in | std::ios::binary); @@ -87,8 +105,8 @@ int main(int argc, char *argv[]) if (verbose) { std::cout << cpu_timer.elapsed() << "\t" << run_timer.elapsed() << std::endl; } else { - if (argc == 4) { - std::ofstream result_os(argv[3], std::ios::app); + if (! output_arg.getValue().empty()) { + std::ofstream result_os(output_arg.getValue().c_str(), std::ios::app); if (result_os) { result_os << cpu_timer.elapsed() << "\t" << run_timer.elapsed() << " calc nested dissection perm" << std::endl; } @@ -110,8 +128,8 @@ int main(int argc, char *argv[]) run_timer.stop(); if (verbose) std::cout << cpu_timer.elapsed() << "\t" << run_timer.elapsed() << std::endl; else { - if (argc == 4) { - std::ofstream result_os(argv[3], std::ios::app); + if (! ((output_arg.getValue()).empty())) { + std::ofstream result_os((output_arg.getValue()).c_str(), std::ios::app); if (result_os) { result_os << cpu_timer.elapsed() << "\t" << run_timer.elapsed() << " applying nested dissection perm" << std::endl; } @@ -153,8 +171,8 @@ int main(int argc, char *argv[]) std::cout << "done [" << cpu_timer.elapsed() << " sec cpu time], [wclock: " << run_timer.elapsed() << " sec]" << std::endl; } else { - if (argc == 4) { - std::ofstream result_os (argv[3], std::ios::app); + if (! output_arg.getValue().empty()) { + std::ofstream result_os (output_arg.getValue().c_str(), std::ios::app); if (result_os) { result_os << cpu_timer.elapsed() << "\t" << run_timer.elapsed() << " " << n_mults << " MatVecMults, matrix " << fname_mat << std::endl; }