GENERAL INFORMATION:

The RADIX program implements an integer radix sort based on the method 
described in:

Blelloch, G. E., et. al.  A Comparison of Sorting Algorithms for the 
     Connection Machine CM-2.  In Symposium on Parallel Algorithms and 
     Architectures, pp. 3-16, July 1991.

A description of this implementation can be found in:

Woo, S. C., Singh, J. P., and Hennessy, J. L.  The Performance Advantages
     of Integrating Message Passing in Cache-Coherent Multiprocessors.
     Technical Report CSL-TR-93-593, Stanford University, December 1993.

This program works under both the Unix FORK and SPROC models.

RUNNING THE PROGRAM:

To see how to run the program, please see the comment at the top of the
file radix.C, or run the application with the "-h" command line option.
Four command line parameters can be specified, of which the ones which 
would normally be changed are the number of keys to sort, the radix
for sorting, and the number of processors.  The radix used for sorting 
must be a power of 2.  Optional command line parameters allow timing 
information to be printed out at the end of the program, testing to
make sure all keys are sorted correctly, and keys to be printed out
in sorted order.

BASE PROBLEM SIZE:

The base problem size for an upto-64 processor machine is 256k (262,144)
keys to be sorted and a radix of 1024.  The default values should be 
used for other parameters (except the number of processors, which can 
be varied).  For larger problems, the number of keys can also be 
increased by factors of 2.  Any changes to these parameters should be 
reported when results are presented.

DATA DISTRIBUTION:

Our "POSSIBLE ENHANCEMENT" comments in the source code tell where one
might want to distribute data and how.  Data distribution has an impact 
on performance on the Stanford DASH multiprocessor.

