proffreda

ballsbins.cu

Nov 8th, 2016
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.79 KB | None | 0 0
  1. // File: Balls_and_bins.cu
  2. #include <thrust/host_vector.h>
  3. #include <thrust/device_vector.h>
  4. #include <thrust/generate.h>
  5. #include <thrust/sort.h>
  6. #include <thrust/copy.h>
  7. #include <thrust/unique.h>
  8. #include <cstdlib>
  9.  
  10. struct rand_functor
  11. {
  12. const int a;
  13.  
  14. rand_functor(int _a) : a(_a) {}
  15.  
  16. __host__ __device__
  17. int operator()() const {
  18. return rand() % a;
  19. }
  20. };
  21.  
  22.  
  23. int main(void)
  24. {
  25. for (int n =2; n< (2<<20); n *=2){
  26.  
  27. thrust::host_vector<int> hv(n);
  28. thrust::generate(hv.begin(), hv.end(), rand_functor(n));
  29. thrust::device_vector<int> dv = hv;
  30. thrust::sort(dv.begin(), dv.end());
  31. thrust::device_vector<int>::iterator newend =
  32. thrust::unique(dv.begin(),dv.end());
  33. int numunique = newend - dv.begin();
  34. printf("#bins %d # distinct: %d ratio %f\n",n, numunique, double (numunique) / n);
  35. }
  36. return 0;
  37. }
  38.  
  39. /*
  40. Output:
  41.  
  42. #bins 2 # distinct: 2 ratio 1.000000
  43. #bins 4 # distinct: 2 ratio 0.500000
  44. #bins 8 # distinct: 5 ratio 0.625000
  45. #bins 16 # distinct: 12 ratio 0.750000
  46. #bins 32 # distinct: 18 ratio 0.562500
  47. #bins 64 # distinct: 36 ratio 0.562500
  48. #bins 128 # distinct: 79 ratio 0.617188
  49. #bins 256 # distinct: 163 ratio 0.636719
  50. #bins 512 # distinct: 323 ratio 0.630859
  51. #bins 1024 # distinct: 654 ratio 0.638672
  52. #bins 2048 # distinct: 1291 ratio 0.630371
  53. #bins 4096 # distinct: 2602 ratio 0.635254
  54. #bins 8192 # distinct: 5154 ratio 0.629150
  55. #bins 16384 # distinct: 10319 ratio 0.629822
  56. #bins 32768 # distinct: 20801 ratio 0.634796
  57. #bins 65536 # distinct: 41388 ratio 0.631531
  58. #bins 131072 # distinct: 82811 ratio 0.631798
  59. #bins 262144 # distinct: 165811 ratio 0.632519
  60. #bins 524288 # distinct: 331535 ratio 0.632353
  61. #bins 1048576 # distinct: 663439 ratio 0.632705
  62. */
Advertisement
Add Comment
Please, Sign In to add comment