2 #==========================================================================
5 # Author : Christopher Batten (cbatten@mit.edu)
8 (our $usageMsg = <<'ENDMSG') =~ s/^\#//gm;
10 # Simple script which creates an input data set and the reference data
11 # for the median benchmark.
20 #--------------------------------------------------------------------------
21 # Command line processing
22 #--------------------------------------------------------------------------
30 print " Usage: median_gendata.pl [options] \n";
33 print " --help print this message\n";
34 print " --size size of input data [750]\n";
35 print " --seed random seed [1]\n";
41 sub processCommandLine
()
47 Getopt
::Long
::GetOptions
( \
%opts, 'help|?', 'size:i', 'seed:i' ) or usage
();
48 $opts{"help"} and usage
();
52 #--------------------------------------------------------------------------
54 #--------------------------------------------------------------------------
58 my $arrayName = $_[0];
62 my $arrayLen = scalar(@
{$arrayRef});
64 print "int ".$arrayName."[DATA_SIZE] = \n";
67 if ( $arrayLen <= $numCols ) {
69 for ( my $i = 0; $i < $arrayLen; $i++ ) {
70 print sprintf("%3d",$arrayRef->[$i]);
71 if ( $i != $arrayLen-1 ) {
79 my $numRows = int($arrayLen/$numCols);
80 for ( my $j = 0; $j < $numRows; $j++ ) {
82 for ( my $i = 0; $i < $numCols; $i++ ) {
83 my $index = $j*$numCols + $i;
84 print sprintf("%3d",$arrayRef->[$index]);
85 if ( $index != $arrayLen-1 ) {
92 if ( $arrayLen > ($numRows*$numCols) ) {
94 for ( my $i = 0; $i < ($arrayLen-($numRows*$numCols)); $i++ ) {
95 my $index = $numCols*$numRows + $i;
96 print sprintf("%3d",$arrayRef->[$index]);
97 if ( $index != $arrayLen-1 ) {
109 #--------------------------------------------------------------------------
111 #--------------------------------------------------------------------------
116 processCommandLine
();
117 srand($opts{"seed"});
120 for ( my $i = 0; $i < $opts{"size"}; $i++ ) {
121 push( @values, int(rand(999)) );
126 $median[$opts{"size"}-1] = 0;
127 for ( my $i = 1; $i < $opts{"size"}-1; $i++ ) {
128 my @tempList = ( $values[$i-1], $values[$i], $values[$i+1] );
129 my @sorted = sort { $a <=> $b } @tempList;
130 $median[$i] = $sorted[1];
133 print "\n\#define DATA_SIZE ".$opts{"size"}." \n\n";
134 printArray
( "input_data", \
@values );
135 printArray
( "verify_data", \
@median );