• No se han encontrado resultados

Guía Docente 2017/2018

N/A
N/A
Protected

Academic year: 2021

Share "Guía Docente 2017/2018"

Copied!
11
0
0

Texto completo

(1)

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

A distancia

(2)

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

Índice

Programación Paralela ... 2

Breve descripción de la asignatura ... 2

Requisitos Previos ... 2

Objetivos de la asignatura ... 2

Competencias ... 3

Metodología ... 4

Temario ... 4

Relación con otras materias ... 7

Sistema de evaluación ... 7

Bibliografía ... 8

Web relacionadas ... 8

Recomendaciones para el estudio y la docencia ... 9

(3)

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 9:00 a 11: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.

(4)

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.

(5)

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 Evaluación 7,9 7,9 horas (7%) Tutoría 28,1 104,5 horas(93%) Estudio personal 45 Búsquedas bibliográficas 3,3 Realización de trabajos 28,1 TOTAL 112,5 7,9 104,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.

(6)

Programación Paralela

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

5

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

a. Niveles de paralelismo.

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.

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.

(7)

Programación Paralela

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

6

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 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

(8)

Programación Paralela

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

7

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 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 2. 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 3. 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 mas conveniente el uso de cada una de ellas y el rendimiento que ofrecen a nuestros códigos

Práctica 4. 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. Práctica 5. Introducción al modelo de programación OpenCL.

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

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: 25% del total de la nota. - Prueba final: 25% del total de la nota.

- Evaluación de prácticas y problemas: 40% del total de la nota. - Participación: 10% del total de la nota.

Evaluación del desarrollo de la práctica final en los criterios establecidos en el enunciado de la práctica.

(9)

Programación Paralela

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

8

Se valorará a partir de la entrega de diferentes tareas voluntarias, así como de la participación en los diversos mecanismos de tutorización lo que se valorará en el % de participación. Se tendrá en cuenta no solamente la cantidad de la participación, sino la calidad de la misma. Tanto en el planteamiento de dudas como en la resolución de las de los compañeros en la herramienta de foros del campus virtual.

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, 2010

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

(10)

Programación Paralela

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

9

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 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 campús 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 realicen. Estas serán moderadas por el profesor y las reorientará hacia el propósito formativo.

(11)

Programación Paralela

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

10

• 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.

Referencias

Documento similar

Debido al riesgo de producir malformaciones congénitas graves, en la Unión Europea se han establecido una serie de requisitos para su prescripción y dispensación con un Plan

Como medida de precaución, puesto que talidomida se encuentra en el semen, todos los pacientes varones deben usar preservativos durante el tratamiento, durante la interrupción

[r]

[r]

[r]

La Normativa de evaluación del rendimiento académico de los estudiantes y de revisión de calificaciones de la Universidad de Santiago de Compostela, aprobada por el Pleno or-

La combinación, de acuerdo con el SEG, de ambos estudios, validez y fiabilidad (esto es, el estudio de los criterios de realidad en la declaración), verificada la

Con el cometido de evaluar la credibilidad del testimonio en casos de violencia de gé- nero, a la vez que la huella psíquica con- trolando una potencial simulación, hemos