Saltar al contingut Menu
Mapa
  • Inicio
  • Información
  • Contacto
  • Mapa

Programación Consciente de la Arquitectura (PCA)

Créditos Dept. Tipo Requisitos
7.5 (6.0 ECTS) AC
  • Optativa para la EI
  • Optativa para la ETIS
SO - Prerequisito para la EI , ETIS

Profesores

Responsable:  (-)
Otros:(-)

Objectivos Generales

El estudiante será capaz de generar código, u optimizar código ya existente, para adaptarlo a las características particulares de la arquitectura en que se deba ejecutar y aprovechar mejor los recursos disponibles.

Objectivos Específicos

Conocimientos

  1. Herramientas de programación y optimización de código. Opciones de compilación.
  2. Optimizaciones de código independientes de la arquitectura.
  3. Optimizaciones dependientes de la jerarquía de memoria.
  4. Optimizaciones dependientes de extensiones del lenguaje máquina (extensiones vectoriales y multimedia).
  5. Optimizaciones de código para multiprocesadores y procesadores multithreaded.

Habilidades

  1. Detectar las partes de un programa más ejecutadas, y las partes que no se ejecutan de forma eficiente.
  2. Generar código que se ejecute de forma eficiente sobre una arquitectura determinada.
  3. Aprovechar la presencia de extensiones vectoriales y multimedia.
  4. Aprovechar las capacidades multithreaded de la arquitectura.

Competencias

(Información no introducida)

Contenidos

Horas estimadas de:

T P L Alt L Ext. Est O. Ext.
Teoria Problemas Laboratorio Otras actividades Laboratorio externo Estudio Otras horas fuera del horario fijado

1. Introducción: Programación consciente de la arquitectura
T      P      L      Alt    L Ext. Est    O. Ext. Total 
1,0 0 0 0 0 0 0 1,0
Qué entendemos por programación consciente de la arquitectura y en qué casos vale la pena hacerlo. Estrategias de optimización. Evaluación del rendimiento.

2. Herramientas de programación y optimización
T      P      L      Alt    L Ext. Est    O. Ext. Total 
1,0 0 7,0 0 2,0 4,0 0 14,0
Medida del rendimiento de los programas. Opciones de compilación. Estudio del comportamiento dinámico de los programas.





  • Actividades de laboratorio adicionales:
    Estudio de la documentación relativa a las herramientas que se usarán en el laboratorio.

3. Operaciones de larga latencia
T      P      L      Alt    L Ext. Est    O. Ext. Total 
2,0 0 6,0 0 6,0 3,0 0 17,0
Alternativas a algunas operaciones de coste de ejecución elevado y/o larga latencia. Sustitución de operaciones complejas por operaciones más sencillas. Memorización de resultados. Detección de casos triviales. Uso de los recursos del sistema operativo.





  • Actividades de laboratorio adicionales:
    Estudio de la documentación relativa a las optimizaciones que se usarán en el laboratorio.

4. Optimización del control de flujo
T      P      L      Alt    L Ext. Est    O. Ext. Total 
2,0 0 8,0 0 10,0 5,0 0 25,0
Predicción de saltos. Detección y eliminación de saltos críticos. Inlining. Desenrollado de bucles.





  • Actividades de laboratorio adicionales:
    Estudio de la documentación relativa a las optimizaciones que se usarán en el laboratorio.

5. Optimización de la memoria
T      P      L      Alt    L Ext. Est    O. Ext. Total 
2,0 0 12,0 0 12,0 4,0 0 30,0
Tamaño y alineación de datos. División de los datos en bloques de tamaño proporcional a la memoria cache. Desambiguación de memoria.





  • Actividades de laboratorio adicionales:
    Estudio de la documentación relativa a las optimizaciones que se usarán en el laboratorio.

6. Extensiones vectoriales
T      P      L      Alt    L Ext. Est    O. Ext. Total 
2,0 0 8,0 0 8,0 3,0 0 21,0
Instrucciones del lenguaje máquina. Inserción de código vectorial en código C.





  • Actividades de laboratorio adicionales:
    Estudio de la documentación relativa a las optimizaciones que se usarán en el laboratorio.

7. Prácticas de optimización
T      P      L      Alt    L Ext. Est    O. Ext. Total 
1,0 0 8,0 0 16,0 0 0 25,0
  • Laboratorio:
    Aplicación de las técnicas de optimización desarrolladas durante el curso en un trabajo de optimización sobre una (o varias) aplicaciones completas. Discusión de los problemas y dudas que puedan aparecer.
  • Actividades de laboratorio adicionales:
    Planteamiento de cambios a nivel algorítmico y de estructuras de datos sobre la aplicación que haga falta optimizar. Planificación de las optimizaciones a realizar basada en el estudio del código fuente.

8. Programación con más de un "thread"
T      P      L      Alt    L Ext. Est    O. Ext. Total 
1,0 0 4,0 0 4,0 3,0 0 12,0
Programación usando más de un thread con tal de aprovechar los actuales procesadores multicore, pero también, algunos unicore en algunos casos.


