Describe and critically discuss the roles and applications of cloud and grid computing.

Publish By: Admin,
Last Updated: 05-Sep-23
Price: $120

Learning Outcome 1: Characterise and critically evaluate high performance computing based architectures and their suitability for given applications.

Learning Outcome 2: Implement and execute applications using shared and distributed memory programming paradigms.

Learning Outcome 3: Describe and critically discuss the roles and applications of cloud and grid computing.

You are provided with a two C program codes (called jacobi2d.c and gauss2d.c) that solve a rectangular 2 dimensional heat conductivity problem using the Jacobi and Gauss-Seidel iterative methods.

This code can be compiled and linked to produce a conventional executable files called jacobiSerial and gaussSerial by using the following commands:

gcc jacobi2d.c -o jacobiSerial gcc gauss2d.c -o gaussSerial
To run the executable type in the executable name: jacobiSerial or gaussSerial
As you implement each of the following 4 steps make sure that you retain and do not overwrite previous versions of your solutions.

Step 1
You are required to compute a temperature distribution for a rectangular 2D problem with boundary conditions set at top 30C, bottom 60C, left 110C and right 140C with a range of problem sizes. To do this you are required to modify the codes to:

reflect the boundary conditions described above

report the execution time Record the run-time of your code under a range of problem sizes using different levels of compiler optimization.

Be advised that:

it is possible that aggressive optimization will break the code.

you will need to stop the results from printing if you are to obtain realistic measurements of the execution time.

Step 2
You are then required to modify the applications you created in step 1 to produce a basic parallel version of the codes using OpenMP. The following commands will compile your parallel version on a platform that has OpenMP installed:

s to report the parallel run-time of the code. This version must be tested to establish correct operation using 1, 2, 4 and 8 threads/processors, regardless of performance. (These versions may run on any platform you choose as performance is not an issue at this stage.)

Run the Gauss-Seidel code for only 1 iteration using 1 and 2 threads for a 20x20 problem size. Output the result along with the timings. Discuss the differences in the solutions.

Step 3

Using the cms-grid machines you are to run performance tests with the OpenMP implementation you created in step 2. This will require that you remove most of the print output from the code and increase the problem size to provide sufficient work to demonstrate useful speedup. You are expected to provide speedup results: