Results of Last MapReduce Job
Generated 2 ^ {{ power }} random numbers with the following properties:
{{ result }}


How many random numbers should we generate? 2 ^



About this application:

This application is an implementation of the Embarassingly Parallel benchmark, one of the NAS Parallel Benchmarks. This implementation takes in a single input from the user, n, and generates 2^n random numbers via the pseudo-random number generator given in the benchmark's specification. These numbers are generated in pairs, and if the sum of the square of the numbers exceeds one, the pair of numbers is multiplied by a common factor and saved for later use. In this application, this work is all done in the Map phase of the computatation.

The Reduce phase of the computation then receives the tuples generated previously and calculates the following statistics for each of them. It finds which number is greater (the first or the second, named x and y here), and for that number it calculates the floor of the number (here referred to as the 'bucket'). It also adds that number to the grand total for x or y (depending which pile it came from).

Implementation Details

The Map and Reduce functions are both written in the Ruby programming language. If run on the distributed Google App Engine SDK packaged with AppScale, this application uses Hadoop Streaming to run the MapReduce computation. If run on the non-distributed Google App Engine SDK, it runs the following command instead:

cat input | ./map | sort | ./reduce > output