     int ei = E[i];
 
     // Lookup the endpoints of the current edge
+    // TODO: Dynamically choose u to be the node with smallest neighborhood
     int u = E_u[ei];
     int v = E_v[ei];
 

            iv++;
        }

        if (cv <= cu && cv != u) {
            for (int arr_i = 0; arr_i < arr_len; arr_i++) {
                // Before checking for cliques or cycles, the edge index is advanced to the current

    }

    // Create one-dimensional blocks and grids based upon blocksize and gridsize
    // TODO: Increase dimensionality in order to support larger networks
    dim3 dimBlock(blocksize, 1);
    dim3 dimGrid(gridsize, 1);

    // Execute CUDA kernel
    // TODO: Add timing to kernel execution and count aggregation below
    graphlets<<<dimGrid, dimBlock>>>(V_ptr, V_num, E_ptr, E_num, E_u_ptr, E_v_ptr, outputs_ptr);

    // Copy output data from GPU memory back into main memory
