HPC Project 5: Applying Patterns

The program in calcPI.c calculates an approximate value for PI. However, a single process (i.e., process 0) is doing all the work. This week's project is to use the patterns you have learned about so far to speedup this computation as much as you can, such that you can calculate PI to 17 digits of precision "quickly".

This is not an especially difficult task, so this is a one week project.

Once you have your parallel version of calcPI working, use it to find how many trapezoids and processes are needed to compute PI to 17 digits of precision "quickly".

Then use your program to collect the timing data needed for the 3D chart described below. For these timing runs, you may use either the Ulab or the cluster.

Hand In

Hard copies of:

  1. Your spreadsheet data and three 3D bar-charts -- one showing your timing data, one showing your program's speedup, and one showing its computational efficiency -- with the X-axis being 1, 2, 4, 8, 16, and 32 processes, the Z-axis being 100000, 1000000, 10000000, 100000000, 1000000000, and 10000000000 trapezoids; and the Y-axis being your program's run-times, speedups, and/or computational efficiencies for the corresponding X and Z values. As always, label your chart and its axes, and format your chart so that it displays well when printed on the Ulab printer.
  2. A 1-2 page analysis of your program's behavior, exploring the relationship between the number of PEs and the number of trapezoids: Make your writeup as quantitative as possible, and use your spreadsheet data and charts to support your comments.
  3. A script file in which you use cat to list your program, use make to show that it compiles correctly, and then show that it can correctly compute PI to 17 decimal digits "quickly".
Please staple these pages together and make certain that your name is on each page.

CS > 374 > Exercises > 05 > Homework Project

This page maintained by Joel Adams.