diff --git a/Grid/Benchmark_Grid.cpp b/Grid/Benchmark_Grid.cpp index 9fd4ced..35dc9c1 100644 --- a/Grid/Benchmark_Grid.cpp +++ b/Grid/Benchmark_Grid.cpp @@ -84,16 +84,10 @@ class Benchmark { int threads = GridThread::GetThreads(); - std::cout << GridLogMessage - << "=======================================================================" - "===========" - << std::endl; + grid_big_sep(); std::cout << GridLogMessage << "= Grid is setup to use " << threads << " threads" << std::endl; - std::cout << GridLogMessage - << "=======================================================================" - "===========" - << std::endl; + grid_big_sep(); std::cout << GridLogMessage << "Grid Default Decomposition patterns\n"; std::cout << GridLogMessage << "\tOpenMP threads : " << GridThread::GetThreads() << std::endl; @@ -141,16 +135,10 @@ class Benchmark std::vector t_time(Nloop); time_statistics timestat; - std::cout << GridLogMessage - << "=======================================================================" - "=============================" - << std::endl; + grid_big_sep(); std::cout << GridLogMessage << "= Benchmarking threaded STENCIL halo exchange in " << nmu << " dimensions" << std::endl; - std::cout << GridLogMessage - << "=======================================================================" - "=============================" - << std::endl; + grid_big_sep(); grid_printf("%5s %5s %15s %15s %15s %15s %15s\n", "L", "dir", "payload (B)", "time (usec)", "rate (GB/s)", "std dev", "max"); @@ -245,15 +233,9 @@ class Benchmark Coordinate simd_layout = GridDefaultSimd(Nd, vReal::Nsimd()); Coordinate mpi_layout = GridDefaultMpi(); - std::cout << GridLogMessage - << "=======================================================================" - "===========" - << std::endl; + grid_big_sep(); std::cout << GridLogMessage << "= Benchmarking a*x + y bandwidth" << std::endl; - std::cout << GridLogMessage - << "=======================================================================" - "===========" - << std::endl; + grid_big_sep(); std::cout << GridLogMessage << " L " << "\t\t" << "bytes" @@ -263,9 +245,6 @@ class Benchmark << "Gflop/s" << "\t\t seconds" << "\t\tGB/s / node" << std::endl; - std::cout << GridLogMessage - << "----------------------------------------------------------" - << std::endl; // uint64_t NP; uint64_t NN; @@ -332,15 +311,9 @@ class Benchmark Coordinate simd_layout = GridDefaultSimd(Nd, vComplexF::Nsimd()); Coordinate mpi_layout = GridDefaultMpi(); - std::cout << GridLogMessage - << "=======================================================================" - "===========" - << std::endl; + grid_big_sep(); std::cout << GridLogMessage << "= Benchmarking z = y*x SU(4) bandwidth" << std::endl; - std::cout << GridLogMessage - << "=======================================================================" - "===========" - << std::endl; + grid_big_sep(); std::cout << GridLogMessage << " L " << "\t\t" << "bytes" @@ -350,9 +323,6 @@ class Benchmark << "Gflop/s" << "\t\t seconds" << "\t\tGB/s / node" << std::endl; - std::cout << GridLogMessage - << "----------------------------------------------------------" - << std::endl; uint64_t NN; @@ -433,10 +403,7 @@ class Benchmark uint64_t SHM = NP / NN; ///////// Welcome message //////////// - std::cout << GridLogMessage - << "=======================================================================" - "===========" - << std::endl; + grid_big_sep(); std::cout << GridLogMessage << "Benchmark DWF on " << L << "^4 local volume " << std::endl; std::cout << GridLogMessage << "* Nc : " << Nc << std::endl; @@ -449,10 +416,7 @@ class Benchmark std::cout << GridLogMessage << "* ranks geom : " << GridCmdVectorIntToString(mpi) << std::endl; std::cout << GridLogMessage << "* Using " << threads << " threads" << std::endl; - std::cout << GridLogMessage - << "=======================================================================" - "===========" - << std::endl; + grid_big_sep(); ///////// Lattice Init //////////// GridCartesian *UGrid = SpaceTimeGrid::makeFourDimGrid( @@ -511,10 +475,7 @@ class Benchmark WilsonKernelsStatic::Opt = Cases[c].Opt; CartesianCommunicator::SetCommunicatorPolicy(Cases[c].CommsAsynch); - std::cout << GridLogMessage - << "===================================================================" - "===============" - << std::endl; + grid_small_sep(); if (WilsonKernelsStatic::Opt == WilsonKernelsStatic::OptGeneric) std::cout << GridLogMessage << "* Using GENERIC Nc WilsonKernels" << std::endl; if (WilsonKernelsStatic::Comms == WilsonKernelsStatic::CommsAndCompute) @@ -522,10 +483,7 @@ class Benchmark if (WilsonKernelsStatic::Comms == WilsonKernelsStatic::CommsThenCompute) std::cout << GridLogMessage << "* Using sequential Comms/Compute" << std::endl; std::cout << GridLogMessage << "* SINGLE precision " << std::endl; - std::cout << GridLogMessage - << "===================================================================" - "===============" - << std::endl; + grid_small_sep(); int nwarm = 10; double t0 = usecond(); @@ -598,10 +556,7 @@ class Benchmark << "Deo mflop/s per node " << mflops / NN << std::endl; } - std::cout << GridLogMessage - << "=====================================================================" - "=============" - << std::endl; + grid_small_sep(); std::cout << GridLogMessage << L << "^4 x " << Ls << " Deo Best mflop/s = " << mflops_best << " ; " << mflops_best / NN << " per node " << std::endl; @@ -616,10 +571,6 @@ class Benchmark std::cout << mflops_all[i] / NN << " ; "; } std::cout << std::endl; - std::cout << GridLogMessage - << "=====================================================================" - "=============" - << std::endl; } return mflops_best; } @@ -649,10 +600,7 @@ class Benchmark uint64_t SHM = NP / NN; ///////// Welcome message //////////// - std::cout << GridLogMessage - << "=======================================================================" - "===========" - << std::endl; + grid_big_sep(); std::cout << GridLogMessage << "Benchmark ImprovedStaggered on " << L << "^4 local volume " << std::endl; std::cout << GridLogMessage @@ -663,10 +611,7 @@ class Benchmark std::cout << GridLogMessage << "* ranks geom : " << GridCmdVectorIntToString(mpi) << std::endl; std::cout << GridLogMessage << "* Using " << threads << " threads" << std::endl; - std::cout << GridLogMessage - << "=======================================================================" - "===========" - << std::endl; + grid_big_sep(); ///////// Lattice Init //////////// GridCartesian *FGrid = SpaceTimeGrid::makeFourDimGrid( @@ -728,10 +673,7 @@ class Benchmark StaggeredKernelsStatic::Opt = Cases[c].Opt; CartesianCommunicator::SetCommunicatorPolicy(Cases[c].CommsAsynch); - std::cout << GridLogMessage - << "===================================================================" - "===============" - << std::endl; + grid_small_sep(); if (StaggeredKernelsStatic::Opt == StaggeredKernelsStatic::OptGeneric) std::cout << GridLogMessage << "* Using GENERIC Nc StaggeredKernels" << std::endl; @@ -740,10 +682,7 @@ class Benchmark if (StaggeredKernelsStatic::Comms == StaggeredKernelsStatic::CommsThenCompute) std::cout << GridLogMessage << "* Using sequential Comms/Compute" << std::endl; std::cout << GridLogMessage << "* SINGLE precision " << std::endl; - std::cout << GridLogMessage - << "===================================================================" - "===============" - << std::endl; + grid_small_sep(); int nwarm = 10; double t0 = usecond(); @@ -757,9 +696,6 @@ class Benchmark uint64_t ncall = 500; FGrid->Broadcast(0, &ncall, sizeof(ncall)); - - // std::cout << GridLogMessage << " Estimate " << ncall << " calls per - // second"<. #define GRID_MSG_MAXSIZE 1024 #endif +#define GRID_BIG_SEP \ + "===============================================================================" +#define GRID_SMALL_SEP "------------------------------------------" + +#define grid_big_sep() \ + { \ + GRID_MSG << GRID_BIG_SEP << std::endl; \ + } + +#define grid_small_sep() \ + { \ + GRID_MSG << GRID_SMALL_SEP << std::endl; \ + } + #define grid_printf(...) \ { \ char _buf[GRID_MSG_MAXSIZE]; \