Logo

Advanced High Performance Computing

Code: 44730
Credits: 6
2026/2027
Degree programme Type Course
Research and Innovation in Computer based Science and Engineering OP 1

Contact lecturer

Name :
Nehir Sonmez Tekin
Email :
nehir.sonmez@uab.cat

Teaching staff

Nehir Sonmez Tekin

Group languages

You can consult this information at the end of the document.

Prerequisites

Programming skills (preferably in C language).

Objectives

The fundamental objective of the subject is that students acquire the capabilities of analysis, use and evaluation of computers, for the development of advanced applications.

The basic concepts that will be described in the theoretical sessions are: parallel processing in computers, hierarchical memories, performance evaluation, and the parallel programming languages and models of these systems. The most specific objectives are the following:

1. Understand the keys ideas to obtain good performance from multi-core, multi-processor computers, and from computer accelerators (GPUs).

2. Identify the opportunities for parallelization in an algorithm or application, at different levels (instructions, iterations of a loop, calls to functions ...), and express it formally.

3. Design the data structures of an application and the algorithms that access data that favors a good performance of the memory hierarchy.

4. Analyze, design and implement parallel algorithms with abstract computation patterns (reduction, transformation ...) under programming paradigms based on shared variables and synchronization; and with current parallel programming languages.

5. Verify the functionality and evaluate the performance of parallel applications, identifying performance bottlenecks.

6. From a performance analysis point of view, select the right computer architecture for an application and/or perform code optimizations that further improve its performance.

Learning outcomes

  • CA04 (Apply high-performance computing techniques to complex problems in various fields of science or engineering.) Apply high-performance computing techniques to complex problems in various fields of science or engineering.
  • CA05 (Generate questions and hypotheses in the face of new research challenges and demonstrate originality in the way they approach and solve problems using high-performance computational techniques.) Generate questions and hypotheses in the face of new research challenges and demonstrate originality in the way they approach and solve problems using high-performance computational techniques.
  • KA06 (Describe the most suitable algorithmic patterns for different high-performance computing environments.) Describe the most suitable algorithmic patterns for different high-performance computing environments.
  • KA07 (Describe the most common performance issues that computer applications may exhibit depending on the system architecture in which they are executed.) Describe the most common performance issues that computer applications may exhibit depending on the system architecture in which they are executed.
  • KA08 (Identify the most appropriate tech stacks on the basis of cost-performance criteria to develop high-performance applications that address problems in the fields of science and engineering.) Identify the most appropriate tech stacks on the basis of cost-performance criteria to develop high-performance applications that address problems in the fields of science and engineering.
  • SA08 (Identify the performance problems of complex applications by selecting and applying the appropriate profiling techniques and tools.) Identify the performance problems of complex applications by selecting and applying the appropriate profiling techniques and tools.
  • SA09 (Optimise applications adapted to different architectures: multicore systems, distributed systems, graphics accelerators (GPUs) and hybrid systems.) Optimise applications adapted to different architectures: multicore systems, distributed systems, graphics accelerators (GPUs) and hybrid systems.
  • SA10 (Design innovative applications in the fields of science and engineering by applying theoretical models and using high-performance computing techniques and tools.) Design innovative applications in the fields of science and engineering by applying theoretical models and using high-performance computing techniques and tools.

Contents

1. Instruction-Level Parallelism: Data dependencies between instructions in a loop and dynamic reordering of its execution.


2. Data-Level Parallelism: Analysis of the data parallelism of an algorithm and SIMD execution (vectorization).


3. Task Parallelism: multi-thread and multi-core execution; Shared Memory hierarchy and data coherence; synchronization between threads.


4. Parallel Algorithms: Model of Parallelism with shared variables and synchronization. Parallel computing patterns: map, reduction, master/worker, divide & conquer and pipelined execution.


5. Performance evaluation of Applications: Analysis of complexity, parallelism and locality: Performance metrics (elapsed time, IPC, bandwidth, arithmetic intensity); Total work and critical path of parallel execution.

Learning activities and methodology

Title Hours ECTS Learning outcomes
Practices in LAB 16 0.64
Autonomous study, report writing and and presentation development 41 1.64
Study and Problem Solving 50 2
Research work 15 0.6
Attendance at theory class and theoretical exercises 26 1.04

