From 0edd0646a658b6a7b2b702b9b6594d10d239a196 Mon Sep 17 00:00:00 2001 From: Tom Deakin Date: Thu, 16 Jul 2015 18:29:42 +0100 Subject: [PATCH] OCL: select number to times from CLI --- ocl-stream.cpp | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/ocl-stream.cpp b/ocl-stream.cpp index 008db95..0ec8332 100644 --- a/ocl-stream.cpp +++ b/ocl-stream.cpp @@ -12,7 +12,7 @@ #define DATATYPE double unsigned int ARRAY_SIZE = 50000000; -#define NTIMES 10 +unsigned int NTIMES = 10; #define MIN(a,b) ((a) < (b)) ? (a) : (b) #define MAX(a,b) ((a) > (b)) ? (a) : (b) @@ -48,6 +48,14 @@ struct invaliddevice : public std::exception } }; +struct badntimes : public std::exception +{ + virtual const char * what () const throw () + { + return "Chosen number of times is invalid, must be >= 2"; + } +}; + size_t sizes[4] = { 2 * sizeof(DATATYPE) * ARRAY_SIZE, 2 * sizeof(DATATYPE) * ARRAY_SIZE, @@ -120,6 +128,8 @@ int main(int argc, char *argv[]) { parseArguments(argc, argv); + if (NTIMES < 2) throw badntimes(); + // Open the Kernel source std::ifstream in("ocl-stream-kernels.cl"); if (!in.is_open()) throw badfile(); @@ -385,6 +395,14 @@ void parseArguments(int argc, char *argv[]) exit(1); } } + else if (!strcmp(argv[i], "--numtimes") || !strcmp(argv[i], "-n")) + { + if (++i >= argc || !parseUInt(argv[i], &NTIMES)) + { + std::cout << "Invalid number of times" << std::endl; + exit(1); + } + } else if (!strcmp(argv[i], "--help") || !strcmp(argv[i], "-h")) { std::cout << std::endl; @@ -394,6 +412,7 @@ void parseArguments(int argc, char *argv[]) std::cout << " --list List available devices" << std::endl; std::cout << " --device INDEX Select device at INDEX" << std::endl; std::cout << " -s --arraysize SIZE Use SIZE elements in the array" << std::endl; + std::cout << " -n --numtimes NUM Run the test NUM times (NUM >= 2)" << std::endl; std::cout << std::endl; exit(0); }