diff options
author | Zhenyu Wang <zhenyuw@linux.intel.com> | 2014-10-24 11:26:57 +0800 |
---|---|---|
committer | Zhenyu Wang <zhenyuw@linux.intel.com> | 2014-10-24 11:26:57 +0800 |
commit | 41966d1b58f162a57a9aa625cb65e47f02bf9d63 (patch) | |
tree | 1cf6655f5d0e7330326e38e0636e26c6bd814247 | |
parent | 6fa69f4194386a9c04cd5175d046220af06a066e (diff) |
Add options to run case separately
As run through all cases take long time, provide option to select
case to run.
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
-rw-r--r-- | MPBenchmarks/appMain.cpp | 162 |
1 files changed, 113 insertions, 49 deletions
diff --git a/MPBenchmarks/appMain.cpp b/MPBenchmarks/appMain.cpp index 2f18ec7..6a3fe6d 100644 --- a/MPBenchmarks/appMain.cpp +++ b/MPBenchmarks/appMain.cpp @@ -48,7 +48,7 @@ void print(Logger * log,const TestResult & r,int minLogSize,int maxLogSize) void help(void) { - std::cout<<"Usage: tocl [-cpu]/[-gpu]\n"; + std::cout<<"Usage: tocl {-cpu | -gpu} [-copy|-add|-zero|-mul]\n"; } int main(int argc,char ** argv) @@ -71,8 +71,13 @@ int main(int argc,char ** argv) int do_cpu = 0; int do_gpu = 0; + int do_all = 0; + int do_copy = 0; + int do_add = 0; + int do_zero = 0; + int do_mul = 0; - if (argc != 2) { + if (argc < 2) { help(); return -1; } @@ -83,13 +88,30 @@ int main(int argc,char ** argv) if (!strcmp(argv[1], "-gpu")) do_gpu = 1; - if ((do_cpu == 0 && do_gpu == 0) || - (do_cpu == 1 && do_gpu == 1)) { + if (do_cpu == do_gpu) { help(); return -1; } + if (argc == 2) + do_all = 1; + else { + int i = 2; + while (argv[i]) { + if (!strcmp(argv[i], "-copy")) + do_copy = 1; + if (!strcmp(argv[i], "-add")) + do_add = 1; + if (!strcmp(argv[i], "-zero")) + do_zero = 1; + if (!strcmp(argv[i], "-mul")) + do_mul = 1; + i++; + } + } + if (do_gpu) { + // Display device info cl::Context * c = cl::Context::create(); if (c != 0) @@ -125,44 +147,62 @@ int main(int argc,char ** argv) switch (task) { case 0: - title.assign("CPU copyN"); - g = new CopyCPUTask(); + if (do_all || do_copy) { + title.assign("CPU copyN"); + g = new CopyCPUTask(); + } break; case 1: - title.assign("CPU zeroN"); - g = new ZeroCPUTask(); + if (do_all || do_zero) { + title.assign("CPU zeroN"); + g = new ZeroCPUTask(); + } break; case 10: - title.assign("CPU addN v1 16-bit"); - g = new AddNCPUTask(ADDN_V1,16); + if (do_all || do_add) { + title.assign("CPU addN v1 16-bit"); + g = new AddNCPUTask(ADDN_V1,16); + } break; case 11: - title.assign("CPU addN v1 32-bit"); - g = new AddNCPUTask(ADDN_V1,32); + if (do_all || do_add) { + title.assign("CPU addN v1 32-bit"); + g = new AddNCPUTask(ADDN_V1,32); + } break; case 12: - title.assign("CPU addN v1 64-bit"); - g = new AddNCPUTask(ADDN_V1,64); + if (do_all || do_add) { + title.assign("CPU addN v1 64-bit"); + g = new AddNCPUTask(ADDN_V1,64); + } break; case 20: - title.assign("CPU addN v2 16-bit"); - g = new AddNCPUTask(ADDN_V2,16); + if (do_all || do_add) { + title.assign("CPU addN v2 16-bit"); + g = new AddNCPUTask(ADDN_V2,16); + } break; case 21: - title.assign("CPU addN v2 32-bit"); - g = new AddNCPUTask(ADDN_V2,32); + if (do_all || do_add) { + title.assign("CPU addN v2 32-bit"); + g = new AddNCPUTask(ADDN_V2,32); + } break; case 22: - title.assign("CPU addN v2 64-bit"); - g = new AddNCPUTask(ADDN_V2,64); + if (do_all || do_add) { + title.assign("CPU addN v2 64-bit"); + g = new AddNCPUTask(ADDN_V2,64); + } break; #ifndef Linux case 30: - title.assign("CPU addN v3 32-bit"); - g = new AddNCPUTask(ADDN_V3,32); + if (do_all || do_add) { + title.assign("CPU addN v3 32-bit"); + g = new AddNCPUTask(ADDN_V3,32); + } break; #endif } @@ -213,57 +253,81 @@ int main(int argc,char ** argv) switch (task) { case 0: - title.assign("Host to device copy"); - g = new CopyGPUTask(CopyGPUTask::HOST_TO_DEVICE_COPY,log); - minWorkgroupSize = maxWorkgroupSize; + if (do_all || do_copy) { + title.assign("Host to device copy"); + g = new CopyGPUTask(CopyGPUTask::HOST_TO_DEVICE_COPY,log); + minWorkgroupSize = maxWorkgroupSize; + } break; case 1: - title.assign("Device to host copy"); - g = new CopyGPUTask(CopyGPUTask::DEVICE_TO_HOST_COPY,log); - minWorkgroupSize = maxWorkgroupSize; + if (do_all || do_copy) { + title.assign("Device to host copy"); + g = new CopyGPUTask(CopyGPUTask::DEVICE_TO_HOST_COPY,log); + minWorkgroupSize = maxWorkgroupSize; + } break; case 2: - title.assign("copyN"); - g = new CopyGPUTask(CopyGPUTask::DEVICE_TO_DEVICE_COPY,log); - minWorkgroupSize = maxWorkgroupSize; + if (do_all || do_copy) { + title.assign("copyN"); + g = new CopyGPUTask(CopyGPUTask::DEVICE_TO_DEVICE_COPY,log); + minWorkgroupSize = maxWorkgroupSize; + } break; case 3: - title.assign("zeroN 32-bit"); - g = new ZeroGPUTask(32,log); + if (do_all || do_zero) { + title.assign("zeroN 32-bit"); + g = new ZeroGPUTask(32,log); + } break; case 4: - title.assign("zeroN 64-bit"); - g = new ZeroGPUTask(64,log); + if (do_all || do_zero) { + title.assign("zeroN 64-bit"); + g = new ZeroGPUTask(64,log); + } break; case 10: - title.assign("AddN v1 16-bit"); - g = new AddNGPUTask(ADDN_V1,16,log); + if (do_all || do_add) { + title.assign("AddN v1 16-bit"); + g = new AddNGPUTask(ADDN_V1,16,log); + } break; case 11: - title.assign("AddN v1 32-bit"); - g = new AddNGPUTask(ADDN_V1,32,log); + if (do_all || do_add) { + title.assign("AddN v1 32-bit"); + g = new AddNGPUTask(ADDN_V1,32,log); + } break; case 12: - title.assign("AddN v1 64-bit"); - g = new AddNGPUTask(ADDN_V1,64,log); + if (do_all || do_add) { + title.assign("AddN v1 64-bit"); + g = new AddNGPUTask(ADDN_V1,64,log); + } break; case 20: - title.assign("AddN v2 16-bit"); - g = new AddNGPUTask(ADDN_V2,16,log); + if (do_all || do_add) { + title.assign("AddN v2 16-bit"); + g = new AddNGPUTask(ADDN_V2,16,log); + } break; case 21: - title.assign("AddN v2 32-bit"); - g = new AddNGPUTask(ADDN_V2,32,log); + if (do_all || do_add) { + title.assign("AddN v2 32-bit"); + g = new AddNGPUTask(ADDN_V2,32,log); + } break; case 22: - title.assign("AddN v2 64-bit"); - g = new AddNGPUTask(ADDN_V2,64,log); + if (do_all || do_add) { + title.assign("AddN v2 64-bit"); + g = new AddNGPUTask(ADDN_V2,64,log); + } break; case 40: - title.assign("Mul1 v1 32-bit"); - g = new Mul1GPUTask(MUL1_V1,1,log); + if (do_all || do_mul) { + title.assign("Mul1 v1 32-bit"); + g = new Mul1GPUTask(MUL1_V1,1,log); + } break; } if (g == 0) continue; // nothing to do |