Identifying Data 2019/20
Subject (*) Parallel Programming Code 614973102
Study programme
Mestrado Universitario en Computación de Altas Prestacións / High Performance Computing (Mod. Virtual)
Descriptors Cycle Period Year Type Credits
Official Master's Degree 1st four-month period
First Obligatory 6
Language
Spanish
Teaching method Face-to-face
Prerequisites
Department Departamento profesorado máster
Enxeñaría de Computadores
Coordinador
Martin Santamaria, Maria Jose
E-mail
maria.martin.santamaria@udc.es
Lecturers
García Loureiro, Antonio Jesús
Martin Santamaria, Maria Jose
Pichel Campos, Juan Carlos
Touriño Dominguez, Juan
E-mail
maria.martin.santamaria@udc.es
juan.tourino@udc.es
Web http://aula.cesga.es
General description Os obxetivos globales da materia son: formar ó alumno nos diversos paradigmas de programación de computadores paralelos; incidir en técnicas software para o deseño e implementación de algoritmos e aplicacións paralelas eficientes; e aplicar estas técnicas de forma práctica para a programación de computadores paralelos con diferentes arquitecturas, utilizando recursos de supercomputación como os dispoñibles no Centro de Supercomputación de Galicia (CESGA).

Study programme competencies
Code Study programme competences
A1 CE1 - Define, evaluate and select the most appropriate architecture and software to solve a problem
A2 CE2 - Analyze and improve the performance of a given architecture or software
A3 CE3 - Know the high performance computing basic concepts
A4 CE4 - Deepen in the knowledge of different programming tools and programming languages in the field of the high performance computing
A5 CE5 - Analyze, design and implement efficient parallel algorithms and applications
B1 CB6 - Possess and understand the knowledge that give a baseline or opportunity to be original in the development and/or application of ideas, often in a research environment
B2 CB7 - The students have to know how to apply the acquired knowledge and their capacity to solve problems in new or hardly explored environment inside wider contexts (or multidiscipinary) related to its area of development
B5 CB10 - The students have to possess learning skills that allows them to continue to study in a mainly self-driven or autonomous manner
B6 CG1 - Be able to search and select useful information to solve complex problems, using the bibliographic sources of the field
C1 CT1 - Use the basic technologies of the information and computing technology field required for the professional development and the long-life learning

Learning aims
Learning outcomes Study programme competences
Understand the main organizational differences in parallel architectures AJ1
AJ3
BJ1
BJ5
Understand the main programming models AJ1
AJ3
AJ4
Apply the knowledge acquired to the efficient implementation of parallel applications using different programming models AJ2
AJ5
BJ2
BJ6
CJ1

Contents
Topic Sub-topic
Parallel programming Introduction
Parallel programming paradigms
Parallel programs using shared memory directives
Parallel programs using message-passing libraries

Planning
Methodologies / tests Competencies Ordinary class hours Student’s personal work hours Total hours
Laboratory practice A1 A2 A3 A4 A5 B1 B2 B5 C1 18 54 72
Supervised projects A1 A2 A3 A4 A5 B1 B2 B5 B6 C1 0 54 54
Guest lecture / keynote speech A1 A2 A3 A4 A5 B1 23 0 23
 
Personalized attention 1 0 1
 
(*)The information in the planning table is for guidance only and does not take into account the heterogeneity of the students.

Methodologies
Methodologies Description
Laboratory practice Practical classes in the laboratory to familiarize the students, from a practical point of view, with the contents seen in the theoretical classes.
Supervised projects Realization of works in which the student has to use the acquired knowledge to solve different problems in an autonomous way.
Guest lecture / keynote speech Theoretical classes in which the content of each subject is exposed.

Personalized attention
Methodologies
Supervised projects
Laboratory practice
Description
The personalized attention in the accomplishment of the laboratory practices and the supervised projects is indispensable to direct to the students in the development of the work. It is recommended that students use the personalized attention to validate the work they are doing.

Assessment
Methodologies Competencies Description Qualification
Supervised projects A1 A2 A3 A4 A5 B1 B2 B5 B6 C1 Evaluación dos traballos académicamente dirixidos 50
Laboratory practice A1 A2 A3 A4 A5 B1 B2 B5 C1 Evaluación das prácticas 50
 
Assessment comments
The subject is divided into two parts (directive-based programming and message passing). Each part represents 50% of the final grade of the subject. To pass the subject, the student must obtain a minimum grade of 5 averaging both parts, with a minimum of 4 in each one. 

In the second chance only is possible to improve the grade of the supervised projects. The qualification of the lab practices will be the one obtained previously throughout the academic year.

Sources of information
Basic P. Pacheco (2011). An Introduction to Parallel Programming. Morgan Kaufmann Publishers
F. Almeida, D. Giménez, J.M. Manta, A.M. Vidal (2008). Introducción a la programación paralela. Paraninfo
W.P. Petersen, P. Arbenz (2001). Introduction to Paralell Computing. Oxford University Press
P.S. Pacheco (1997). Parallel Programming with MPI. Morgan Kaufmann Publishers
W. Gropp, E. Lusk and R. Thakur (1999). Using MPI-2. The MIT Press
Barbara Chapman, Gabriele Jost and Ruud Van der Pas (2008). Using OpenMP. The MIT Press

Complementary


Recommendations
Subjects that it is recommended to have taken before

Subjects that are recommended to be taken simultaneously

Subjects that continue the syllabus
Advanced Parallel Programming/614473107

Other comments


(*)The teaching guide is the document in which the URV publishes the information about all its courses. It is a public document and cannot be modified. Only in exceptional cases can it be revised by the competent agent or duly revised so that it is in line with current legislation.