Saltar al contingut Menu
Mapa
  • Inici
  • Informació
  • Contacte
  • Mapa

Programació Conscient de l'Arquitectura (PCA)

Crèdits Dept.
7.5 (6.0 ECTS) AC

Professors

Responsable:  (-)
Altres:(-)

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

  1. Eines de prograació i optimització de codi. Opcions de compilació.
  2. Optimitzacions de codi independents de l'arquitectura.
  3. Optimitzacions depenents de la jerarquia de memoria.
  4. Optimitzacions depenents de'extensions del llenguatge màquina (extensions vectorials i multimedia).
  5. Optimitzacions de codi per multiprocessadors i processadors multithreaded.

Habilitats

  1. Detectar les parts d'un programa més executades, i les parts que no s'executen de forma eficient.
  2. Generar codi que s'executi de forma eficient sobre una arquitectura determinada.
  3. Aprofitar la presencia d'extensions vectorials i multimedia.
  4. 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 7,0 0 2,0 4,0 0 14,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 
2,0 0 6,0 0 6,0 3,0 0 17,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 
2,0 0 8,0 0 10,0 5,0 0 25,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 12,0 0 12,0 4,0 0 30,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 
2,0 0 8,0 0 8,0 3,0 0 21,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 
1,0 0 8,0 0 16,0 0 0 25,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.

8. Programació amb més d'un "thread"
T      P      L      Alt    L Ext. Est    A Ext. Total 
1,0 0 4,0 0 4,0 3,0 0 12,0
Utilització de més d'un thread per aprofitar els actuals processadors "multicore", però també aprofitar millor un únic core en alguns casos.


Total per tipus T      P      L      Alt    L Ext. Est    A Ext. Total 
12,0 0 53,0 0 58,0 22,0 0 145,0
Hores addicionals dedicades a l'avaluació 0
Total hores de treball per l'estudiant 145,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 dividiran 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.

Per facilitar que els alumnes puguin comparar les seves solucions amb les de la resta d'alumnes de l'assignatura, l'assignatura ofereix un portal web on els alumnes podran enviar la solució de determinats exercicis de l'assignatura.
El portal s'encarregarà d'executar els programes, comprovar la seva correctesa i d'ordenar els programes presentats pels alumnes considerant el temps d'execució.

Mètode d'avaluació

L'avaluació d'aquesta assignatura té 5 components:

- Al llarg del curs es proposaran una sèrie d'exercicis que els alumnes hauran de resoldre.
La solució d'alguns d'aquests exercicis serà un programa escrit en C que haurà de ser enviat a un portal web; es considerarà que l'alumne ha realitzat satisfactòriament l'exercici si, abans de la data límit establerta, ha enviat una solució correcta que tingui un temps d'execució inferior a un llindar establert pel professor.
La solució dels altres exercicis serà un informe breu (entre 1 i 3 pàgines) que haurà de ser entregat al professor; ell avaluarà si l'informe és satisfactori.
La realització satisfactòria d'un mínim del 75% dels exercicis proposats serà condició necessària per poder aprovar l'assignatura sense haver de presentar-se a l'examen final.
Aquests entregables contribueixen amb un factor de seguiment (fs) a la nota final d'examens, depenent del % de exercicis entregats satisfactoriament i de l'avualació/supervisió que faci el/la professor/a de TOTS el exercicis que s'han de solucionar del laboratori de cada tema.

Així, fs = max (0.8*((exercicis aceptats/total) - 0.75),0) + 1.0 , amb les correccions oportunes depenent de l'avaluacio/supervisió que el/la professor/a faci de TOTS el exercicis del document de laboratori (normalment al mateix laboratori). Aquestes correccions mai faran que el fs sigui més petit que 1.0.

- Fm: qüestionaris (F1 (35% de Fm) i F2 (65% de Fm)). Al llarg del curs els alumnes hauran de respondre 2 qüestionaris a les hores de teoria. El seu objectiu és avaluar si l'alumne/a ha aconseguit assimilar les optimitzacions de codi explicades fins el moment.

- En : Entrega d'una memòria de la pràctica final. La pràctica final serà un codi que els/les alumnes han d'optimitzar aplicant les tècniques apreses durant el curs.

- Final : Examen final on es preguntaran casos pràctics i teòrics.

- Challenge : A més a més, es proposarà un exercici a entregar mitjançant el portal on es premiaran les solucions més ràpides. Els alumnes que presentin les 10 solucions més ràpides veuran incrementada la seva nota final en 1 punt (solució més ràpida), 0.9 punts (segona solució més ràpida),... i 0.1 punts (desena solució més ràpida) respectivament.

Sent Fm = (0.35*F1+0.65*F2) , fs el factor de seguiment.
L'assignatura es pot aprovar de dues formes:

Si Fm >= 5 i >=75% exercicis lliurats satisfactòriament:
NEx = MAX(Fm, Final)
altrament:
NEx = Final

Amb el que la Nota Final és:

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


És a dir, l'assignatura es pot aprovar sense haver de realitzar l'examen final. En qualsevol cas, el treball fet durant el curs al laboratori pot ajudar a millorar la nota amb el factor de seguiment.

Bibliografía bàsica

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

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 i llenguatge màquina. (Assignatures EC1 i EC2)

Coneixements de programació en C. (EC1 i EC2)

Coneixements de UNIX a nivell d'usuari. (SO)


Compartir

 
logo FIB © Facultat d'Informàtica de Barcelona - Contacte - RSS
Aquest web utilitza cookies pròpies per oferir una millor experiència i servei. En continuar amb la navegació entenem que acceptes la nostra política de cookies.
Versió clàssica Versió mòbil