summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhenyu Wang <zhenyuw@linux.intel.com>2014-10-24 11:26:57 +0800
committerZhenyu Wang <zhenyuw@linux.intel.com>2014-10-24 11:26:57 +0800
commit41966d1b58f162a57a9aa625cb65e47f02bf9d63 (patch)
tree1cf6655f5d0e7330326e38e0636e26c6bd814247
parent6fa69f4194386a9c04cd5175d046220af06a066e (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.cpp162
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