Total por tipo T      P      L      Alt    L Ext. Est    O. Ext. Total 
12,0 0 53,0 0 58,0 22,0 0 145,0
Horas adicionales dedicadas a la evaluación 0
Total horas de trabajo para el estudiante 145,0

Metodología docente

La asignatura tiene una vertiente mayormente práctica, apoyada sobre una base teórica.

La base teórica se desarrollará en clases de discusión entre el profesor y los alumnos. El profesor proporcionará referencias bibliográficas y documentación sobre el tema a discutir, que deberá ser trabajado por los alumnos fuera de horas de clase. Este material será discutido en la siguiente sesión de teoría.

La vertiente práctica de la asignatura se desarrollará en los laboratorios docentes, mediante la realización de un conjunto de prácticas tuteladas. La realización de estas prácticas se hará íntegramente en las horas de laboratorio asignadas.

Las prácticas se dividirán en dos grupos: experimentos de alcance limitado para ilustrar aplicaciones y optimizaciones determinadas, y otras en que hará falta aplicar todos los conocimientos adquiridos para optimizar una aplicación cumplida.

Para facilitar que los alumnos puedan comparar sus soluciones con las del resto de alumnos de la asignatura, la asignatura ofrece un portal web donde los alumnos podrán enviar la solución de determinados ejercicios de la asignatura.
El portal se encargará de ejecutar los programas, comprobar su corrección y de ordenar los programas presentados por los alumnos considerando el tiempo de ejecución.

Método de evaluación

La evaluación de esta asignatura tiene 5 componentes:

- A lo largo del curso se propondrán una serie de ejercicios que los alumnos deberán resolver.
La respuesta a algunos ejercicios será un programa C que deberá ser enviado a un portal web; Se considerará que el alumno ha realizado satisfactoriamente un ejercicio si, antes de la fecha límite establecida, ha enviado una solución correcta que tenga un tiempo de ejecución inferior al umbral establecido por el profesor.
La respuesta al resto de ejercicios será un breve informe (entre 1 y 3 páginas) que deberá ser enviado al profesor. Él decidirá si el informe es aceptable.
La realización satisfactoria de un mínimo del 75% de los ejercicios propuestos será condición necesaria para poder aprobar la asignatura sin tener que presentarse al examen final. Estos entregables contribuyen con un factor de seguimiento (fs) a la nota de examenes, dependiendo del % de ejercicios entregados satisfactoriamente y de la evaluación/supervisión que haga el/la profesor/a de TODOS los ejercicios que se tienen que solucionar de los laboratorios de cada tema.

Así, fs = max(0.8*((ejercicios aceptados/total) - 0.75),0) + 1.0, con las correcciones oportunas dependiendo de la evaluación/supervisión que el/la profesor/a haga de TODOS los ejercicios del documento del laboratorio (normalmente en las clases de laboratorio). Estas correcciones nunca haran que fs sea más pequeño que 1.0.

- Fm: 2 cuestionarios finales (F1 (35% de Fm) y F2 (65% de Fm)). A lo largo del curso, los alumnos deberán contestar dos cuestionarios en las horas de teoría. Su objetivo es evaluar si el/la alumno/a ha conseguido asimilar la optimizaciones de código explicadas hasta la fecha.

- En : Entrega de una memoria de la práctica final. La práctica final será un código que los/las alumnos/as han de optimizar aplicando las técnicas aprendidas durante el curso.

- Final : Examen final donde se preguntarán casos prácticos y teóricos.

- Challenge: Además, se propondrá un ejercicio a entregar mediante el portal donde se premiarán las soluciones más rápidas. Los alumnos que presenten las 10 soluciones más rápidas verán incrementada su nota final en 1 punto
(solución más rápida), 0.9 puntos (segunda solución más rápida) ... i 0.1
puntos (décima solución más rápida) respectivamente.

Siendo Fm=(0.35*F1+0.65*F2), y fs el factor de seguimiento.

La asignatura se puede aprobar de dos formas:

Si Fm >= 5 y >=75% ejercicios aceptados
NEx = MAX(Fm, Final)
En caso contrario:
NEx = Final

Por lo que la nota final queda como:

Nota Final = MIN(0.60 * NEx * fs+ 0.40 * En + Challenge, 10)

Es decir, la asignatura se puede aprobar sin realizar el examen final. Y en cualquier caso, el trabajo realizado durante las clases de laboratorio podrá ayudar a la nota final gracias al factor de seguimiento fs.

Bibliografía básica

  • BRYANT, Randal and O'HALLARON David Computer Systems: A Programmer's Perspective, Pearson International Edition, 2011/2.

Bibliografía complementaria

(Información no introducida)

Enlaces web

(Información no introducida)

Capacidades previas

Conocimientos de arquitectura de computadores: jerarquías de memoria y lenguaje máquina. (Asignaturas EC1 y EC2)

Conocimientos de programación en C. (EC1 y EC2)

Conocimientos de UNIX a nivel de usuario. (SO)


Compartir

 
logo FIB © Facultad de Informática de Barcelona - Contacto - RSS
Esta web utiliza cookies propias para ofrecerle una mejor experiencia y servicio. Si continúa la navegación, entendemos que acepta nuestra política de cookies. Versión clássica Versión móvil