Cómputo Paralelo
Datos Generales
Nombre de la asignatura Nivel de formación Clave de la asignatura
Cómputo Paralelo Licenciatura CU268
Prerrequisitos Area de formación Departamento
75 - Departamento de Sistemas de Información
Academia Modalidad Tipo de asignatura
PROGRAMACION Presencial Curso-Taller
Carga Horaria
Teoría Práctica Total Créditos
40 40 80 8
Trayectoria de la asignatura
-
Contenido del programa
Presentación

La computación paralela es una forma de cómputo en la que muchas instrucciones se ejecutan simultáneamente, operando sobre el principio de que problemas grandes, a menudo se pueden dividir en unos más pequeños, que luego son resueltos simultáneamente (en paralelo). Hay varias formas diferentes de computación paralela: paralelismo a nivel de bit, paralelismo a nivel de instrucción, paralelismo de datos y paralelismo de tareas.

El paralelismo se ha empleado durante años, sobre todo en la computación de altas prestaciones, pero el interés en ella ha crecido últimamente debido a la evolución tecnológica donde cada vez es mas común encontrar procesadores multinucleo y sistemas de multiples procesadores, esto por las límitaciones físicas que han impedido el aumento de frecuencia de los procesadores. Éstas limitaciones incluyen el consumo de energía –y por consiguiente la generación de calor– de las computadoras constituye una preocupación en los últimos años.

La computación en paralelo se ha convertido en el paradigma dominante en la arquitectura de computadores, principalmente en forma de procesadores multinúcleo o "multicore"

Objetivos del programa
Objetivo general
El estudiante utilizará los conceptos, técnicas y herramientas fundamentales del computo en paralelo utilizado hoy en día en diferentes tipos de dispositivos
Contenido
Contenido temático

Unidad I. Conceptos básicos

Unidad II. Arquitecturas paralelas

Unidad III. Balance de Carga

Unidad IV. Memoria Compartida

Unidad V. Memoria Distribuida


Contenido desarrollado

Unidad I. Conceptos básicos (6hrs teoría - 6hrs práctica)

  • Definición de proceso y estado del mismo
  • Paradigma de la programación en paralelo
  • Modelos de arquitectura (MIMD, SIMD, SISD, MISD)
  • Cómputo paralelo y programación en paralelo
  • Memoria compartida y distribuida

Unidad II. Arquitecturas paralelas (6hrs teoría - 6hrs práctica)

  • Sistemas de Arquitectura (SMP, MPP, COW, DSM)
  • Modelos de acceso a memoria (UMA, NUMA, COMA, NORMA)
  • Ley de Amdhal
  • Ley de Gustafson
  • Técnicas de algoritmos paralelos (PRAM, APRAM, C3)

Unidad III. Balance de carga (4hrs teoría - 4hrs práctica)

  • Medición de balance de carga
  • Asignación dinámica de procesos
  • Balanceo de carga dinámico, robusto y no centralizado

Unidad IV. Memoria compartida (12hrs teoría - 12hrs práctica)

  • Java
    • Hilos
    • Sincronización

  • Computo paralelo
    • Semáforos, Monitores
    • Clase observer y observable

  • OpenMP
    • Hilos básicos en C, POSIX
    • Uso del pragma
    • Selección de un procesador para ejecutar cierta tarea
    • Manejo de eventos (scheduler)
    • Bloqueo

  • C#
    • Hilos
    • Task Parallel Library
    • Task-based Asynchronous Pattern
    • BackgroundWorker
    • Bloqueo

Unidad V. Memoria compartida y distribuida (12hrs teoría - 12hrs práctica)

  • MPI
    • Comunicar datos entre dos procesos
    • Realizar operaciones de comunicación entre grupos de procesos
    • Crear tipos arbitrarios de datos

  • Programación para procesadores vectoriales
    • Arquitectura escalar y arquitectura vectorial
    • Organizaciones y Segmentación
    • Cinco organizaciones del procesador vectorial
    • Compilación vectorial


Actividades prácticas
Trabajos de investigación, Prácticas en Laboratorio, Análisis y Planteamiento de sus proyectos de aplicaciones
Metodología

Métodos de enseñanza-aprendizaje:

  • Descriptivo
  • Analítico
  • Deductivo

Técnicas de aprendizaje:

  • Individuales
  • Laboratorio
  • Estudio de casos

Actividades de aprendizaje:

  • Prácticas de laboratorio
  • Ejercicios en casa y tareas
  • Casos prácticos

Recursos didácticos a utilizar:

  • Pintarrón
  • Cañón
  • Equipo de cómputo
Evaluación
  • 30% Prácticas
  • 50% Proyecto particular para cada framework
  • 10% Mapas conceptuales
  • 10% Actividades en clase
Bibliografía

Libro

Using OpenMP―The Next Step: Affinity, Accelerators, Tasking, and SIMD (Scientific and Engineering Computation)

Van Der Pas, Ruud. Terboven, C (2017) MIT Press No. Ed 1

ISBN: 978-0262534789

Libro

Using Mpi: Portable Parallel Programming with the Message-Passing Interface

Gropp, William. Lusk, Ewing. S (2014) The MIT Press No. Ed 3

ISBN: 978-0262527392

Libro

Programación Asíncrona con C#: Manual de estudiante

Muñoz Serafín, Miguel (2017) MVP - Most Valuable Proff No. Ed 1

ISBN: 978-1549913112

Libro

An Introduction to Parallel Programming

Pacheco, Peter (2011) Morgan Kaufmann Publisher No. Ed 1

ISBN: 978-0123742605

Libro

Java Threads and the Concurrency Utilities

Friesen, Jeff (2015) Apress No. Ed 1

ISBN: 978-1484216996

Libro

C++ Concurrency in Action: Practical Multithreading

Williams, Anthony (2012) Manning Publications No. Ed 1

ISBN: 978-1933988771

Libro

Seven Concurrency Models in Seven Weeks: When Threads Unravel (The Pragmatic Programmers)

Butcher Paul (2014) Pragmatic Bookshelf No. Ed 1

ISBN: 978-1937785659

Libro

The Art of Concurrency: A Thread Monkey's Guide to Writing Parallel Applications

Breshears, Clay (2009) O'Reilly Media No. Ed 1

ISBN: 978-0596521530

Libro

introduccion a la programacion paralela

Almeida, Francisco (2014) Paraninfo No. Ed 1

ISBN: 9788497326742

Otros materiales

-

Perfil del profesor
El profesor que imparta esta materia debe ser preferentemente egresado de una de las siguientes carreras: Ingeniería en Computación, Licenciatura en Informática, Ingeniería en Sistemas Electrónicos o Computacionales, o Licenciatura en Sistemas/Tecnologías de Información. Además, es recomendable que el profesor posea estudios de posgrado en un área relacionada a las Ciencias computacionales. Es deseable que el profesor tenga experiencia en el análisis, diseño e implementación de sistemas de información visual y sobre todo en programación orientada a objetos con manejo de eventos.
Lugar y fecha de su aprobación

ZAPOPAN JALISCO, Octubre 2019


Instancias que aprobaron el programa

ACADEMIA DE PROGRAMACIÓN

COLEGIO DEPARTAMENTAL