COMP1680(2019/20)Clouds, Grids andVirtualisationContribution:60% of courseCourse Leader:Dr Catherine TonryOpenMPCourseworkDeadline Date:Wednesday15/12/2021This coursework should take an average student who is up-to-date with tutorial workapproximately 30 hoursFeedback and grades are normally made available within 15 working days of thecoursework deadlineLearning Outcomes:Characterise and critically evaluate high performance computing based architectures andtheir suitability for given applications.Implement and execute applications using shared and distributed memory programmingparadigms.Describe and critically discuss the roles and applications of cloud and grid computing. Plagiarism is presenting somebody else’s work as your own. It includes: copyinginformation directly from the Web or books without referencing the material;submitting joint coursework as an individual effort; copying another student’scoursework; stealing coursework from another student and submitting it as your ownwork. Suspected plagiarism will be investigated and if found to have occurred will bedealt with according to the procedures set down by the University. Please see yourstudent handbook for further details of what is / isn’t plagiarism.All material copied or amended from any source (e.g. internet, books) must be referencedcorrectly according to the reference style you are using.Your work will be submitted for plagiarism checking. Any attempt to bypass our plagiarismdetection systems will be treated as a severe Assessment Offence.Coursework Submission Requirements• An electronic copy of your work for this coursework must be fullyuploaded by 23:30 on the Deadline Date of Wednesday 15/12/2021 usingthe link on the coursework Moodle page for COMP1680.• For this coursework you must submit a PDF document and a zip file ofyour code. In general, any text in the document must not be an image (i.e.must not be scanned) and would normally be generated from otherdocuments (e.g. MS Office using “Save As .. PDF”). An exception to this ishand written mathematical notation, but when scanning do ensure the filesize is not excessive.• There are limits on the file size (see the relevant course Moodle page).• Make sure that any files you upload are virus-free and not protected by apassword or corrupted otherwise they will be treated as null submissions.• Your work will not be printed in colour. Please ensure that any pages withcolour are acceptable when printed in Black and White.• You must NOT submit a paper copy of this coursework.• All courseworks must be submitted as above. Under no circumstancescan they be accepted by academic staffThe University website has details of the current Coursework Regulations,including details of penalties for late submission, procedures forExtenuating Circumstances, and penalties for Assessment Offences. Seehttp://www2.gre.ac.uk/current-students/regsDetailed SpecificationThis coursework is to be completed individually.To complete this assignment you will need the source code provided at the following URLs.https://moodlecurrent.gre.ac.uk/mod/resource/view.php?id=1660219https://moodlecurrent.gre.ac.uk/mod/resource/view.php?id=1660220You are provided with a two C program codes (called jacobi2d.c and gauss2d.c) that solve arectangular 2 dimensional heat conductivity problem using the Jacobi and Gauss-Seidel iterativemethods.This code can be compiled and linked to produce a conventional executable files called jacobiSerialand gaussSerial by using the following commands:gcc jacobi2d.c –o jacobiSerialgcc gauss2d.c –o gaussSerialTo run the executable type in the executable name: jacobiSerial or gaussSerialAs you implement each of the following 4 steps make sure that you retain and do not overwriteprevious versions of your solutions.Step 1 (25 Marks)You are required to compute a temperature distribution for a rectangular 2D problem withboundary conditions set at top 100°C, bottom 20°C, left 30°C and right 40°C with a range of problemsizes. 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 sizesusing 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 ofthe execution time.Step 2 (30 Marks)You are then required to modify the applications you created in step 1 to produce a basic parallelversion of the codes using OpenMP. The following commands will compile your parallel version on aplatform that has OpenMP installed:gcc -fopenmp jacobiOpenmp.c –o jacobiOpenmpgcc -fopenmp gaussOpenmp.c –o gaussOpenmpThe parallel codes must include timers to report the parallel run-time of the code. This version mustbe tested to establish correct operation using 1, 2, 4 and 8 threads/processors, regardless ofperformance. (These versions may run on any platform you choose as performance is not an issue atthis stage.)Include in your report, the result for a 20×20 problem size for 1,2,4 and 8 processors to demonstratethe code works correctly.Run the Gauss-Seidel code for only 1 iteration using 1 and 2 threads for a 20×20 problem size.Output the result along with the timings. Discuss the differences in the solutions.Step 3 (30 Marks)Using the cms-grid machines you are to run performance tests with the OpenMP implementationyou created in step 2. This will require that you remove most of the print output from the code andincrease the problem size to provide sufficient work to demonstrate useful speedup. You areexpected to provide speedup results:• for a range of problem sizes, you are unlikely to see much speedup for small domains, use at least100×100+• for a range of number of threads (from 2 up to 8 threads) In calculating the speedup of yourparallel code you should use the optimized single processor version of your code you produced instep 1 and compare to this. You will need to apply similar compiler optimizations to your parallelcode. Please list your runtimes in a suitable unit.Step 4 (15 Marks)Using different OpenMP directives and clauses you are to further modify your OpenMP applicationto improve the parallel performance. You are expected to provide results that permit comparisonwith those you obtained in steps 2 and 3. Comment on the differences between optimising theJacobi and Gauss-Seidel Methods.Deliverables• A PDF file with your report•A ZIP file with the source code for your solutions.Your report is required to provide details of your implementation of steps 1 to 4 as described above.The report should include discussion of your solutions and provide a clear description of; the codechanges you have implemented, your compilation and execution processes and your test cases. Forsteps 3 and 4 you are expected to provide tabular and graphical results. Comment on thedifferences between the two methods and the effect on parallelisation. Your zip file should providesuitably named source code files for each of your implementations.Grading CriteriaTo achieve a pass mark it is expected that an outline solution will be provided in which at least abasic attempt is evident with some progress.To achieve a mark in the merit range it is expected that a good solution is provided in which there isclear evidence of progress and understanding.To achieve a distinction mark it is expected that high quality solutions and reports are provided inwhich there is clear evidence of competence in practical, theoretical and presentation skills.If you are unsure about any of these instructions, then please email your tutor or make anappointment to see your tutor as soon as possible.