Theory classes: Subject knowledge will be explained and illustrated with practical examples. The key learning difficulties will be identified, showing students how to complete and deepen the course contents. Practical problems will be discussed and solved, and the teacher will address the most common misunderstandings in reasoning and comprehension, resolving them for all students. These activities aim to develop students’ analysis and synthesis skills, critical reasoning, and problem-solving abilities.

Practical autonomous study case: Throughout the course, students must design, plan, carry out, present, and orally defend a practical project. The work must clearly state its objectives, include the development process, present the results with understandable diagrams, figures, and graphs, highlight the most significant aspects, and conclude with the most relevant findings. A proactive and dynamic attitude is expected, including an autonomous search for the knowledge required and a strong commitment to the project’s objectives.

Annotation: within the schedule set by the centre or degree programme, 15 minutes of one class will be reserved for students to evaluate their lecturers and their courses or modules through questionnaires.

Assessment

Continuous assessment activities

Title Weight Hours ECTS Learning outcomes
LAB exercises: Programming and Performance Evaluation 50 0 0 CA04, CA05, KA07, SA08, SA09, SA10
Written report and Oral defense of the autonomous work 30 0.5 0.02 CA05, KA06, KA07, KA08
Individual Exam 20 1.5 0.06 KA06, KA07, KA08

The dates for continuous assessment and the submission of deliverables will be published on the UAB Moodle platform (Virtual Campus) and may be subject to scheduling changes due to necessary adjustments to possible incidents. Students are required to check the Moodle platform for any updates, since the Virtual Campus is understood to be the usual channel for communication between teachers and students.

Evaluation Activities

Activity A: Written examination of theory and problems; done individually (closed book); 20% of the final grade; no required minimum grade. This part can be recovered at the end of the course.

Activity B: Lab exercises; done as a group; 50% of the final grade; required minimum grade of 5 out of 10. This part is not recoverable during all the course.

Activity C: Written report and oral defense of autonomous work; done individually; 30% of the final grade; no required minimum grade. This part can be recovered at the end of the course.

Recovery Process

The student can opt to recover activities A or C, only if he/she has done all of the activities A, B and C.

Irregularities by students, copying and plagiarism

Without prejudice to other disciplinary measures that may be deemed appropriate, any irregularity committed by a student that may result in a different rating of an assessed activity will be scored with a grade of zero. This includes copying, plagiarism, cheating, allowing others to copy, or unauthorized use of AI (e.g., Copilot, ChatGPT, or equivalents), among others. In case the teaching staff considers it appropriate, an oral test may be carried out to validate the authorship of any of the assessment tests.

All assessed activities graded in this way through this procedure will be non-recoverable. If passing any of these assessment activities is necessary to pass the course, the course will be failed directly, with no opportunity to recover in the same course. If the student fails the course because they committed irregularities in an assessed activity, the numerical final grade recorded will be the lower of 3.0 or the weighted average of the grades. In this case, the option of “passing by compensation” will not be available.

Bibliography

Parallel Programming: Techniques and Applications using Networked Workstations and Parallel Computers. Barry Wilkinson. Prentice Hall, 1999.
Designing and Building Parallel Programs: Concepts and Tools for Parallel Software Engineering. Ian Foster. Addison Wesley, 1995.
Introduction to Parallel Computing. A. Grama et alter. Addison Wesley, Second Edition, 2003.
Computer Architecture: A Quantitative Approach. 5th Edition (https://bibcercador.uab.cat/permalink/34CSUC_UAB/15r2rl8/cdi_askewsholts_vlebooks_9780123838735) John Hennessy, David Patterson, Morgan Kaufmann (Elsevier) 2018 (Cap. 4 i 5)
Structured Parallel Programming: Patterns for efficient computation M. McCool, J. Reinders, A. Robison, Elsevier, 2012
Parallel Programming for Multicore and Cluster Systems T. Rauber, G. Rünger, Springer (Elsevier), 2010
Programming Massively Parallel Processors: A Hands-on Approach D. Kirk, & W.M. Hwu, Morgan Kaufmann (Elsevier), 2010

Software

C language. OpenMP and OpenACC extensions.

Course groups and languages

The information provided is provisional until November 30. After this date, you will be able to consult the language of each group through this link. To access the information, you will need to enter the course CODE

Type of teaching Group Language Semester Shift
(TEm) Theory (master) 1 English first semester afternoon
(PLABm) Practical laboratories (master) 1 English first semester afternoon