     int E_size = E_num * sizeof(int);
     int outputs_size = E_num * sizeof(EDGE_OUTPUT);
 
+    std::chrono::steady_clock::time_point begin = std::chrono::steady_clock::now();
+
     // Malloc GPU memory and store location in pointers
     cudaMalloc((void**)&V_ptr, V_size);
     cudaMalloc((void**)&E_ptr, E_size);

    std::cout << "3-node-1-edge      (g33)  : " << counts.g33 << std::endl;
    std::cout << "3-node-independent (g34)  : " << counts.g34 << std::endl;

    return EXIT_SUCCESS;
}

    cudaMemcpy(E_v_ptr, E_v.data(), E_size * 2, cudaMemcpyHostToDevice);
    cudaMemcpy(outputs_ptr, outputs.data(), outputs_size, cudaMemcpyHostToDevice);

    std::chrono::steady_clock::time_point memcpy_input_end = std::chrono::steady_clock::now();

    // Calculate number of blocks in CUDA grid based upon number of edges in graph
    int gridsize = E_num / blocksize;
    if (E_num % blocksize > 0) {
