ECTS credits ECTS credits: 4.5
ECTS Hours Rules/Memories Student's work ECTS: 70.5 Hours of tutorials: 2 Expository Class: 10 Interactive Classroom: 30 Total: 112.5
Use languages Spanish, Galician
Type: Ordinary Degree Subject RD 1393/2007 - 822/2021
Departments: Electronics and Computing
Areas: Computer Architecture and Technology
Center Higher Technical Engineering School
Call: Second Semester
Teaching: With teaching
Enrolment: Enrollable
This course focuses on preparing the students for the needs of efficient code design and creation capable of fully exploiting the capabilities of the hardware available in multicore and multiprocessor systems, as well as in manycore systems (GPU), available today and in the future. From the description of multicore architectures, we will analyse different techniques for the design of parallel algorithms, and we will focus on programming mechanisms for shared memory and GPU.
Topic 1: Multicore and manycore systems
- Introduction to parallel computing architecture
- Shared and distributed memory systems
- Multicore and manycore systems
Topic 2: Performance characterization
- Scaling and Amdahl's Law
- Speedup and isoefficiency
Topic 3: Introduction to parallel programming
- Parallel programming for shared memory systems: OpenMP
- Parallel programming for manycore systems: CUDA
Topic 4: Techniques for adapting applications to multicore and multiprocessor systems
- Analysis of the problem
- Problem decomposition guided by tasks and data
- Communication and synchronization
- Data dependency
- Granularity
Topic 5: Performance optimization techniques
The lab sessions can be done on the computers in the labs as well as in the students' personal computer , but they must be executed on nodes of the CESGA's supercomputer.
Block 1: Basic programming with OpenMP and CUDA. The objective is to acquire the basic knowledge to carry out parallel programs in shared memory and manycore systems.
Block 2: Parallel programming of basic algorithms. The objective is to apply the parallel programming methodologies seen in class using OpenMP and CUDA. In this block we will do a performance study.
Block 3: Parallel programming project. The objective is to parallelize an application of certain complexity by applying the methodologies seen in class and make a detailed study of scaling with number of processors and problem size (performance characterization) using OpenMP and compare the results with a parallel version in GPU. This project can be done in groups.
Basic:
- T.G. Mattson, B.A. Sanders and B.L. Massingill, Patterns for Parallel Programming, Addison-Wesley, 2005.
This is the fundamental reference for the theoretical basis of parallel programming through a methodology based on concurrency patterns that serves as a support for the contents of the subject.
- P. Pacheco, "An Introduction to Parallel Programming", Morgan Kaufmann Publishers, 2011.
Introduction to parallel programming that explains how to develop parallel programs using, among others, the OpenMP programming model.
- Kirk, D. B., & Wen-mei, W. H. (2013). Programming massively parallel processors: a hands-on approach. Morgan Kaufmann Publishers.
Basic concepts of parallel programming and GPU architecture. It explores in detail various techniques for building parallel programs in GPU.
Complementary:
- Schmidt, Bertil, et al. Parallel programming: concepts and practice. Morgan Kaufmann, 2017.
This book covers basic aspects of parallel programming and introduces, among others, the OpenMP programming models and the parallel architecture of NVIDIA GPUs.
Alessandrini, V. (2015). Shared memory application programming: Concepts and strategies in Multicore application programming. Morgan Kaufmann.
To contribute to achieve the competences described in the document "Grado de Ingeniería Informática de la USC" (CG4, CG9, TR1, TR2, TR3, RI1, RI6, RI7, RI8, RI14).
Competences associated with the programming module:
- To know how to determine the computational complexity of an algorithm and to evaluate the most suitable implementation of a given algorithm according to the available resources (memory and execution time).
- To know the different programming paradigms and to be able to choose the most appropriate in every situation.
This course has a focus on learn by doing. We have the following type of classes.
Regular classes: in these classes the professor will present briefly the theoretical contents that serve as the basis for the practical programming classes looking for a participative environment by the students through the exposition of some theory topics.
Lab classes: these classes will be devoted to developing the labs proposed for the course. Basically, they will consist in performing increasingly complex parallel programs up to a point of assigning a parallel programming project that can be carried out in group. Students will be the active element in these classes, and the professor will guide the learning by answering the questions and doubts raised in the labs. The guides and objectives of the labs, as well as the help material will be available on the virtual campus of the USC.
Discussion classes: in these classes the students will present their projects, discussing their implementation at different levels and the degree of scaling of the application.
The office hour (tutorías in spanish) may be held in person (schedule agreed with the students or set by the center), via email or through the virtual campus.
This course applies a continuous formative assessment system based on student participation, programming labs, and a parallel programming project to be carried out during the course. The tutorials, discussion classes and interaction in the lab sessions will allow the professor to know the degree of assimilation of the subject that the students are obtaining during the course.
Attendance is mandatory. Each of the proposed practices will have a specific end date. After this date, the practice will be considered as not performed. The practices will be evaluated during the sessions after the delivery date.
In cases of fraudulent development of exercises or tests, the provisions of the Regulations for the evaluation of student academic performance and review of grades will apply.
Regular opportunity (at the end of the course)
Participation in the development of the theoretical classes (10%). Acquisition of basic knowledge in OpenMP and CUDA (20%). Development of parallel programs in OpenMP and CUDA (30%). Parallel programming project (40%).
There is no minimum grade for participation or programming in OpenMP and CUDA, except in the parallel programming project, which must be passed with a minimum grade of 5 points out of 10.
Students that have been enrolled in this course in previous years do not keep achieved gradings in the different parts.
Recovery (July) and extraordinary evaluation
Same criteria as in the regular opportunity. The deadline for presenting the labs and the parallel programming project will be the official date of the second chance exam. The student will make a presentation of the project the day of the exam.
Conditions for qualification of “No presentado” : do not submit any lab or project.
The dedication in time can vary throughout the semester, especially in the stage of elaboration and presentation of results of practices and project .The personal work of students in a subject of 4.5 ECTS credits should be about 70.5 hours dedicated to bibliography consultation, self-study, development of scheduled activities and preparation and presentation of work.
Time dedication can vary throughout the course, especially in the stage of elaboration and presentation of results of practices and projects.
The subject is designed for the student to participate actively and on a regular basis during its course.
Recommended prerequisites: Programming I (Programación I), Programming II (Programación II), Computer Fundamentals (Fundamentos de Computadores), Computer Architecture (Arquitectura de Computadores), Operating Systems I (Sistemas Operativos I), Operating Systems II (Sistemas Operativos II). It is also interesting to have the subjects of the Fundamentals of Parallel Systems.
The course materials and electronic communications with the students will be carried out with the tools of the virtual campus of the subject.
Pablo Quesada Barriuso
Coordinador/a- Department
- Electronics and Computing
- Area
- Computer Architecture and Technology
- Phone
- 881813538
- pablo.quesada [at] usc.es
- Category
- Professor: Temporary PhD professor
Monday | |||
---|---|---|---|
09:00-11:30 | Grupo /CLIL_01 | Spanish | IA.03 |
Wednesday | |||
15:30-16:30 | Grupo /CLE_01 | Spanish | IA.S1 |
05.22.2024 16:00-20:00 | Grupo /CLIL_01 | Classroom A2 |
05.22.2024 16:00-20:00 | Grupo /CLE_01 | Classroom A2 |
07.09.2024 10:00-14:00 | Grupo /CLIL_01 | Classroom A7 |
07.09.2024 10:00-14:00 | Grupo /CLE_01 | Classroom A7 |