Identifying Data 2023/24
Subject (*) Concurrent. Parallel and Distributed Computation Code 614G03014
Study programme
Grao en Intelixencia Artificial
Descriptors Cycle Period Year Type Credits
Graduate 2nd four-month period
Second Obligatory 6
Language
Spanish
Teaching method Face-to-face
Prerequisites
Department Enxeñaría de Computadores
Coordinador
Enes Álvarez, Jonatan
E-mail
jonatan.enes@udc.es
Lecturers
Enes Álvarez, Jonatan
E-mail
jonatan.enes@udc.es
Web
General description Nesta materia o alumno estudará o papel que o uso do paralelismo ten á hora de acelerar a execución de programas en xeral, e a Intelixencia Artificial en particular.

O coñecemento teórico partirá dos conceptos técnicos máis básicos de paralelismo, incluíndo a súa utilidade, aplicabilidad, o contexto técnico da execución de programas paralelos e a súa evolución histórica (Tema 1). Despois, exporanse as principais tecnoloxías hardware que existen actualmente para o procesamiento paralelo, así como as súas capacidades técnicas subxacentes relacionadas e necesarias para explotar o paralelismo (Tema 2). A continuación, profundarase no paralelismo con conceptos engadidos, clasificacións, posibles deseños para o seu implementación software e maneiras de analizar o seu rendemento (Tema 3). Finalmente, aplicarase todo o coñecemento previamente adquirido estudando as ferramentas e tecnoloxías modernas pondo o foco na Intelixencia Artificial (Tema 4).

No aspecto práctico, o alumno realizará diversas sesións cun enfoque incremental a fin de adquirir o coñecemento e a habilidade de programar e/ou despregar solucións de procesamiento. Empezarase con prácticas dirixidas a adquirir competencias máis técnicas e simples, e irase progresando cara a solucións máis completas, cada vez máis relacionadas á súa vez co a Intelixencia Artificial. As prácticas serán autocontenidas e fortemente enfocadas á resolución de problemas ou escenarios concretos.

Esta materia ten unha forte dependencia con materias previas como "Programación I e II", principalmente polo seu requisito técnico para a programación. En menor medida requírense coñecementos previos da materia de "Introducción a los Computadores" para comprender o comportamento empírico e o rendemento en xeral dalgúns programas cando estes execútanse nun computador.

Study programme competencies
Code Study programme competences
A4 Conocer la estructura, organización, funcionamiento e interconexión de los sistemas informáticos (computador, sistemas operativos y redes de computadores).
A5 Comprender y aplicar los principios y técnicas básicas de la programación paralela y distribuida para el desarrollo y ejecución eficiente de las técnicas de inteligencia artificial.
A6 Capacidad para realizar el análisis, diseño, implementación de aplicaciones que requieran trabajar con grandes volúmenes de datos, aplicando arquitecturas hardware/software adecuadas.
B2 Que el alumnado sepa aplicar sus conocimientos a su trabajo o vocación de una forma profesional y posea las competencias que suelen demostrarse por medio de la elaboración y defensa de argumentos y la resolución de problemas dentro de su área de estudio.
B5 Que el alumnado haya desarrollado aquellas habilidades de aprendizaje necesarias para emprender estudios posteriores con un alto grado de autonomía.
B7 Capacidad para resolver problemas con iniciativa, toma de decisiones, autonomía y creatividad.
B10 Capacidad para concebir nuevos sistemas computacionales y/o evaluar el rendimiento de sistemas existentes, que integren modelos y técnicas de inteligencia artificial.
C3 Capacidad para crear nuevos modelos y soluciones de forma autónoma y creativa, adaptándose a nuevas situaciones. Iniciativa y espíritu emprendedor.

Learning aims
Learning outcomes Study programme competences
To understand the interrelationship between operating system's software and the hardware on which it runs. A4
A6
B10
To know the different models of parallel systems and their programming A5
B7
B10
Be able to develop codes that make optimal use of the hardware resources available on the computer. A4
A5
A6
B2
B7
Being able to develop codes that run in parallel systems of concurrent, shared and distributed memory, as well as in hardware accelerators A4
A6
B2
B7
C3
To understand the importance of development, analysis and optimization of parallel codes in the context of Artificial Intelligence. B5
B10
C3

Contents
Topic Sub-topic
Chapter 1 - Introduction and previous concepts * The process and sequential program
* Lifecycle of a process
* Threads
* Paralell program
* Usefulness of parallelism
Chapter 2 - Hardware parellelism, hierarchy * Levels of parallelism
* Internal processor parallelism (hidden)
* Processor functionalities (low-level parallelism)
* Processor accessible resources (high-level parallelism)
* Pool of machines (Cluster and Supercomputer)
* Distributed computing
* Specific devices
* State of the art of processors
Chapter 3 - Software parallelism, design and implementation * Flynn taxonomy
* Frameworks and languages for parallelism
* Key concepts
* Paradigms for parallel processing
* Parallel programs analysis
* Parallel programs design
Chapter 4 - Parallelism for Artificial Intelligence * Parallelism in IA application
* Massive and distributed data processing
* Data processing in GPU

Planning
Methodologies / tests Competencies Ordinary class hours Student’s personal work hours Total hours
Guest lecture / keynote speech A4 A5 B5 B10 C3 30 20 50
Laboratory practice A5 A6 B2 B5 B7 B10 30 50 80
Objective test A4 B2 B5 B7 B10 C3 3 11 14
 
Personalized attention 6 0 6
 
(*)The information in the planning table is for guidance only and does not take into account the heterogeneity of the students.

Methodologies
Methodologies Description
Guest lecture / keynote speech * Theory sessions will introduce the basic knowledge later used on practice sessions.

