CSC352 Game of Life Homework 2

From dftwiki3
Jump to: navigation, search

--D. Thiebaut (talk) 16:06, 28 February 2017 (EST)




This assignment is due on 3/23/17 at 1:00 p.m. Submit your answer archive file on Moodle.





Problem 1


Write a threaded java program that computes the generations of the game of life. The program should get 3 different pieces of information from the command line:

  1. The number of threads it must generate
  2. The number of generations it must compute
  3. The name of the text file containing the first generation, i.e. the first "dish."


Format of the Text File


The original dish is stored in a text file using the following format:

"                                                                                  "
"   #                                                                              "
" # #                                            ###                               "
"  ##                                                                              "
"                                                                                  "
"                                                      #                           "
"                                                    # #                           "
"                                                     ##                           "
"                                                                                  "
"                                                                                  "
"                                                                                  "
"                                                                                  "
"             #                                                                    "
"           # #                                                                    "
"            ##                                                                    "
"                                                                                  "
"                                                                                  "
"                                                                                  "
"                                                                                  "
"                                                                                  "
"                                                                                  "
"                                                                                  "
"                                                                                  "
"                                                                                  "
"                                                                                  "
"                                                                                  "
"                                                                                  "
"                                                                                  "

Each line of the dish array is defined by 2 double quotes. The first double-quote defines the beginning of a row of characters representing cells, spaces for dead cells, and #-signs for live ones.
There can be any number of lines in the text file, and their length can be different from the length shown above. Normally, though, all lines will have the same length.

Code


Code your program to be as simple as possible. Try to avoid excessive communication and excessive copying of data.
Feel free to use this 2-thread solution program solution program for inspiration.

Measuring Performance


Measure the speedup of your program for

  • 2, 4, 8, 12, 16, 20, 32, and 64 threads. Use a dish file that contains at least 128 lines of cells.
  • 10, 1000, and 10,000 generations.


You can use the serial program available here to compute T(1). You will have to modify it so that it can get the dish array from a data file.

Graph the speedup curves


Use the graphing package of your choice to display the speedup curves. Save a graph as a png or jpg file.

Submission


Submit a zip, tgz, or tar file containing your java program, a sample dish file, any python or script file you created to process the data, and an image file of the graph.