07/05: Tabela de notas
26/02: Não perca das datas importantes do Calendário de graduação.
Aprimorar os conceitos aprendidos no curso de Projeto de Sistemas Computacionais. Reforçar conceitos de programação em grandes bases de código. Ao final desta disciplina, o aluno deverá ser capaz de:
A bibliografia recomendada para as atividades desta disciplina é:
Esta disciplina é composta por três projetos, a serem realizados durante o semestre. A nota final será a média aritmética das notas dos três projetos.
Os projetos serão realizados em grupos em torno de, no máximo, 4 participantes (ajustados pelo tamanho da turma). A composição e o tamanho dos grupos serão definidos pelo professor.
Qualquer tentativa de fraude durante o semestre será punida até o limite da minha autoridade, incluindo nota zero na disciplina para todos os envolvidos.
Os atendimentos acontecerão às terças, das 14h-15h, na sala 3 do IC e às quintas, das 18h-19h, pelo monitor da disciplina (Tiago Falcão) na sala 361 do IC. Caso precise de atendimento em outro horário, basta combinar por email. Neste caso, envie o email já com uma sugestão de dia e horário para facilitar o atendimento.
Lembre-se que estarei em sala de aula durante todas as aulas do semestre.
Serão 3 projetos durante o semestre, cada um com 5 semanas para serem realizados. Os projetos devem ser realizados em grupo, onde todos os componentes do grupo devem estar cientes de todas as decisões tomadas, sendo capazes de justifica-las. Os projetos serão avaliados através de:
Objetivo: Desenvolver um benchmark com, ao menos, 5 componentes, para avaliar o desempenho de, ao menos, 5 equipamentos computacionais (ou parte deles) distintos.
Decisões de projeto: O que avaliar, como avaliar, que garantias este benchmark fornece, quais são as condições de contorno, metodologia, formas de medir o desempenho, escalabilidade, reprodutibilidade, etc. Exemplos de benchmarks para desempenho de processadores/computadores existentes: SPEC (procure a documentação do runspec, script que controla a execução), PARSEC (procure pela documentação do parsecmngt, script que controla a execução), CloudSuite, DaCapo, MediaBench, MiBench, MineBench, Rodinia, San Diego Vision Benchmark Suite, SPECWeb, SPECJBB, SPECJVM, Streamit Systench, TPC, NAS NPB, NAS OMP, HPCC, Mantevo benchmark suite, CSiBE.
Entregas: Este primeiro projeto tem uma exigência de acompanhamento mais de perto do professor, para auxiliar no desenvolvimento da metodologia. Espera-se um relatório parcial durante o período e um relatório final.
Critérios de avaliação: Clareza na definição dos critérios de avaliação de desempenho (O que você mediu? Como? Por que?). Capacidade de reproduzir os resultados obtidos nos computadores informados e também de adicionar novos computadores.
Relatório Final e Apresentação: 27/03, durante o período da aula.
Grupos formados para o projeto 1:
Horário das apresentações dos Grupos para o Projeto 1:
Objetivo: Avaliar o impacto, no desempenho de um processador, de várias características arquiteturais estudadas na disciplina teórica.
Dentre as características a considerar, sugiro:
Como cada uma destas características afeta o desempenho do processador? (melhoram, pioram, deixam no mesmo patamar).
Vocês devem utilizar o simulador MIPS baseado em ArchC (veja um tutorial), disponível no IC-3 e também para instalação na sua casa/notebook. Este simulador executa programas, compilados para MIPS, uma instrução por vez. Faz parte da sua tarefa implementar toda a contabilidade para prever o comportamento de uma execução conforme as funcionalidades acima. Não é esperado nem desejado que você implemente a execução em pipeline, apenas que consiga contabilizar os efeitos do pipeline.
Critérios de avaliação: Capacidade de implementar a contabilidade das funcionalidades acima. Coerência entre os dados obtidos e um sistema real (os dados fazem sentido?). Capacidade de entender uma base grande de código e realizar pequenas modificações nela.
Roteiro: contendo a metodologia a ser seguida, em uma página, entregue impresso até o final da primeira aula, para comentários durante o período da aula pelo professor. Este será o roteiro do experimento que será feito nas demais aulas pelo grupo. Aproveitem a oportunidade da aula para tirarem dúvidas. Este roteiro terá peso de 20% na nota do projeto. Inclua, ao final do roteiro, o endereço do repositório git que seu grupo colocará o código de seu trabalho.
Relatório Final e Apresentação: 15/05, durante o período da aula. Enviar o relatório por email antes do período da aula. Limite de 5 páginas.
Ao final do seu relatório, inclua uma seção de resultados com uma tabela da forma:
Config. 1 | Config. 2 | ... | |||||
---|---|---|---|---|---|---|---|
Prog 1 | Prog 2 | Prog 3 | P1 | P2 | P3 | ... | |
Evento 1 | |||||||
Evento 2 | |||||||
Evento 3 | |||||||
... | |||||||
Ciclos | |||||||
Tempo |
onde Config. 1, Config. 2, ..., representam as configurações que você avaliou e Evento 1, Evento 2, ..., representam os eventos analisados. Ao final, totalize o número de ciclos e também a estimativa de tempo conforme conversado na entrega do Roteiro. Você deve ter as descrições e características das Configurações e Eventos no seu relatório. Note que não deve ser possível colocar todas as configurações nesta tabela, você terá que escolher as configurações mais relevantes. Como exemplo, depois de testar diversas configurações de cache, você pode escolher apenas uma (a melhor) e colocar nesta tabela, deixando os dados das outras apenas nas seções anteriores do relatório. Uma leitura da tabela na vertical, com alguns exemplos, pode ser: "Usando o processador com a configuração 1, descrita no texto, executando o programa xyz, utiliza X instruções (Evento 1), 200 cache misses (Evento 2), 150 hazzard de dados (Evento 3), ..., o que totaliza 1487 ciclos (número fictício) e equivale a um tempo de execução de 1ms."
Grupos formados para o projeto:
Horário das apresentações dos Grupos:
Neste projeto, cada grupo deverá modelar um sistema com 8 cores, executar um software que tire proveito de paralelismo nele. Além disto, um módulo de hardware extra deverá ser criado (software offloading) para acelerar o desempenho deste software.
No roteiro, os grupos devem responder 3 perguntas:
Os grupos de até 4 participantes serão formados pelos próprios alunos e indicados no roteiro.
Deadline para o Roteiro: 29/05 até as 9h. Valendo nota: Você deve indicar, no roteiro, um repositório passível de ser clonado. Vamos verificar isto imediatamente após a entrega do roteiro.
Um repositório git contendo a plataforma base para desenvolvimento está em /home/staff/rodolfo/mc723/base_platform.git. Note que você não tem nem terá autorização para escrita neste repositório.
Relatório Final e Apresentação: 26/06, durante o período da aula. Enviar o relatório por email antes do período da aula. Limite de 5 páginas.
Grupos formados para o projeto:
Data | Atividade |
---|---|
27/fev | Roteiro do Projeto 1 |
06/mar | |
13/mar | |
20/mar | |
27/mar | Entrega do Projeto 1 |
03/abr | Não haverá atividades |
10/abr | Roteiro do Projeto 2 |
17/abr | |
24/abr | |
01/mai | Não haverá atividades |
08/mai | |
15/mai | Entrega do Projeto 2 |
22/mai | |
29/mai | Roteiro do Projeto 3 (até as 9h) |
05/jun | Não haverá atividades |
12/jun | |
19/jun | |
26/jun | Entrega do Projeto 3 |