guía docente 2017/2018 - ucam.edu · en esta práctica introducimos el modelo de programación...

12
hola Universidad Católica San Antonio de Murcia – Tlf: (+34) 968 278 160 [email protected] – www.ucam.edu Guía Docente 2017/2018 Programación paralela Parallel Programming Grado en Ingeniería Informática Presencial

Upload: vunhi

Post on 11-Nov-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

hola

Universidad Católica San Antonio de Murcia – Tlf: (+34) 968 278 160 [email protected] – www.ucam.edu

Guía Docente 2017/2018

Programación paralela

Parallel Programming

Grado en Ingeniería Informática

Presencial

Programación Paralela

Programación Paralela - Tlf: (+34) 968 278 821

1

ÍndiceProgramación Paralela ........................................................................................................ 2

Breve descripción de la asignatura ................................................................................... 2

Requisitos Previos .............................................................................................................. 2

Objetivos de la asignatura .................................................................................................. 2

Competencias ...................................................................................................................... 3

Metodología ......................................................................................................................... 4

Temario ................................................................................................................................. 5

Relación con otras materias ............................................................................................... 7

Sistema de evaluación ........................................................................................................ 7

Bibliografía ........................................................................................................................... 9

Web relacionadas ................................................................................................................ 9

Recomendaciones para el estudio y la docencia ............................................................. 9

Material necesario ............................................................................................................. 10

Programación Paralela

Programación Paralela - Tlf: (+34) 968 278 821

2

Programación Paralela Módulo: Común de la rama de informática. Materia: Programación. Carácter: Obligatorio. Nº de créditos: 4,5 ECTS. Unidad Temporal: 3er Curso – 1er Semestre Profesor de la asignatura: José María Cecilia Canales (web profesorado). Email: [email protected] Horario de atención a los alumnos/as: Martes 13:00 a 14:00. Fuera de ese horario se puede

solicitar cita vía correo electrónico al indicado en la línea anterior. Profesor coordinador de módulo: Andrés Muñoz Ortega. Profesor coordinador de curso: José M. Cecilia Canales

Breve descripción de la asignatura En esta asignatura se introduce al alumno en programación paralela. Veremos los distintos modelos tradicionales de programación paralela, así como los últimos desarrollos de arquitecturas masivamente paralelas. Concretamente nos centraremos en las unidades de procesamiento gráfico de Nvidia, y en su modelo de programación CUDA.

Brief Description In this subject, we will cover different topics of programming parallel systems. We will see traditional parallel programming models such as shared and distributed memory, and the emergent massively parallel architectures such as the Graphics Processing Units (GPUs) using the CUDA programming model.

Requisitos Previos Conocimiento del lenguaje C/C++.

Objetivos de la asignatura 1. Comprender los conceptos de la programación paralela. El nuevo paradigma de

programación, los beneficios y las contrariedades que puede acarrear. 2. Comprender los conceptos de sincronización y exclusión mutua. 3. Entender y enumerar las características de arquitecturas con memoria compartida y

distribuida. 4. Conocer algunos problemas paradigmáticos de la programación Concurrente y ser capaces

de resolverlos. 5. Saber traducir entre semáforos y monitores y a la inversa. 6. Explicar adecuadamente las diferencias entre los sistemas basados en paso de mensajes y

los basados en variables compartidas.

Programación Paralela

Programación Paralela - Tlf: (+34) 968 278 821

3

7. Enumerar las características propias de los sistemas basados en paso de mensajes síncronos y los asíncronos.

8. Conocer las condiciones para que se produzca un interbloqueo, así ́ como las técnicas de manejo de los mismos.

Competencias Competencias transversales

T1: Capacidad de análisis y síntesis.

T4: Resolución de problemas.

T6: Trabajo en equipo.

T11: Razonamiento crítico.

T14: Aprendizaje autónomo.

T15: Adaptación a nuevas situaciones.

T16: Creatividad e innovación.

T21: Capacidad de reflexión.

T22: Comprender los puntos principales de textos claros y en lengua estándar si tratan sobre cuestiones relacionadas con el ámbito de estudio.

Competencias específicas

C6: Conocimiento y aplicación de los procedimientos algorítmicos básicos de las tecnologías informáticas para diseñar soluciones a problemas, analizando la idoneidad y complejidad de los algoritmos propuestos.

C7: Conocimiento, diseño y utilización de forma eficiente los tipos y estructuras de datos más adecuados a la resolución de un problema.

C8: Capacidad para analizar, diseñar, construir y mantener aplicaciones de forma robusta, segura y eficiente, eligiendo el paradigma y los lenguajes de programación más adecuados.

C13: Conocimiento y aplicación de las herramientas necesarias para el almacenamiento, procesamiento y acceso a los Sistemas de información, incluidos los basados en web.

