     static thrust::device_vector<MortonBound> bounds(6); bounds.resize(6);
     Kernels::ReduceMinMaxMortonByAxis(rayMortonCodes.begin(), rayMortonCodes.end(),
                                       bounds.begin(), bounds.end());
-    //cout << "Bounds:\n" << bounds << endl;
+    // cout << "Bounds:\n" << bounds << endl;
+
+    // Copy initial bounds to the GPU's constant memory.
+    cudaMemcpyToSymbol(d_initialBounds, RawPointer(bounds), sizeof(MortonBound) * 6, 0, cudaMemcpyDeviceToDevice);
+    CHECK_FOR_CUDA_ERROR();
 
     // Find ray partition pivots
     rayPartitions.resize(6);

        
        return MortonBound::LowestCommonBound(min, max);
    }
};

struct CreateHyperCubesFromBounds {

      nextSphereIndices(capacity), nextSphereIndexPartition(capacity),
      leafSphereIndices(0) {}

struct RayMortonCoder {
    
    // TODO Copy these fields to CUDA as constants (After I'm done doing host testing)
