diff --git a/llvm/test/VISC/parboil/benchmarks/sgemm/src/opencl_base/main.cc b/llvm/test/VISC/parboil/benchmarks/sgemm/src/opencl_base/main.cc
index 6360dfb6433c8ff93b5eea70d24221b74ca7d1e9..4d199149e29953b834253881faa60202fa29a7fb 100644
--- a/llvm/test/VISC/parboil/benchmarks/sgemm/src/opencl_base/main.cc
+++ b/llvm/test/VISC/parboil/benchmarks/sgemm/src/opencl_base/main.cc
@@ -102,6 +102,7 @@ int main (int argc, char *argv[]) {
       exit(-1);
     }
 
+  pb_SwitchToTimer(&timers, visc_TimerID_SETUP);
   cl_int clStatus;
   cl_platform_id clPlatform;
   clStatus = clGetPlatformIDs(1,&clPlatform,NULL);
@@ -139,14 +140,13 @@ int main (int argc, char *argv[]) {
   // load A
   readColMajorMatrixFile(params->inpFiles[0],
       matArow, matAcol, matA);
-  // copy A to device memory
-  A_sz = matArow*matAcol*sizeof(float);
-
   // load B^T
   readColMajorMatrixFile(params->inpFiles[2],
       matBcol, matBrow, matBT);
 
   pb_SwitchToTimer( &timers, pb_TimerID_COMPUTE );
+  // copy A to device memory
+  A_sz = matArow*matAcol*sizeof(float);
   B_sz = matBrow*matBcol*sizeof(float);
 
   // allocate space for C
@@ -154,6 +154,8 @@ int main (int argc, char *argv[]) {
 
   // OpenCL memory allocation
   std::vector<float> matC(matArow*matBcol);
+  
+  pb_SwitchToTimer( &timers, pb_TimerID_COPY );
   cl_mem dA = clCreateBuffer(clContext,CL_MEM_READ_ONLY,A_sz,NULL,&clStatus);
   CHECK_ERROR("clCreateBuffer")
   cl_mem dB = clCreateBuffer(clContext,CL_MEM_READ_ONLY,B_sz,NULL,&clStatus);
@@ -174,6 +176,7 @@ int main (int argc, char *argv[]) {
   clStatus = clEnqueueWriteBuffer(clCommandQueue,dC,CL_TRUE,0,C_sz,&matC.front(),0,NULL,NULL);
   CHECK_ERROR("clEnqueueWriteBuffer")
 
+  pb_SwitchToTimer( &timers, pb_TimerID_COMPUTE );
   pb_SwitchToTimer( &timers, pb_TimerID_KERNEL );
 
   // Use standard sgemm interface
diff --git a/llvm/test/VISC/parboil/benchmarks/sgemm/src/visc/main.cc b/llvm/test/VISC/parboil/benchmarks/sgemm/src/visc/main.cc
index 81d791568b45f1f2befc7c0636ee239a98928621..23d89aeb1626ce25bf387d9f17125e4d203dbbb0 100644
--- a/llvm/test/VISC/parboil/benchmarks/sgemm/src/visc/main.cc
+++ b/llvm/test/VISC/parboil/benchmarks/sgemm/src/visc/main.cc
@@ -108,14 +108,14 @@ int main (int argc, char *argv[]) {
     // load A
     readColMajorMatrixFile(params->inpFiles[0],
                            matArow, matAcol, matA);
-    // copy A to device memory
-    A_sz = matArow*matAcol*sizeof(float);
 
     // load B^T
     readColMajorMatrixFile(params->inpFiles[2],
                            matBcol, matBrow, matBT);
 
     pb_SwitchToTimer( &timers, pb_TimerID_COMPUTE );
+    // copy A to device memory
+    A_sz = matArow*matAcol*sizeof(float);
     B_sz = matBrow*matBcol*sizeof(float);
 
     // allocate space for C
@@ -133,7 +133,7 @@ int main (int argc, char *argv[]) {
     for(size_t i=0; i<matC.size(); i++)
         matC[i] = 0.0f;
 
-    pb_SwitchToTimer( &timers, pb_TimerID_KERNEL );
+    pb_SwitchToTimer( &timers, pb_TimerID_NONE );
 
     // Use standard sgemm interface
     basicSgemm('N', 'T', matArow, matBcol, matAcol, 1.0f, \
@@ -149,6 +149,7 @@ int main (int argc, char *argv[]) {
                                 matArow, matBcol, matC);
     }
 
+    pb_SwitchToTimer( &timers, visc_TimerID_MEM_UNTRACK );
     llvm_visc_untrack_mem(&matA.front());
     llvm_visc_untrack_mem(&matBT.front());
     llvm_visc_untrack_mem(&matC.front());
diff --git a/llvm/test/VISC/parboil/benchmarks/spmv/src/visc/main.c b/llvm/test/VISC/parboil/benchmarks/spmv/src/visc/main.c
index 78cef8f7af9fc73944add96b31b2f1af32e3cff6..cf153ac4d47cb09f51b18d1b484e4d778a1ea88f 100644
--- a/llvm/test/VISC/parboil/benchmarks/spmv/src/visc/main.c
+++ b/llvm/test/VISC/parboil/benchmarks/spmv/src/visc/main.c
@@ -99,7 +99,6 @@ void spmv_jds(float *dst_vector, float *d_data,
 }
 
 int main(int argc, char** argv) {
-    __visc__init();
     struct pb_TimerSet timers;
     struct pb_Parameters *parameters;
 
@@ -114,6 +113,7 @@ int main(int argc, char** argv) {
     }
 
     pb_InitializeTimerSet(&timers);
+    __visc__init();
     pb_SwitchToTimer(&timers, pb_TimerID_COMPUTE);
 
     //parameters declaration