Performance Programming Coursework 2


Hello, if you have any need, please feel free to consult us, this is my wechat: wx91due


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 Cirrus. 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.

Both pieces of coursework are assessed through a written report detailing the work undertaken and performance achieved. Note that the target platform is Cirrus and its associated software stack. If you do not already have access to Cirrus 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 (up to 12 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. 12 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 Coursework 1, 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 11:59am, 2nd December 2024 (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.

发表评论

电子邮件地址不会被公开。 必填项已用*标注