 		double *                                  time = 0) {
 
 	// get sizes
-	int numCells        = leftFields.dimension(0);
-	int numLeftFields   = leftFields.dimension(1);
-	int numRightFields  = rightFields.dimension(1);
-	int numPoints       = leftFields.dimension(2);
+	int numCells        = leftHost.dimension(0);
+	int numLeftFields   = leftHost.dimension(1);
+	int numRightFields  = rightHost.dimension(1);
+	int numPoints       = leftHost.dimension(2);
 
 	// Deep copy Kokkos host views into device views
 	Kokkos::deep_copy(leftDevice, leftHost);

	std::cout << "trying serial" << std::endl;

	//Warmup
	contractFieldFieldScalarSerial(out2_c_l_r, in_l_c_p, in_r_c_p);

	timespec tic;
	clock_gettime(CLOCK_MONOTONIC, &tic);

	//repeat the calculation 5 times so we can average out some randomness
	for(int i = 0; i < 5; ++i){
		contractFieldFieldScalarSerial(out2_c_l_r, in_l_c_p, in_r_c_p);
	}

	timespec toc;

	cudaMemcpy(h_out, d_out, sizeof(double) * numCells, cudaMemcpyDeviceToHost);

}
*/
template<class DeviceType, class LeftViewType, class RightViewType, class OutputViewType>
struct contractFieldFieldScalarFunctor {
	typedef DeviceType device_type;
