From 2f776d51c65be46b04eded605b3756a554e6bcad Mon Sep 17 00:00:00 2001 From: Peter Boyle Date: Thu, 5 Jul 2018 06:58:37 -0400 Subject: [PATCH] Gpu specific benchmark saturates memory. Can enhance Grid to do this for expressions, but a bitof (known) work. --- benchmarks/Benchmark_su3_gpu.cc | 420 ++++++++++++++++++++++++++++++++ 1 file changed, 420 insertions(+) create mode 100644 benchmarks/Benchmark_su3_gpu.cc diff --git a/benchmarks/Benchmark_su3_gpu.cc b/benchmarks/Benchmark_su3_gpu.cc new file mode 100644 index 00000000..34017ed8 --- /dev/null +++ b/benchmarks/Benchmark_su3_gpu.cc @@ -0,0 +1,420 @@ +/************************************************************************************* + + Grid physics library, www.github.com/paboyle/Grid + + Source file: ./benchmarks/Benchmark_su3.cc + + Copyright (C) 2015 + +Author: Peter Boyle +Author: Peter Boyle + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + See the full license in the file "LICENSE" in the top level distribution directory + *************************************************************************************/ + /* END LEGAL */ +#include + +using namespace std; +using namespace Grid; + + +int main (int argc, char ** argv) +{ + Grid_init(&argc,&argv); + +#define LMIN (16) +#define LMAX (48) +#define LADD (8) + + int64_t Nwarm=20; + int64_t Nloop=500; + + Coordinate simd_layout = GridDefaultSimd(Nd,vComplex::Nsimd()); + Coordinate mpi_layout = GridDefaultMpi(); + + int64_t threads = GridThread::GetThreads(); + std::cout<({45,12,81,9})); + + LatticeColourMatrix z(&Grid);// random(pRNG,z); + LatticeColourMatrix x(&Grid);// random(pRNG,x); + LatticeColourMatrix y(&Grid);// random(pRNG,y); + + auto x_v = x.View(); + auto y_v = y.View(); + auto z_v = z.View(); + const uint64_t Nsite = x_v.size(); + const uint64_t nsimd = vComplex::Nsimd(); + const uint64_t NN = Nsite*nsimd; + for(int64_t i=0;i({45,12,81,9})); + + LatticeColourMatrix z(&Grid);// random(pRNG,z); + LatticeColourMatrix x(&Grid);// random(pRNG,x); + LatticeColourMatrix y(&Grid);// random(pRNG,y); + + auto x_v = x.View(); + auto y_v = y.View(); + auto z_v = z.View(); + const uint64_t Nsite = x_v.size(); + const uint64_t nsimd = vComplex::Nsimd(); + const uint64_t NN = Nsite*nsimd; + for(int64_t i=0;i({45,12,81,9})); + + LatticeColourMatrix z(&Grid);// random(pRNG,z); + LatticeColourMatrix x(&Grid);// random(pRNG,x); + LatticeColourMatrix y(&Grid);// random(pRNG,y); + + auto x_v = x.View(); + auto y_v = y.View(); + auto z_v = z.View(); + const uint64_t Nsite = x_v.size(); + const uint64_t nsimd = vComplex::Nsimd(); + const uint64_t NN = Nsite*nsimd; + for(int64_t i=0;i({45,12,81,9})); + + LatticeColourMatrix z(&Grid);// random(pRNG,z); + LatticeColourMatrix x(&Grid);// random(pRNG,x); + LatticeColourMatrix y(&Grid);// random(pRNG,y); + LatticeColourMatrix w(&Grid);// random(pRNG,y); + + auto x_v = x.View(); + auto y_v = y.View(); + auto z_v = z.View(); + auto w_v = z.View(); + const uint64_t Nsite = x_v.size(); + const uint64_t nsimd = vComplex::Nsimd(); + const uint64_t NN = Nsite*nsimd; + for(int64_t i=0;i({45,12,81,9})); + + LatticeColourMatrix z(&Grid); random(pRNG,z); + LatticeColourMatrix x(&Grid); random(pRNG,x); + LatticeColourMatrix y(&Grid); random(pRNG,y); + + for(int64_t i=0;i({45,12,81,9})); + + LatticeColourMatrix z(&Grid); random(pRNG,z); + LatticeColourMatrix x(&Grid); random(pRNG,x); + LatticeColourMatrix y(&Grid); random(pRNG,y); + + for(int64_t i=0;i({45,12,81,9})); + + LatticeColourMatrix z(&Grid); random(pRNG,z); + LatticeColourMatrix x(&Grid); random(pRNG,x); + LatticeColourMatrix y(&Grid); random(pRNG,y); + + for(int64_t i=0;i({45,12,81,9})); + + LatticeColourMatrix z(&Grid); random(pRNG,z); + LatticeColourMatrix x(&Grid); random(pRNG,x); + LatticeColourMatrix y(&Grid); random(pRNG,y); + + for(int64_t i=0;i