PRACTICA COMPILADORES II

 


02-03-2012: Actualizada sección con gramática curso 2011/2012. Añadida normativa prácticas.


Enunciado

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:


Material

 

 

Sesiones de prácticas

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

 

 

Normativa Prácticas

  • El enunciado de cada práctica estará colgado en su web correspondiente a más tardar el lunes de la semana en que empieza dicha práctica (ver calendario anterior).
  • Se recomienda estar antentos a la sección de anuncios de la web por si hubiera actualizaciones de ficheros (como el comII.csm) o se subsanasen errores de los test propuestos, si los hubiera.
  • El profesor de prácticas atenderá consultas tanto en las sesiones de prácticas como en su horario de tutorías. También es posible contactar mediante correo electrónico. Se recomienda no enviar al profesor correos con simplemente un "código con un problema a solucionar", dado que el volumen de grupos haría imposible una contestación adecuada a dicho tipo de dudas.
  • Las fechas de entrega son inamovibles.
  • Las notas de cada práctica se publicarán durante la semana siguiente a la finalización de su plazo de entrega. Para cualquier reclamación o consulta, contactar con el profesor correspondiente. Una vez publicadas las notas de la siguiente entrega, el profesor asumirá que todos los grupos están de acuerdo con su nota y no se admitirán reclamaciones.
  • En el caso de detección de una práctica copiada supondrá suspenso en la asignatura para todos los grupos implicados.

 

 

Entregas

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:

 

 

Evaluación de la Práctica

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 

 

 

Examen de Prácticas

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: 

 

 

Dept. Ciències de la Computació


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