1PREAMBLE = \ 2 """ 3 #include <thrust/sort.h> 4 """ 5 6INITIALIZE = \ 7 """ 8 const size_t InputSize = 1 << 24; 9 thrust::host_vector<$KeyType> h_keys = unittest::random_integers<$KeyType>(InputSize); 10 11 // set upper bits to zero 12 for(size_t i = 0; i < InputSize; i++) 13 h_keys[i] >>= (32 - $KeyBits); 14 15 thrust::device_vector<$KeyType> d_keys = h_keys; 16 thrust::device_vector<$KeyType> d_keys_copy = d_keys; 17 18 // test sort 19 thrust::stable_sort(h_keys.begin(), h_keys.end()); 20 thrust::stable_sort(d_keys.begin(), d_keys.end()); 21 22 ASSERT_EQUAL(d_keys, h_keys); 23 """ 24 25TIME = \ 26 """ 27 thrust::copy(d_keys_copy.begin(), d_keys_copy.end(), d_keys.begin()); 28 thrust::stable_sort(d_keys.begin(), d_keys.end()); 29 """ 30 31FINALIZE = \ 32 """ 33 RECORD_TIME(); 34 RECORD_SORTING_RATE(double(InputSize)); 35 """ 36 37 38KeyTypes = ['unsigned int'] 39KeyBits = range(1, 33) 40 41TestVariables = [('KeyType', KeyTypes), ('KeyBits',KeyBits)] 42 43