Reference no: EM132555342
COMP1680 Clouds, Grids and Virtualisation - University of Greenwich
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. Describe and critically discuss the roles and applications of cloud and grid computing.
Detailed Specification
This coursework is to be completed individually.
To complete this assignment you will need the source code provided at the attached URL.
You are provided with a nC program code (called jacobi2d.) that solve a rectangular 2 dimensional heat conductivity problem using the Jacobi iterative methods.
This code can be compiled and linked to produce a conventional executable file called jacobiSerial by using the following commands:
gcc jacobi2d.c -o jacobiSerial
To run the executable type in the executable name: jacobiSerial
As you implement each of the following 4 steps make sure that you retain and do not overwrite previous versions of your solutions.
Part 1
You are required to compute a temperature distribution for a rectangular 2D problem with boundary conditions set at top 100°C, bottom 100°C, left 120°C and right 120°C 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.
Part 2
You are then required to modify the applications you created in Part 1 to produce a basic parallel version of the codeusing OpenMP. The following commands will compile your parallel version on a platform that has OpenMP installed:
gcc -fopenmp jacobiOpenmp.c -o jacobiOpenmp
The parallel codes must include timers to report the parallel run-time of the code. This version must be tested to establish correct operation using 1, 2, 3 and 4 threads/processors, regardless of performance. (These versions may run on any platform you choose as performance is not an issue at this stage.)
Part 3
Using the cms-grid machines you are to run performance tests with the OpenMP implementation you created in Part 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:
• for a range of problem sizes
• for a range of number of threads (from 2 up to 8 threads) In calculating the speedup of your parallel code you should use the optimized single processor version of your code you produced in Part 1. You will need to apply similar optimizations to your parallel code.
Part 4
Using the cms-grid machines you are to further modify your OpenMP application to improve the parallel performance. You are expected to provide results that permit comparison with those you obtained in Part 3. Comment on the differences between optimising the Jacobi and Gauss-Siedel Methods.
Attachment:- Clouds, Grids and Virtualisation.rar