(There are kind of a lot of files here, so rather than make individual links I've made links to directories. Most programs need the timer.h file from the starter code to compile.)
(There are a lot of files here, so rather than make individual links I've made links to directories.)
These files contain results of measuring accuracy for different seeds and versions.
Each line reports, for a seed and number of samples, difference between computed pi and best available value (M_PI).
I collected data for two versions of the C sequential code, one using double-precision arithmetic and one using single-precision, since I thought that would make comparisons between sequential and OpenCL versions more meaningful. I also collected data for the starter-code version using library functions/classes (srand()/rand() for C, Random for Java) -- I didn't ask you to do this but thought it might be interesting. I did collect data for the Java version using the custom RNG, but results were essentially identical to those of the C version (as they should have been!) so I didn't plot those.
File names are meant to identify version (``dp'' for C using double precision, ``sp'' for C using single precision).
These files contain results of timing the sequential programs on various machines. Before doing timings I recompiled for the particular machine, in case that made a difference.
Each line reports, for a number of samples, average time over 5 trials (but results from trial to trial were very similar).
I collected data for two versions of the C sequential code, one using double-precision arithmetic and one using single-precision, since I thought that would make comparisons between sequential and OpenCL versions more meaningful. (I found it interesting that the times differ quite a bit. ``Hm!''?)
File names are meant to identify version (``dp'' for C using double precision, ``sp'' for C using single precision, ``java'' for Java) and machine(s).
These files contain results of measuring accuracy for different numbers of samples and UEs, using the seed that gave the best average results (4321).
Each line reports, for a number of samples and number of UEs, difference between computed pi and best available value (M_PI).
I collected data for all four versions of the code, but results for the OpenMP, MPI, and Java versions were identical (as they should have been!). Results for the OpenCL version were somewhat different since they use single precision.
File names are meant to identify version (``dp'' for double precision, ``sp'' for single precision).
These files contain results of timing all the parallel programs on various machines. Before doing timings I recompiled for the particular machine, in case that made a difference.
Each line reports, for a number of samples and number of UEs, average time over 5 trials (but results from trial to trial were very similar).
I collected a lot of data, more than I asked you to do, because I was curious about performance on different platforms. My idea was to use Dione as the main platform for the two shared-memory versions (OpenMP and Java), the Pandora cluster as the main platform for the MPI version, and both Deimos and Atlas00 as main platforms for the OpenCL version, but I ran other experiments as well to allow for what I thought might be interesting plots. In particular I tried the OpenCL version both using the GPU and using the CPU, and for both of those I tried both ``preferred size'' as the workgroup size and maximum size. I also collected data for two ``problem sizes'' (number of samples).
Filenames are meant to be descriptive.
These files contain plots of accuracy for different seeds and versions. This is more than I asked you to do, but I thought would be interesting; I also made plots for the starter versions using library functions/classes.
I also plotted a comparison of ``best'' values for the various versions, where for each version I picked the seed that gave the best average over the numbers of samples I tried.
I couldn't decide whether plotting using lines or bars made more sense so I did both.
File names are meant to be descriptive, and titles and keys should tell you what's what.
These files contain plots of accuracy for varying numbers of samples and UEs.
I couldn't decide whether plotting using lines or bars made more sense so I did both.
File names are meant to be descriptive, and titles and keys should tell you what's what.
These files contain plots of execution times for all the parallel programs on various machines. I also tried two different ``problem sizes'' (number of samples).
This is a lot of plots, more than I asked you to do, but I was curious about how results compared. I combined some results where I thought it would be interesting to do so -- e.g., both OpenMP and MPI in a single plot, for platforms where I tried both. Each plot shows one or more parallel versions, plus sequential execution time and ``perfect speedup'' (sequential time / number of UEs) for comparison purposes. (Sequential times for the OpenCL version are for the single-precision version.) For the OpenCL versions I plotted times for execution with the GPU and also with the CPU (using OpenCL) and also plotted times for both ``preferred'' and maximum workgroup sizes.
Filenames are meant to be descriptive, and titles and legends should identify what's what.