diff src/test/twice.cc @ 300:8bbc0012e1a4

checkErrors on an example
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 12 Feb 2017 09:12:21 +0900
parents b387b224790c
children 609bf62768b9
line wrap: on
line diff
--- a/src/test/twice.cc	Sun Feb 12 08:36:22 2017 +0900
+++ b/src/test/twice.cc	Sun Feb 12 09:12:21 2017 +0900
@@ -43,6 +43,9 @@
         if (strcmp(argv[i], "--stream") == 0 || strcmp(argv[i], "-s") == 0) {
             num_stream = atoi(argv[++i]);
         }
+        if (strcmp(argv[i], "--numExec") == 0 || strcmp(argv[i], "-e") == 0) {
+            num_exec = atoi(argv[++i]);
+        }
     }
 
     // initialize and load kernel
@@ -57,8 +60,10 @@
     checkCudaErrors(cuCtxCreate(&context, CU_CTX_SCHED_SPIN, device));
     checkCudaErrors(cuModuleLoad(&module, "multiply.ptx"));
     checkCudaErrors(cuModuleGetFunction(&function, module, "multiply"));
-    for (int i=0;i<num_stream;i++)
-        checkCudaErrors(cuStreamCreate(&stream[i],0));
+    if (num_stream) {
+        for (int i=0;i<num_stream;i++)
+            checkCudaErrors(cuStreamCreate(&stream[i],0));
+    }
 
     // memory allocate
     CUdeviceptr devA;
@@ -94,7 +99,11 @@
          if (num_stream <= cur)
              cur = 0;
          B[i] = (float)(i+1);
-         checkCudaErrors(cuMemcpyHtoDAsync(devB[i], &B[i], sizeof(float), stream[cur]));
+         if (num_stream) {
+             checkCudaErrors(cuMemcpyHtoDAsync(devB[i], &B[i], sizeof(float), stream[cur]));
+         } else {
+             checkCudaErrors(cuMemcpyHtoD(devB[i], &B[i], sizeof(float)));
+         }
      }
 
     cur = 0;
@@ -120,7 +129,11 @@
      for (int i=0;i<num_exec;i++,cur++) {
          if (num_stream <= cur)
              cur = 0;
-         checkCudaErrors(cuMemcpyDtoHAsync(result[i], devOut[i], LENGTH*THREAD*sizeof(float), stream[cur]));
+         if (num_stream) {
+             checkCudaErrors(cuMemcpyDtoHAsync(result[i], devOut[i], LENGTH*THREAD*sizeof(float), stream[cur]));
+         } else {
+             checkCudaErrors(cuMemcpyDtoH(result[i], devOut[i], LENGTH*THREAD*sizeof(float)));
+         }
      }
     
     // wait for stream