     END_IL_TIMER(_time_initialization);
     START_IL_TIMER();
 
+    if (opt.verbosity >= 1) {
+        std::cout << "done. \nKNN Computation..." << std::flush;
+    }
     // Compute approximate K Nearest Neighbors and squared distances
     tsnecuda::util::KNearestNeighbors(gpu_opt, knn_indices, knn_squared_distances, high_dim_points, high_dim, num_points, num_neighbors);
     thrust::device_vector<long> knn_indices_long_device(knn_indices, knn_indices + num_points * num_neighbors);

            std::cout << "This version is not built with ZMQ for interative viz. Rebuild with WITH_ZMQ=TRUE for viz." << std::endl;
    #endif

    END_IL_TIMER(_time_init_fft);
    // Support for infinite iteration
    for (size_t step = 0; step != opt.iterations; step++) {

        START_IL_TIMER();


    END_IL_TIMER(_time_knn);
    START_IL_TIMER();

    if (opt.verbosity >= 1) {
        std::cout << "done.\n Computing Pij matrix..." << std::flush;
    }

    // Search Perplexity
    thrust::device_vector<float> pij_non_symmetric_device(num_points * num_neighbors);