* Other concepts will also be explained in detail, either because they are key to understand the technologies and techniques used on the practice sessions, or because they are more advanced and are crucial to understand the paper that parallelism has on nowadays society.
________________________________________________________________________________
Laboratory practice * Each practice lessons will be briefly explained by the teacher on a lesson class, and the students are expected to start it right away.

* Practice sessions will be self-contained and will deal with several specific problems or scenarios where parallelism plays an important role and where previously explained techniques or technologies are used.

* Each practice will focus on a single scenario or problem and will be composed of previous description and explanation, a proposed code to be analyzed and used, and a series of questions to work on. The student will have to work on the practice, starting on its first practice session and then continuing on its out-of-classroom time. The questions can range from performing an extension of the code, to performing an empirical study of its performance using several parallelism configurations, describing its behavior or functioning, or other types of questions overall focused at assessing the degree to which the student comprehended the problem and the solution.
____________________________________________
Objective test * At the end of the term, and exam will be carried out to evaluate all the subject's knowledge, primarily the concepts from the theory sessions, but also to a lesser extent the ones from the practice sessions.

Personalized attention
Methodologies
Guest lecture / keynote speech
Laboratory practice
Description
* Personalized attention will focus on supporting the students with the overall subject.

* On the one hand, personalized attention will be available for those that have some issue understanding any concept exposed on the theory sessions, so that no student has any difficulty in keeping up with the classes and with those topics that will be the subject of evaluation.

* On the other hand, personalized attention will also be available for any student that requires some help with specific issues that arise from the practice lessons, whether they are due to technical problems or more deep understanding issues of the key concepts dealt with. Although this help will be available for any practice lesson throughout the term, it is advisable to deal with any doubt or problem either during the practice lesson or shortly afterwards.
____________________________________________________________________________

Those students with an approved dispensation for non-attendance at classes can also benefit by using this personalized attention to ask for the practice briefing as it was given during the ordinary practice classes.

Assessment
Methodologies Competencies Description Qualification
Laboratory practice A5 A6 B2 B5 B7 B10 * All the practice lessons will be assessed and graded. Such assessments can be individual using a questionare, or in a group through a submission. Groups will be formed previously and once created, can not be changed throughout the course.

* The dates and timelines for practice assessments and submissions will be previously informed to the students.
________________________________________________________________________
50
Objective test A4 B2 B5 B7 B10 C3 * Written exam carried out individually at the end of the term.

* It will mainly evaluate and assess concepts from the theory lessons.

* To a lesser point, some questions will also be present to re-asses key concepts from the practice lessons.
50
 
Assessment comments
  • In order to pass the subject:
    • a minimum of 40% is required on the objective test, or final exam (2 points out of 5).
    • a minimum of 40% is required on the practice lessons (2 points out of 5).
  • Practice sessions will be NON REPEATABLE for the second chance.
  • Part-time students can attend any practice class group, once it has been previously notified.
  • Part-time students or students with approved dispensation for non-attendance at classes can submit their practice lessons taking into account the longest group-specific deadline available. In case a practice lesson is assessed using a quiz, a different date will be previously negotiated if needed.
  • In order to comply with the current legislation in regards to gender equality, 2 measures will be taken:
    • Parity groups are to be formed, as much as possible
    • All the quizzes and the final objective test will be corrected using a blind method in order to assure the student's anonimity. 

Sources of information
Basic ------------------------ (Tema 1). ------------------------.
------------------------ (Tema 2). ------------------------ .
------------------------ (Tema 3). ------------------------ .
------------------------ (Tema 4). ------------------------ .
Julio Ortega Lopera (2005). Arquitectura de computadores . Madrid : Thomson
David A. Patterson (2014). Computer organization and design: the hardware/software interface . Waltham, MA : Morgan Kaufmann
Sarah L. Harris (2021). Digital design and computer architecture . Amsterdam : Elsevier, Morgan Kaufmann
Francisco Almeida (2008). Introducción a la programación paralela. Madrid : Paraninfo Cengage Learning
Tomasz Drabas (2017). Learning PySpark . Packt Publishing
Jan Palach (2014). Parallel programming with Python . Packt Publishing
Alberto García García (2020). Programación de GPUs usando Compute Unified Device Architecture (CUDA). Paracuellos del Jarama : Ra-M
Giancarlo Zaccone (2015). Python parallel programming cookbook . Packt Publishing
Jesús Carretero Pérez (2021). Sistemas operativos: una visión aplicada. Madrid : McGraw-Hill

Complementary Peter S. Pacheco (2021). An introduction to parallel programming . Burlington, MA : Morgan Kaufmann
John L. Hennesy (2019). Computer architecture: a quantitative approach. Cambridge, Massachusetts : Morgan Kaufmann
Bertil Schmidt (2017). Parallel programming: concepts and practice . Cambridge, MA : Morgan Kaufmann
Jorge Luis Ortega-Arjona (2010). Patterns for parallel software design. Sussex, UK: Wiley series in software design patterns
John Cheng (2014). Professional CUDA C programming. Hoboken : John Wiley & Sons
William Stallings (2005). Sistemas operativos: aspectos internos y principios de diseño . Madrid : Pearson


Recommendations
Subjects that it is recommended to have taken before
Programming I/614G03006
Programming II/614G03007
Introduction to Computers/614G03012

Subjects that are recommended to be taken simultaneously
Algorithms/614G03008

Subjects that continue the syllabus

Other comments
  • It is recommended to have some knowledge and ability to program with Python, as all it will be the language used for all of the practice lessons.
  • It is recommended to have some degree of expertise with a Linux operating system, mainly process and filesystem management.


(*)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.