Programació Conscient de l'Arquitectura ( PCA )
| Crèdits: |
Departament: |
Tipus: |
Requisits: |
| 7.5 |
AC |
Optativa per l'EI
Optativa per l'ETIS
|
|
AC
- Pre-requisit per l' EI , ETIS
|
|
|
SO
- Pre-requisit per l' EI , ETIS
|
|
|
Professors
| Responsable: | Enrique Morancho Llena (enricm ac.upc.edu). |
| Altres: | Alejandro Ramírez Bellido (aramirez ac.upc.edu) Daniel Jiménez González (djimenez ac.upc.edu). |
Objectius Generals
L'alumne sera capaç de generar codi, o optimitzar codi ja existent, per adaptar-lo a les caracteristiques particulas de l'arquitectura on s'hagi d'executar, i aprofitar-ne millor els recursos disponibles.
Objectius Específics
Coneixements
- Eines de prograació i optimització de codi. Opcions de compilació.
- Optimitzacions de codi independents de l'arquitectura.
- Optimitzacions depenents de la jerarquia de memoria.
- Optimitzacions depenents de'extensions del llenguatge màquina (extensions vectorials i multimedia).
- Optimitzacions de codi per multiprocessadors i processadors multithreaded.
Habilitats
- Detectar les parts d'un programa més executades, i les parts que no s'executen de forma eficient.
- Generar codi que s'executi de forma eficient sobre una arquitectura determinada.
- Aprofitar la presencia d'extensions vectorials i multimedia.
- Aprofitar les capacitats multithreaded de l'arquitectura.
Competències
(Informació no introduïda)
Continguts
Hores estimades de:
| T |
P |
L |
Alt |
L Ext. |
Est |
A Ext. |
| Teoria |
Problemes |
Laboratori |
Altres activitats |
Laboratori extern |
Estudi |
Altres hores fora d'horari fixat |
|
1. Introducció: Programació conscient de l'arquitectura
|
| T |
P |
L |
Alt |
L Ext |
Est |
A Ext |
Total |
| 1,0 |
0 |
0 |
0 |
0 |
0 |
0 |
1,0 |
|
|
Que entenem per programació consicent de l'arquitectura i en quins casos val la pena fer-ho. Estratègies d'optimització. Avaluació del rendiment.
|
|
2. Eines de programació i optimització
|
| T |
P |
L |
Alt |
L Ext |
Est |
A Ext |
Total |
| 1,0 |
0 |
4,0 |
0 |
4,0 |
2,0 |
0 |
11,0 |
|
Mesura del rendiment dels programes. Opcions de compilació. Estudi del comportament dinàmic dels programes.
- Activitats de laboratori addicionals:
Estudi de la documentació relativa a les eines que es faran servir al laboratori.
|
|
3. Operacions de llarga latència
|
| T |
P |
L |
Alt |
L Ext |
Est |
A Ext |
Total |
| 1,0 |
0 |
4,0 |
0 |
4,0 |
2,0 |
0 |
11,0 |
|
Alternatives a algunes operacions de cost d'execució elevat i/o llarga latència. Substitució d'operacions complexes per operacions més senzilles. Memorització de resultats. Detecció de casos trivials. Us dels recursos sistema operatiu.
- Activitats de laboratori addicionals:
Estudi de la documentació relativa a les optimitzacions que es faran servir al laboratori.
|
|
4. Optimització del control de fluxe
|
| T |
P |
L |
Alt |
L Ext |
Est |
A Ext |
Total |
| 1,0 |
0 |
4,0 |
0 |
4,0 |
2,0 |
0 |
11,0 |
|
Predicció de salts. Detecció i eliminació de salts crítics. Inlining. Desenrollat de bucles.
- Activitats de laboratori addicionals:
Estudi de la documentació relativa a les optimitzacions que es faran servir al laboratori.
|
|
5. Optimització de la memòria
|
| T |
P |
L |
Alt |
L Ext |
Est |
A Ext |
Total |
| 2,0 |
0 |
8,0 |
0 |
8,0 |
4,0 |
0 |
22,0 |
|
Tamany i alineació de dades. Divisió de les dades en blocs de tamany proporcional a la memoria cache. Desambiguació de memòria.
- Activitats de laboratori addicionals:
Estudi de la documentació relativa a les optimitzacions que es faran servir al laboratori.
|
|
6. Extensions vectorials
|
| T |
P |
L |
Alt |
L Ext |
Est |
A Ext |
Total |
| 1,0 |
0 |
4,0 |
0 |
4,0 |
2,0 |
0 |
11,0 |
|
Instruccions del llenguatge màquina. Inserció de codi vectorial en codi C.
- Activitats de laboratori addicionals:
Estudi de la documentació relativa a les optimitzacions que es faran servir al laboratori.
|
|
7. Pràctiques d'optimització
|
| T |
P |
L |
Alt |
L Ext |
Est |
A Ext |
Total |
| 7,0 |
0 |
32,0 |
0 |
32,0 |
0 |
0 |
71,0 |
|
- Laboratori:
Aplicació de les tècniques d'optimització desenvolupades durant el curs a un treball d'optimització sobre una (o varies) aplicacions complertes. Discusió dels problemes i dubtes que puguin apareixer.
- Activitats de laboratori addicionals:
Plantejament de canvis a nivell algorismic i d'estructures de dades sobre l'aplicació que calgui optimitzar. Planificació de les optimitzacions a realitzar basada en estudi del codi font.
|
| - Total per tipus |
T |
P |
L |
Alt |
L Ext |
Est |
A Ext |
Total |
| 14,0 |
0 |
56,0 |
0 |
56,0 |
12,0 |
0 |
138,0 |
- Hores addicionals dedicades a l'avaluació:
|
10,0 |
- Total hores de treball per l'estudiant |
148,0 |
|
Metodologia docent
L'assignatura te una vessant majorment pràctica, recolzada sobre una base teòrica.
La base teòrica es desenvolupara en classes de discusió entre el professor i els alumnes. El professor proporcionarà referencies bibliogràfiques i documentació sobre el tema a discutir, que haurà de ser treballat pels alumnes fora d'hores de classe. Aquest material serà discutit en la següent sessió de teoria.
La vessant pràctica de l'assignatura es desenvoluparà als laboratoris docents, mitjançant la realització d'un seguit de pràctiques tutelades. La realització d'aquestes pràctiques es farà íntegrament en les hores de laboratori assignades.
Les pràctiques es dicidiran en dos grups: experiments d'abast limitat per il.lustrar aplicacions i optimitzacions determinades, i altres en que caldrà aplicar tots els coneixements adquirits per optimitzar una aplicació complerta.
Mètode d'avaluació
Seguiment del treball realitzat durant el curs en base als informes periòdics que hauran d'entregar, i participació en les discusions a classe (60%).
Defensa pública d'un dels treballs d'optimització (40%).
Bibliografía bàsica
(Informació no introduïda)
Bibliografía complementària
(Informació no introduïda)
Enllaços web
(Informació no introduïda)
Capacitats prèvies
Coneixements d'arquitectura de computadors: jerarquies de memòria, llenguatge màquina, processadors segmentats. (Assignatures EC i AC)
Coneixements de programació en C. (EC)
Coneixements de UNIX a nivell d'usuari. (SO)
|