ECTS credits ECTS credits: 4.5
ECTS Hours Rules/Memories Hours of tutorials: 2 Expository Class: 10 Interactive Classroom: 30 Total: 42
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: Sin docencia (Extinguida)
Enrolment: No Matriculable
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, 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 manycore systems.
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 3: 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 4: Performance optimization techniques
The lab sessions can be done on the computers in the labs, but they must be executed on the CESGA nodes for the CUDA part. Some of the exercises can also be programmed in the students' personal computer.
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. (12 hours)
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.
Cook, Shane. CUDA programming: a developer's guide to parallel computing with GPUs. Newnes, 2012.
Specific GPU programming book that delves into this architecture and covers design issues for GPU-based computing systems.
In case of changing to a scenario of distancing (scenario 2) or closure of the facilities (scenario 3) see the Contingency Plan in the Observations section to know the adaptations in the access to the bibliography.
o 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.
In case of changing to a scenario of distancing (scenario 2) or closure of the facilities (scenario 3), see Contingency plan in the Observations section to find out the adaptations in the teaching methodology.
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.
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.
In case of changing to a scenario of distancing (scenario 2) or closure of the facilities (scenario 3) see the Contingency Plan in the Observations section to know the adaptations in the evaluation system.
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.
Contingency Plan
Teaching methodology. In case of switching to a scenario of distancing (scenario 2) or closing of the facilities (scenario 3), the theory classes will be synchronous through Microsoft Teams and asynchronous by recorded video (available on the virtual campus of the subject), following the weekly planning. The synchronous/asynchronous class decision will be marked by the type of activity to be carried out during the class, for example, presentations, seminars and interaction of topics with students will require a synchronous session.
In case of moving to scenario 3, the practices can be developed as planned by accessing the Supercomputing Centre of Galicia remotely. At the time set for the lab classes we will use Microsoft Teams to resolve doubts synchronously. We will use the virtual campus forums for extra support in resolving questions.
Assessment system. In case of switching to a scenario of distancing (scenario 2) or closing of the facilities (scenario 3), participation in the development of the theoretical classes will be adapted to participation in the subject forum on the virtual campus and in the synchronous theory sessions through Microsoft Teams. Labs will continue to be continuously evaluated during the development of classes with deliveries through the virtual campus.
Basic bibliography. In case of switching to a scenario of closing of the facilities (scenario 3) the basic bibliography can be consulted online by accessing with the institutional account, except the book by T.G. Mattson, B.A. Sanders and B.L. Massingill, Patterns for Parallel Programming, which can be replaced by the corresponding scientific articles. This material will be available on the subject's virtual campus.
Pablo Quesada Barriuso
Coordinador/a- Department
- Electronics and Computing
- Area
- Computer Architecture and Technology
- Phone
- 881813538
- pablo.quesada [at] usc.es
- Category
- Professor: LOU (Organic Law for Universities) PhD Assistant Professor
Monday | |||
---|---|---|---|
09:00-11:00 | Grupo /CLIL_01 | Spanish | Lab PP-2 |
Wednesday | |||
15:30-16:30 | Grupo /CLE_01 | Spanish | Classroom A4 |