next up previous
Next: Experimental Results Up: Performance Evaluation Previous: Performance Evaluation

Sorting Benchmarks

Our nine sorting benchmarks are defined as follows, in which n and p are assumed for simplicity but without loss of generality to be powers of two and tex2html_wrap_inline2138 , the maximum value allowed for doubles, is approximately tex2html_wrap_inline2142 .

  1. Uniform [U], a uniformly distributed random input, obtained by calling the C library random number generator random(). This function, which returns integers in the range 0 to tex2html_wrap_inline2148 , is seeded by each processor tex2html_wrap_inline1832 with the value (21 + 1001i). For the double data type, we ``normalize'' the integer benchmark values by first subtracting the value tex2html_wrap_inline2156 and then scaling the result by tex2html_wrap_inline2158 .
  2. Gaussian [G], a Gaussian distributed random input, approximated by adding four calls to random() and then dividing the result by four. For the double data type, we normalize the integer benchmark values in the manner described for [U].
  3. Zero [Z], a zero entropy input, created by setting every value to a constant such as zero.
  4. Bucket Sorted [B], an input that is sorted into p buckets, obtained by setting the first tex2html_wrap_inline1854 elements at each processor to be random numbers between 0 and tex2html_wrap_inline2170 , the second tex2html_wrap_inline1854 elements at each processor to be random numbers between tex2html_wrap_inline2174 and tex2html_wrap_inline2176 , and so forth. For the double data type, we normalize the integer benchmark values in the manner described for [U].
  5. g-Group [g-G], an input created by first dividing the processors into groups of consecutive processors of size g, where g can be any integer which partitions p evenly. If we index these groups in consecutive order from 1 up to tex2html_wrap_inline2192 , then for group j we set the first tex2html_wrap_inline2196 elements to be random numbers between tex2html_wrap_inline2198 and tex2html_wrap_inline2200 , the second tex2html_wrap_inline2196 elements at each processor to be random numbers between
    tex2html_wrap_inline2204 and tex2html_wrap_inline2206 , and so forth. For the double data type, we normalize the integer benchmark values in the manner described for [U].
  6. Staggered [S], created as follows: if the processor index i is less than or equal to tex2html_wrap_inline2212 , then we set all tex2html_wrap_inline1816 elements at that processor to be random numbers between tex2html_wrap_inline2216 and tex2html_wrap_inline2218 . Otherwise, we set all tex2html_wrap_inline1816 elements to be random numbers between tex2html_wrap_inline2222 and tex2html_wrap_inline2224 . For the double data type, we normalize the integer benchmark values in the manner described for [U].
  7. Worst-Load Regular [WR] - an input consisting of values between 0 and tex2html_wrap_inline2230 designed to induce the worst possible load balance at the completion of our regular sorting. Specifically, at the completion of sorting, the odd-indexed processors will hold tex2html_wrap_inline2232 elements, whereas the even-indexed processors will hold tex2html_wrap_inline2234 elements. The benchmark is defined as follows. At processor tex2html_wrap_inline2064 , for odd values of j between 1 and (p - 2), the elements with indices tex2html_wrap_inline2244 through tex2html_wrap_inline2246 are set to random values between tex2html_wrap_inline2248 and tex2html_wrap_inline2250 , the elements with indices tex2html_wrap_inline2252 through tex2html_wrap_inline2254 are set to tex2html_wrap_inline2256 , the elements with indices tex2html_wrap_inline2258 through tex2html_wrap_inline2260 are set to random values between tex2html_wrap_inline2262 and tex2html_wrap_inline2264 , and the element with index tex2html_wrap_inline2266 is set to tex2html_wrap_inline2266 . At processor tex2html_wrap_inline2064 , for j equal to (p - 1), the elements with indices tex2html_wrap_inline2244 through tex2html_wrap_inline2246 are set to random values between tex2html_wrap_inline2248 and tex2html_wrap_inline2250 , the elements with indices tex2html_wrap_inline2252 through tex2html_wrap_inline2254 are set to tex2html_wrap_inline2256 , and the elements with indices tex2html_wrap_inline2258 through tex2html_wrap_inline2292 are set to random values between tex2html_wrap_inline2262 and tex2html_wrap_inline2264 . At processor tex2html_wrap_inline1832 (i > 1), for odd values of j between 1 and p, the elements with indices tex2html_wrap_inline2244 through tex2html_wrap_inline2254 are set to random values between tex2html_wrap_inline2248 and tex2html_wrap_inline2250 , the elements with index tex2html_wrap_inline2258 is set to tex2html_wrap_inline2318 , and the elements with indices tex2html_wrap_inline2320 through tex2html_wrap_inline2292 are set to random values between tex2html_wrap_inline2324 and tex2html_wrap_inline2264 . For the double data type, we normalize the integer benchmark values in the manner described for [U].
  8. Deterministic Duplicates [DD], an input of duplicates in which we set all tex2html_wrap_inline1816 elements at each of the first tex2html_wrap_inline2212 processors to be tex2html_wrap_inline2334 , all tex2html_wrap_inline1816 elements at each of the next tex2html_wrap_inline2338 processors to be tex2html_wrap_inline2340 , and so forth. At processor tex2html_wrap_inline1858 , we set the first tex2html_wrap_inline2344 elements to be tex2html_wrap_inline2346 , the next tex2html_wrap_inline2348 elements to be tex2html_wrap_inline2350 , and so forth.
  9. Randomized Duplicates [RD], an input of duplicates in which each processor fills an array T with some constant number range (range is 32 for our work) of random values between 0 and (range - 1) whose sum is S. The first tex2html_wrap_inline2364 values of the input are then set to a random value between 0 and (range - 1), the next tex2html_wrap_inline2370 values of the input are then set to another random value between 0 and (range - 1), and so forth.

See [14] for a detailed justification of these benchmarks.


next up previous
Next: Experimental Results Up: Performance Evaluation Previous: Performance Evaluation

David R. Helman
helman@umiacs.umd.edu