Assessment Item 1
Module Code & Title: CMP3752M Parallel Programming
Contribution to Final Module Mark: 40%
Description of Assessment Task and Purpose:
Your task is to develop a simple program for analysing historical weather records from
Lincolnshire. The provided data set includes records of air temperature collected over a period of
more than 80 years from five weather stations in Lincolnshire: Barkston Heath, Scampton,
Waddington, Cranwell and Coningsby. Your program should be able to load the provided
dataset and calculate statistical summaries of temperature including the minimum, maximum,
mean, and standard deviation. These summary statistics should be calculated for the entire
dataset, regardless of acquisition time and location. For additional credit, you should also
calculate the median statistic and its 1st and 3rd quartiles (i.e. 25th and 75th percentiles), which
will require the development of a suitable sorting algorithm.
Due to the large amount of data (i.e. 1.8 million records), all statistical calculations should be
performed on parallel hardware and implemented by a parallel software component written in
OpenCL. Your program should also report memory transfer, kernel execution, and total program
execution times for performance assessment. Further credit will be given for additional
optimisation strategies that target the parallel performance of the program. In such a case, your
program should run and display execution times for different variants of your algorithm. Your
basic implementation can assume temperature values expressed as integers and skip all parts
after a decimal point. For additional credit, you should also consider the exact temperature
values and their corresponding summary statistics.
You can base your code on the material provided during workshop sessions, but you are not
allowed to use any existing parallel libraries (e.g. Boost.Compute). To help you with code
development, a shorter dataset is also provided which is 100 times smaller. The full data set is
called “temp_lincolnshire.txt”, and the short dataset is “temp_lincolnshire_short.txt”. These data
sets, as well as a "readme.txt" that describes the file format, are available for download from
Blackboard in the file “temp_lincolnshire_datasets.zip”. The results and performance measures
output by your code should be reported in a console window in a clear and readable format. All
file I/O and reporting operations should be provided by the host code.
You should pay careful attention to the correctness of the developed algorithms and
effectiveness of any optimisation strategies. Your code should follow good programming
practices such as clear commenting, proper structure, and use of descriptive names for methods
and variables. You must also clearly explain how to run your code by including a “readme” file
with your submission.
You are also required to provide a short summary of your implementation (max. 300 words),
which should be included as a code comment section above the main function in your host code.
This should briefly describe the implemented functionality, clearly indicate any original
developments in the code (beyond what was provided in the workshops), cite any external
sources used, and detail any optimisation strategies employed. Note that your grade will solely
depend on the quality of your code, so keep this section concise and do not exceed the word
count.
Learning Outcomes Assessed:
• LO1: demonstrate practical skills in applying parallel algorithms for solving computational
problems
• LO3: analyse parallel architectures as a means to provide solutions to complex
computational problems
Knowledge & Skills Assessed:
• Understanding of parallel programming patterns
• OpenCL parallel programming skills
• Analytical skills
• Critical thinking
• Problem solving
• Effective time management
• Written communication
Assessment Submission Instructions:
The deadline for submission of this work is included in the School Submission dates on
Blackboard. All developed code should be submitted as a single ZIP file via the Blackboard
upload area for this assessment item. Please remove all compiled binary and temporary files to
reduce the size of the overall submission (folders such as x64, .vs, debug, release, etc).
Format for Assessment:
The submitted work should comprise OpenCL code.
DO NOT include this briefing document with your submission.
Feedback Format:
Written feedback will be provided via Blackboard.
Additional Information for Completion of Assessment:
This assessment is an individually assessed component. Your work must be presented
according to the School of Computer Science guidelines for the presentation of assessed written
work.
Please make sure you have a clear understanding of the grading principles for this component
as detailed in the accompanying Criterion Reference Grid.
If you are unsure about any aspect of this assessment component, please seek advice from a
member of the delivery team.
Assessment Support Information:
• Staff are available during their office hours and can provide feedback during this time
outside of module hours.
• Demonstrators are available online throughout the week.
Important Information on Dishonesty & Plagiarism:
University of Lincoln Regulations define plagiarism as 'the passing off of another person's
thoughts, ideas, writings or images as one's own...Examples of plagiarism include the
unacknowledged use of another person's material whether in original or summary form.
Plagiarism also includes the copying of another student's work'.
Plagiarism is a serious offence and is treated by the University as a form of academic
dishonesty. Students are directed to the University Regulations for details of the procedures and
penalties involved.
For further information, see www.plagiarism.org