 }
 
 template <size_t Threads, size_t Distance, typename T>
-__global__ void par_shuffle_4_kernel_states(curandState* states, size_t n, T* x, T* y) {
+__global__ void par_shuffle_one_kernel_states(curandState* states, size_t n, T* x, T* y) {
     const auto base_index  = threadIdx.x + blockIdx.x * blockDim.x;
 
     const size_t split_size = n / Threads;

    egblas_shuffle_seed(n, x, incx, rd());
}

void egblas_par_shuffle_seed(size_t n, void* x, size_t incx, void* y, size_t incy, size_t seed){
    std::default_random_engine g(seed);



    distribution_t dist;

    // Optimized version for arrays of 8B, 4B, 1B
    if (incx == 8) {
        uint64_t* x_flat = reinterpret_cast<uint64_t*>(x);

        egblas_shuffle_one(n, x_flat, seed);

#ifdef EGBLAS_SYNCHRONIZE
    cudaDeviceSynchronize();
#endif

        return;
    } else if (incx == 4) {
        uint32_t* x_flat = reinterpret_cast<uint32_t*>(x);

        egblas_shuffle_one(n, x_flat, seed);

#ifdef EGBLAS_SYNCHRONIZE
    cudaDeviceSynchronize();
#endif

        return;
    } else if (incx == 1) {
        uint8_t* x_flat = reinterpret_cast<uint8_t*>(x);

        egblas_shuffle_one(n, x_flat, seed);

#ifdef EGBLAS_SYNCHRONIZE
    cudaDeviceSynchronize();