C14: Conocimiento y aplicación de los principios fundamentales y técnicas básicas de la programación paralela, concurrente, distribuida y de tiempo real.

Resultados de aprendizaje RA 2.3.11. Identificar los conceptos principales, beneficios y características del paradigma de la programación paralela y concurrente.

Programación Paralela

Programación Paralela - Tlf: (+34) 968 278 821

4

RA 2.3.12. Explicar, identificar y resolver problemas en la compartición y sincronización de datos.

RA 2.3.13. Describir el modo de funcionamiento e implementar correctamente semáforos y monitores.

RA 2.3.14. Describir y aplicar las soluciones basadas en el paso de mensajes, tanto síncrono como asíncrono.

RA 2.3.15. Definir y aplicar correctamente el concepto de interbloqueo, su prevención y detección.

RA 2.3.16. Identificar escenarios adecuados a la implementación del paradigma de programación paralela y concurrente.

Metodología

Metodología Horas Horas de trabajo presencial

Horas de trabajo no presencial

Clases en el Aula 14,4

45 horas (40 %) Evaluación 3,6

Prácticas 18

Tutorías 9

Estudio personal 26,2

67.6 horas

(60 %)

Lecturas recomendadas y búsqueda de

información

5,9

Realización de ejercicios,

presentaciones, trabajos y casos

prácticos

30,4

Actividades de aprendizaje virtual

5,1

TOTAL 112.5 45 67.6

Programación Paralela

Programación Paralela - Tlf: (+34) 968 278 821

5

Temario

Programa de la enseñanza teórica Tema 1. Introducción. Conceptos básicos de paralelismo.

1. Noción de computación paralela.

2. Necesidad de la computación paralela.

a. Limitaciones físicas de la computación secuencial.

b. Problemas con complejidad elevada.

c. Limitaciones físicas de la computación paralela.

3. Aspectos de la programación paralela.

a. Niveles de paralelismo.

b. Arquitectura básica de computadores.

c. Consideraciones del lenguaje C.

Tema 2. Modelos de los computadores paralelos.

1. Introducción.

2. Paralelismo en los computadores monoprocesador.

a. Formas básicas de paralelismo.

b. Procesadores vectoriales.

c. Procesadores escalares.

d. Técnicas multhreading.

e. Procesadores VLIW (Very Long Instruction Word)

3. Paralelismo en los computadores multiprocesadores.

a. Clasificación de los computadores paralelos.

4. Organización de los computadores paralelos.

a. Multiprocesadores con memoria compartida.

b. Multicomputadores.

c. Redes de interconexión.

d. Ventajas e inconvenientes de los multicomputadores frente a los multiprocesadores.

Programación Paralela

Programación Paralela - Tlf: (+34) 968 278 821

6

e. Redes de computadores.

f. Procesadores multinúcleo.

5. Modelos de computadores paralelos.

6. El modelo de memoria compartida.

7. Sistemas de memoria distribuida: el modelo de paso de mensajes

8. Sistemas heterogéneos masivamente paralelos.

Tema 3. Modelos de programación paralela tradicionales.

1. Visión general.

2. Programación mediante paso de mensajes: MPI.

a. Conceptos básicos de MPI.

b. Operaciones de comunicación colectiva.

3. Programación en memoria compartida: OpenMP.

a. Conceptos básicos de OpenMP.

b. Definición de regiones paralelas.

c. Ejecución de bucles en paralelo.

d. Ejecución de secciones de código en paralelo

e. Combinación de directivas.

f. Sincronización.

Tema 4. Modelos de programación paralela emergentes.

1. Visión General

2. Programación en sistemas heterogéneos masivamente paralelos: CUDA

3. Consideración de rendimiento en CUDA

4. Estrategias algorítmicas de Optimización en CUDA

5. Problemas de localidad de datos.

6. Tratamiento de datos dinámicos y dispersos

7. Eficiencia en aplicaciones con una ingente cantidad de datos

8. Reducir el interfaz de salida

9. Depuración y evaluación de códigos CUDA

Programación Paralela

Programación Paralela - Tlf: (+34) 968 278 821

7

10. Ejecución Multi-GPU

11. Introducción al estándar OpenCL.

