#include <thrust/generate.h>
#include <thrust/host_vector.h>
#include <thrust/random.h>
#include <thrust/sort.h>

#include <cstdlib>
#include <iostream>
#include <iterator>

// defines the function prototype
#include "device.h"

int main()
{
  // generate 20 random numbers on the host
  thrust::host_vector<int> h_vec(20);
  thrust::default_random_engine rng;
  thrust::generate(h_vec.begin(), h_vec.end(), rng);

  // interface to CUDA code
  sort_on_device(h_vec);

  // print sorted array
  thrust::copy(h_vec.begin(), h_vec.end(), std::ostream_iterator<int>(std::cout, "\n"));

  return 0;
}
