La práctica consiste en la realización de un optimizador que trabajará sobre
código intermedio representado como árbol sintáctico abstracto. La práctica se
implementará con el lenguaje de programación CoSeL (CrossVisions).
Las optimizaciones realizadas sobre el árbol sintáctico abstracto serán:
La gramática del lenguaje de programación que se optimizará en la práctica es:
<Program>::={<DecFun>
| <DecVar> | <Instrucción>}
<DecFun>::=(Fun|Proc) Id "(" [<DecParametro> {,
<DecParametro>}] ")" => <Instrucción>
<DecVar>::= Var Id ;
<Instrucción>::=
Id = <Expresión> ; |
Id "(" [<expresión> {, <expresión>}]
")"; |
<DecVar> |
"{" { <Instrucción> | <DecFun>
|<DecVar>} "}" |
if "("<Expresión>
")"<Instrucción> [else <Instrucción>] |
while "("<Expresión>
")"<Instrucción> |
do <Instrucción> while "("<Expresión>
")"; |
for (<generador>) <Instrucción>|
return <Expresión> ; |
<Expresión> ; |
switch "(" <Expresión> ")"
"{"<Literal> => <Instrucción>}[<Others> =>
<Instrucción>]"}"
<DecParametro>::=Id[":"<Tipo>]
<Tipo>::=Id|Int|Char|Real
<Literal>::=Literal_string|Literal_char|Num
<generador>::=
Id (<- <expresión> [.. <expresión>] | <-~ <expresión>
[.. <expresión>])
<Expresión>::=<TerBool> { "||"<TerBool> }
<TerBool>::= <FacBool> { "&&"<FacBool> }
<FacBool>::=<ExpArit> [ (>|<|>=|<=|==|!=)
<ExpArit> ]
<ExpArit>::=<Termino> { (+|-) <Termino> }
<Termino>::= <Factor> { (*|/|div|mod) <Factor> }
<Potencia>::=
<Factor> { (**<Potencia> }
<Factor>::= - <Factor> | ( <Expresión> ) | <Operando>
<Operando>::= Num |
Literal_string |
Literal_char |
"[" <Expresión> {,<Expresión>}
"]" |
Id ['(' [<Expresión> {, <Expresión>}] ')'] | Let
Id [:<Tipo>]=<Expresión>{,Id[:<Tipo>]=<Expresión>} in
<Expresión>
La explicación de las optimizaciones a realizar se encuentra en:
Se puede acceder al horario de las sesiones de prácticas a través de neptu.uab.es, en la sección Horaris.
La información actualizada de cada práctica será colgada a más tardar el Lunes de la semana en la que tendrían clase de laboratorio los grupos 1,3 y 5. Una vez publicada, la fecha de entrega será, para todos los grupos, una semana después de la clase de laboratorio de los grupos 2 y 4, teniendo todos los alumnos el mismo tiempo para realizar las prácticas.
Para apuntarse a las sesiones de prácticas se utiliza la Aplicación de gestión de grupos de prácticas.
Los grupos se abrirán el 27 de Febrero a las 14h00.
Hay 5 grupos de prácticas presenciales que tienen el siguiente horario:
Grupo 1:
Laboratorio: LII3. Hora: Viernes, 11:00 - 13:00h
(9 Marzo, 23 Marzo, 13 Abril, 27 Abril y 11 de Mayo)
Grupo 3: Laboratorio: LII3. Hora: Viernes, 13:00 -
15:00h (9 Marzo, 23 Marzo, 13 Abril, 27 Abril y 11 de Mayo)
Grupo 5: Laboratorio: LII1. Hora: Viernes, 16:00 -
18:00h (9 Marzo, 23 Marzo, 13 Abril, 27 Abril y 11 de Mayo)
Grupo 2: Laboratorio: LII3. Hora: Viernes, 11:00 - 13:00h
(16 Marzo, 30 Marzo, 20 Abril, 4 Mayo y 18 de Mayo)
Grupo 4: Laboratorio: LII1. Hora: Viernes, 16:00 -
18:00h (16 Marzo, 30 Marzo, 20 Abril, 4 Mayo y 18 de Mayo)
La asistencia al
laboratorio es totalmente opcional y los grupos NO estarán asociados a
ningún horario. Las sesiones se organizan como un laboratorio abierto.
El profesor responsable de las prácticas atenderá las dudas de los alumnos, que
pueden asistir a cualquiera de las sesiones en cualquier momento. Se otorgará
preferencia a los alumnos que quieran resolver alguna duda a la hora de ocupar
los ordenadores del laboratorio integrado.
Adicionalmente, hay un grupo de prácticas NO presencial, para aquellos alumnos que no deseen asistir a las prácticas.
NOTA: No asistir a clase de prácticas no afecta a la evaluación de las prácticas.
Primera sesión:
Práctica: Folding
Publicación Enunciado: 5 de Marzo
Fecha límite para la entrega: 23 de Marzo 23h59
Profesor: Jorge Bernal
Segunda sesión:
Práctica: Reducción de potencia
Publicación Enunciado: 19 de Marzo
Fecha límite para la entrega: 13 de Abril 23h59
Profesor: Jorge Bernal
Tercera sesión:
Práctica: Propagación de constantes
Publicación Enunciado: 10 de Abril
Fecha límite para la entrega: 27 de Abril 23h59
Profesor: Marc Castelló
Cuarta sesión:
Práctica: Loop unrolling
Publicación Enunciado: 23 de Abril
Fecha límite para la entrega: 11 de Mayo 23h59
Profesor: Jorge Bernal
Quinta sesión:
Práctica: Reducción de frecuencia y Optimización Combinada
Publicación Enunciado: 7 de Mayo
Fecha límite para la entrega: 25 de Mayo 23h59
Fecha límite entrega prácticas suspensas 1 a 4: 25 de Mayo 23h59
Fecha límite entrega prácticas suspensas 5 y combinada: 12 de Junio 23h59
Profesor: Jorge Bernal
Las entregas se realizarán a través del PSG excepto
las prácticas de recuperación que se entregarán por e-mail al profesor de
prácticas correspondiente.
Las entregas de la prácticas constarán de:
Los algoritmos descritos deberán funcionar, y se probarán para su corrección con el juego pruebas que se indica en el enunciado. Cada entrega Irá acompañada por el fichero .csl que corresponda a la entrega (Más detalles sobre este fichero en el enunciado de cada práctica).
La nota de cada una de las seis entregas (sobre 10) vendrá dada por:
La nota total se calculará por la siguiente fórmula (se modificará según el contenido de las entregas):
Nota prácticas = 0.15 * Folding + 0.15 * Reducción de Potencia+ 0.15 * Propagación de Constantes+ 0.2 * Loop Unrolling+ 0.2 *Reduccón de Frecuencia + 0.15 * Optimización Combinada
El mismo día del examen de teoría se llevará a cabo un examen de prácticas. El objetivo de éste examen es verificar si se han comprendido los conceptos básicos de cada una de las prácticas desarrolladas en las sesiones de laboratorio.
Notas importantes sobre el examen de prácticas:
Universitat Autònoma de
Barcelona
Edifici Q
08193 Bellaterra (Barcelona)
Catalunya - Spain
Javier Sánchez,
Jorge Bernal
Ultima Modificación: 7-05-2012
Caduca el 30-09-2012