Programa de la enseñanza práctica Las prácticas de la asignatura consistirán en el desarrollo de diversos programas paralelos utilizando el entorno de programación CUDA. La UCAM ha sido nombrada CUDA Teaching Center por la empresa Nvidia (https://research.nvidia.com/content/cuda-teaching-centers). Para el correcto desarrollo de los ejercicios prácticos se ofrecerán diversos seminarios de manejo básico del lenguaje. Estos seminarios se enumeran a continuación:

Práctica 1. Introducción al modelo de programación OpenMP.

En esta práctica introducimos el modelo de programación OpenMP mediante el desarrollo de un ejemplo sencillo. El objetivo es conocer la sintaxis y las diferencias con el modelo de programación CUDA.

Práctica 2. Introducción al modelo de programación CUDA.

En esta práctica introducimos el modelo de programación de programación masivamente paralela, CUDA. Mostramos la interacción básica con el compilador y planteamos la realización de los primeros kernels sencillos.

Práctica 3. Modelo de hilos en CUDA.

Esta práctica tiene como objetivo mostrar las diferencias de rendimiento entre códigos con máxima ocupación de los recursos de un SM y códigos que desaprovechan estos recursos.

Práctica 4. Modelo de memorias en CUDA.

En esta práctica mostramos las distintas memorias disponibles en la arquitectura CUDA. Vemos para qué tipo de datos es más conveniente el uso de cada una de ellas y el rendimiento que ofrecen a nuestros códigos

Práctica 5. Optimización y eficiencia en la GPU.

En esta práctica mostramos las buenas prácticas de programación paralela, y en particular, de programación CUDA. Trabajamos con códigos con diferentes patrones de acceso a memoria y mostramos optimizaciones para obtener el máximo ancho de banda de nuestras aplicaciones.

Relación con otras materias Para el correcto desarrollo de esta asignatura se aconseja haber cursado las asignaturas de Sistemas Operativos, Fundamentos de Programación y Algoritmia.

Sistema de evaluación - Primera prueba parcial: 30% del total de la nota. Prueba escrita consistente en preguntas tipo test sobre contenidos teóricos de los temas y ejercicios prácticos de programación paralela realizados mediante ordenador. Se establece una nota de corte de 4.0 puntos.

Programación Paralela

Programación Paralela - Tlf: (+34) 968 278 821

8

- Evaluación de prácticas y problemas: 40% del total de la nota. Forman parte de este ítem las actividades desarrolladas en las sesiones prácticas previamente descritas. El total de los documentos y actividades realizados por los alumnos se puntuará entre 0 y 10. Para estos trabajos se establece una nota de corte mínima de 4.0 puntos. La evaluación del desarrollo de la práctica final en los criterios establecidos en el enunciado de la práctica.

Para poder superar la asignatura será necesario obtener al menos una nota de 4.0 en cada uno de los ítems anteriores. Sin embargo para superar la asignatura, la media ponderada de todas las notas deberá ser igual o superior a 5.0.

Examen final de la asignatura (Segundo Parcial): Con los mismos criterios que la primera prueba parcial. Cubrirá la segunda mitad de la asignatura y se realizará en el periodo de exámenes. Este examen se dividirá en dos partes relacionadas con los dos parcial de la asignatura. El alumno podrá recuperar las partes previamente no superadas (nota inferior a 5) o no presentadas.

En caso de no superar la asignatura en la convocatoria ordinaria, la nota de los ítems con 5.0 o superior se conservará para la convocatoria de septiembre. Los detalles sobre el sistema de evaluación se encuentran recogidos en la normativa general de la universidad.

Convocatoria de Septiembre:

El alumno solamente se examinará de la parte de la asignatura que hubiera suspendido en la convocatoria ordinaria. El valor de cada una de las pruebas será: primer parcial 30%, y segundo parcial 30%. Las pruebas prácticas suponen el 40% del total de la nota. Aquellos alumnos que suspendieran la parte práctica en la convocatoria de Junio deberán realizar de nuevo todos los ejercicios prácticos propuestos.

El alumno superará la asignatura cuando la media ponderada sea igual o superior a 5 puntos y tenga una nota de, al menos, 4 puntos en todas las partes que componen el sistema de evaluación cuya ponderación global sea igual o superior al 20%.

Si el alumno tiene menos de un 4 en alguna de las partes cuya ponderación sea igual o superior al 20%, la asignatura estará suspensa y deberá recuperar esa/s parte/s en la siguiente convocatoria dentro del mismo curso académico. La/s parte/s superada/s en convocatorias oficiales (Febrero/Junio) se guardarán para las sucesivas convocatorias que se celebren en el mismo curso académico.

En caso de que no se supere la asignatura en la Convocatoria de Septiembre, no contarán las partes aprobadas para sucesivos cursos académicos.

El sistema de calificaciones (RD 1.125/2003. de 5 de septiembre) será el siguiente:

0-4,9 Suspenso (SS)

5,0-6,9 Aprobado (AP)

7,0-8,9 Notable (NT)

9,0-10 Sobresaliente (SB)

La mención de “matrícula de honor” podrá ser otorgada a alumnos que hayan obtenido una calificación igual o superior a 9,0. Su número no podrá exceder del 5% de los alumnos matriculados

Programación Paralela

Programación Paralela - Tlf: (+34) 968 278 821

9

en una materia en el correspondiente curso académico, salvo que el número de alumnos matriculados sea inferior a 20, en cuyo caso se podrá conceder una sola matrícula de honor.

Bibliografía Bibliografía básica

Kirk D. y Hwu W. M. Programming Massively Parallel Processors. Morgan Kaufmann, 2011.

Almeida F., Giménez D., Mantas J. M., Vidal A. M. Introducción a la programación paralela. Paraninfo Cengage Learning, 2008

Bibliografía complementaria Rauber T., Runger G. Parallel programming for multicores and Cluster systems. Springer. 2010

Sanders J. y Kandrot E. CUDA by example: An introduction to General-Purpose GPU Programming. Addison-Wesley, 2010

Timothy G. Mattson, Beverly A. Sanders, Berna L. Massingill. Patterns for Parallel Programming. Addison Wesley, 2010Mar

Web relacionadas CUDA Nvidia: (http://developer.nvidia.com/)

CUDA Books: (http://developer.nvidia.com/cuda-books)

Curso de OpenCL: http://openclnews.com/blog/opencl_tutorial_series_on_the_code_project_parts_1_8

Master de la universidad de Illinois: http://courses.engr.illinois.edu/ece408/

Curso sobre la arquitectura de la GPU: http://www.udemy.com/introduction-to-graphics-architecture/

"Programming Massively Parallel Processors with CUDA by Stanford University" http://itunes.apple.com/us/itunes-u/programming-massively-parallel/id384233322

CUDA, Supercomputing for the Masses by Rob Farber 2008. http://drdobbs.com/cpp/207200659

Web para developers de Nvidia http://developer.nvidia.com/cuda-education-training

Recomendaciones para el estudio y la docencia La asignatura requiere un seguimiento continuo por parte del alumno, ya que el contenido de cada tema se basa en el de los temas anteriores. Por ello, se recomienda estudiar conforme se

Programación Paralela

Programación Paralela - Tlf: (+34) 968 278 821

10

desarrollen los contenidos, comprender los ejemplos que se suministren y realizar los ejercicios propuestos.

Para el desarrollo exitoso de la asignatura se hace necesario seguir las indicaciones suministradas mediante el campus virtual, así como el cumplimiento de las fechas de entrega de cada tarea.

Material necesario Aplicaciones

El software a utilizar es el compilador y herramientas de programación CUDA. Estas herramientas están disponibles en la página web de la compañía (https://developer.nvidia.com/cuda-downloads). La UCAM pondrá un servidor con varias tarjetas gráficas para la resolución de las prácticas. Para conectarse remotamente al servidor, el estudiante deberá utilizar un terminal Unix, en caso de que tenga un sistema operativo de este tipo, y conectarse usando ssh. También es posible utilizar clientes ssh para Windows tipo putty o tunnelier, ambos de libre distribución.

Material didáctico Además de la bibliografía recomendada, en el campus virtual, en el apartado de recursos se proporcionará al alumno organizado en carpetas por temas el material didáctico necesario para el seguimiento de la misma. Este material estará organizado en la sección y wiki del campus virtual, que consistirá en:

• Apuntes sobre los temas tratados.

• Enlaces a otros sitios donde aumentar la información sobre los temas.

• Ejercicios para practicar, en un principio los enunciados, y posteriormente se pondrán las soluciones a los mismos.

• Presentaciones con explicación oral del profesor de los temas más importantes y/o dificultosos

• Capturas de pantalla con explicación del profesor de la realización de ejercicios prácticos, así como de lo relacionado con la instalación del entorno y puesta en marcha.

• Bibliografía y Material adicional para ampliar los conocimientos de cada asignatura.

Tutorías A través del Campus Virtual se van a establecer diferentes mecanismos de tutorización, soportados por las distintas herramientas disponibles:

• Foro: Esta herramienta está dirigida a fomentar el trabajo en grupo, ya que permite desarrollar un tema específico de forma conjunta. Su dinámica permite a los estudiantes ir nutriendo y generando un debate con los diferentes planteamientos e intervenciones que

Programación Paralela

Programación Paralela - Tlf: (+34) 968 278 821

11

realicen. Estas serán moderadas por el profesor y las reorientará hacia el propósito formativo.

• Chat: Este espacio cabe destacar como estrategia pedagógica de evaluación formativa, al ser considerado como una herramienta interactiva síncrona que permite establecer diálogos de discusión, reflexión para generar conocimiento y retroalimentación inmediata.

• Videoconferencia: Transmisión de charlas o seminarios del profesor con la participación de los alumnos.

Tutorías individuales o colectivas: ayuda al alumno a aclarar dudas, estas pueden ser presenciales (si el alumno así lo demanda) o mediante el chat, teléfono y correo electrónico.