             iv++;
         }
 
+        // Cycles and cliques can only occur when current node is in N(v) \ {u}
         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

    int ei = E[i];

    // Lookup the endpoints of the current edge
    int u = E_u[ei];
    int v = E_v[ei];


    }

    // 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
