Performance Programming Coursework 2
Introduction
The overall aim of the Performance Programming coursework is to take a serial application and improve its performance on the compute nodes of ARCHER2. The coursework is split into two parts, with the first part focussed on optimising the application using the compiler, and the second part focussed on hand-optimising the code itself. This document outlines coursework 2, hand optimising the application through code modifications.
Copyright By PowCoder代写 加微信 powcoder
Both pieces of coursework are assessed through a written report detailing the work undertaken and performance achieved. Note that the target platform is ARCHER2 and its associated software stack. If you do not already have access to ARCHER2 please contact the course organiser.
You should use the simple molecular dynamics application you used for the first coursework. As with coursework 1 this simulates the movement of particles over time, and is available in both C and Fortran implementations. You should select one of these versions for use in this coursework, and work only on that version.
Running the program
As provided the program reads an initial state from the file input.dat and then performs 5 blocks of 100 timesteps writing an output file after each block. The output files are in the same format as the input file so you can use any output file as an input for a shorter performance test that performs less than 500 iterations. The code reports timing information for each block of 100 timesteps and for the loop over blocks that includes file access operations.
Correctness checking should be undertaken using the same tools and approach as for coursework 1, i.e. using the diff-output tool and any other tools you have to check for NaN output produced by the application.
Assignment
The assignment for coursework 2 is to produce a report (10-15 pages including figures) on the hand optimisation activity you have undertaken. The report may contain additional appendices if you wish, though assessment will be based on the main report. 15 pages is a hard limit for the overall report (excluding appendices), any pages beyond this limit will not be marked. The report should present the results of your work investigating and improving the performance of this code.
The report should make clear recommendations as to a final improved version of the code. These recommendations should consider factors such as code maintainability and readability as well as overall performance. You should remember, that, as with all performance reports, you should also document the environment you are running your tests in (i.e. what hardware are you using, what compilers, etc…) and also make sure your results are reproducible by running any benchmarking multiple times. You can report whatever number you wish (average, minimum, maximum) providing you state what you did in your report and it is consistent.
Your aim is to reduce the combined run-time of all 500 timesteps while maintaining a reasonable level of code quality. File I/O times do not need to be considered and can be omitted from timing results.
The coursework is intended to assess your understanding of the course materials so approaches such as multi-threaded or multi-process parallelism should not be attempted.
As you have already investigated compiler optimisation in Coursework1 you do not need to re- investigate that for this coursework, you can simply use the best compiler and compiler flags combination you discovered during that coursework.
You are required to submit this developed code version along with the report but the assignment marks are based on the report, so the report should be a stand-alone document with discussions of the code being illustrated by in-line code fragments rather than by reference to the submitted source code.
Please ensure that you include your exam number in the title of both your report and your source code. This assignment will be marked anonymously so we cannot identify which report goes with which source code unless you include your exam number in the title.
Marking scheme
The report will be marked on:
• Demonstrated understanding of the performance issues: both problems in the original code
and of the results of changes made to the code (35).
• Discussion of the proposed optimisations: their impact on performance as well as code
quality (35).
• Methodology used in the assignment as demonstrated in the report. This includes general
approach, tools used etc. (20).
• Clarity, relevance and presentation of the report (10).
Coursework is due at 16:00, 13th April 2022 (UK Time)
As per the University’s Taught Assessment Regulations (for further information see link on Learn course Assessment page) assignments submitted after the deadline (unless granted an extension, see Student Support page on the Learn course) are subject to a 5% penalty per day (i.e. 24 hours) that the assignment is late after the deadline, up to a maximum of seven. Assignments handed in more than seven days late receive zero marks.
Remember what you submit should be your own work. Anything not your own work which you have accessed should be correctly referenced and cited. Please see further information and guidance from the School of Informatics Academic Misconduct Officer: https://web.inf.ed.ac.uk/infweb/admin/policies/academic-misconduct
程序代写 CS代考 加微信: powcoder QQ: 1823890830 Email: powcoder@163.com