Postgraduate Course: Performance Programming (INFD11021)
Course Outline
| School | School of Informatics | 
College | College of Science and Engineering | 
 
| Credit level (Normal year taken) | SCQF Level 11 (Postgraduate) | 
 
| Course type | Online Distance Learning | 
Availability | Not available to visiting students | 
 
| SCQF Credits | 10 | 
ECTS Credits | 5 | 
 
 
| Summary | Application performance is one of the key requirements for HPC applications. However this is one of the more difficult requirements to satisfy: 
 
- Issues effecting performance often vary between different hardware and software environments. This requires performance issues to be frequently re-visited as the hardware and software environment changes. 
- Performance programming requires detailed knowledge of the underlying environment 
- The design decisions necessary to achieve good performance are often in conflict with other desirable properties of the program. 
 
After taking this course students should have a good practical understanding of the general issues and methodologies associated with designing building and refactoring codes to meet performance requirements. In addition they will have an overview of a number of subjects that are important in the understanding of performance on current systems. | 
 
| Course description | 
    
    The course will cover the following topics: 
- Overview of performance programming. Methodology, the optimisation cycle. 
- Designing for performance. Encapsulation as an aid to performance tuning. 
- Tools for performance programming. Profilers and code instrumentation. 
- Compilers and compiler optimisation. 
- Memory hierarchies, Memory structures and associated optimisations. 
- Performance tuning for shared memory. 
- Floating point performance. Pipelines, SIMD, vectorisation.
    
    
 | 
 
 
Entry Requirements (not applicable to Visiting Students)
| Pre-requisites | 
 | 
Co-requisites |  | 
 
| Prohibited Combinations |  | 
Other requirements |  None | 
 
 
Course Delivery Information
 |  
| Academic year 2023/24, Not available to visiting students (SS1) 
  
 | 
Quota:  None | 
 
| Course Start | 
Semester 1 | 
 
| Course Start Date | 
18/09/2023 | 
 
Timetable  | 
	
Timetable | 
| Learning and Teaching activities (Further Info) | 
 
 Total Hours:
100
(
Online Activities 30,
 Programme Level Learning and Teaching Hours 2,
Directed Learning and Independent Learning Hours
68 )
 | 
 
| Assessment (Further Info) | 
 
  Written Exam
0 %,
Coursework
100 %,
Practical Exam
0 %
 | 
 
 
| Additional Information (Assessment) | 
100% coursework split into two submissions: worth 25% and 75% respectively. The first comprises a plan for the work to be undertaken in the second . | 
 
| Feedback | 
Provided through regular weekly tutorial sessions and discussions on output of practical exercises as well as on assessed work. | 
 
| No Exam Information | 
 
Learning Outcomes 
    On completion of this course, the student will be able to:
    
        - Understand the appropriate methodology when attempting to improve code performance.
 - Understand how performance is achieved via hardware, compilers and operating systems.
 - Appreciate the limitations of systems and recognise when these will have a serious impact.
 - Interpret the observed performance of code in terms of how its execution is realised on the system.
 - Identify code regions appropriate for manual optimisation and propose, implement and evaluate optimisations on these regions.
 
     
 | 
 
 
Additional Information
| Graduate Attributes and Skills | 
Programming 
Solution Exploration and Evaluation 
Communication of technical information via written report 
Time management 
Planning, implementation, and analysis | 
 
| Keywords | Performance Programming,HPC,EPCC,Parallelism,Optimisation,Profilers,Compilers,SIMD,Vectors,Online | 
 
 
Contacts 
| Course organiser | Mr William Jackson 
Tel:  
Email:  | 
Course secretary | Mr James Richards 
Tel: 90131 6)51 3578 
Email:  | 
   
 
 |    
 
  
  
  
  
 |