 								cl) = in_c_r_p_d_d(cl, rbf, qp, iTens1, iTens2);
 						omp_hostRight(rbf*p*d1*d2*c + qp*d1*d2*c + iTens1*d2*c + iTens2*c +
 								cl) = in_c_r_p_d_d(cl, rbf, qp, iTens1, iTens2);
+            cudaRight[rbf*p*d1*d2*c + qp*d1*d2*c + iTens1*d2*c + iTens2*c +
+                cl] = in_c_r_p_d_d(cl, rbf, qp, iTens1, iTens2);
 					}
 				}
 			}


#if 0
	//Warmpup
	contractFieldFieldTensorKokkos<Kokkos::OpenMP, omp_input_view_t, omp_output_view_t, omp_input_host_t, omp_output_host_t> 
		(omp_hostOut, omp_hostLeft, omp_hostRight, omp_kokkosOut,
		 omp_kokkosLeft,omp_kokkosRight); clock_gettime(CLOCK_MONOTONIC, &tic);

	//repeat the calculation 5 times so we can average out some randomness
	for(int i = 0; i < 5; ++i){
		contractFieldFieldTensorKokkos<Kokkos::OpenMP, omp_input_view_t, omp_output_view_t, omp_input_host_t, omp_output_host_t> 
			(omp_hostOut, omp_hostLeft, omp_hostRight, omp_kokkosOut, omp_kokkosLeft,
			 omp_kokkosRight);
	}

	typedef typename omp_input_view_t::HostMirror omp_input_host_t;
	typedef typename omp_output_view_t::HostMirror omp_output_host_t;

  //Cuda arrays
  double * cudaRight = new double[c * r * p * d1 * d2];
  double * cudaLeft = new double[c * l * p * d1 * d2];
  double * cudaOut = new double[c * l * r];

	// Make equivalent Kokkos views
	cuda_input_view_t cuda_kokkosLeft("left_input", c * l * p * d1 * d2);
	cuda_input_view_t cuda_kokkosRight("right_input", c * r * p * d1 * d2);
