Logotipo e link para a Universidade do Minho

Computação Paralela Distribuída
Mestrado em Informática
2007/2008
Docente responsável: A.J.Proença

Vista da Rua do Souto no Séc. XVI

 

Sumários
de
Sistemas de Computação e Desempenho

Semana: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14  | 15  

Ultima Modificação: 05 Dez 2007
 

 

 departamento de informática

Nota 1: Os sumários das aulas que já ocorreram estão a preto, enquanto as propostas de sumário para as sessões seguintes estão a cinzento. Sempre que haja documentação a disponibilizar pertinente para uma sessão que ainda não decorreu, essa indicação deixa de estar a cinzento.
Nota 2: À frente de cada data de uma sessão de contacto docente-aluno indica-se sempre o total de horas de contacto realizadas desde o início do ano.

 

Semana 1

02-Out-07 (9h-13h) 4h

Caracterização do ambiente de trabalho para 2007/08: os alunos (e sua formação prévia), a equipa docente (4 docentes), os módulos constituintes da UCE30 (SCD, PAC, PCP, AMN, PI), e metodologia de trabalho e de avaliação ao longo do ano lectivo.
Identificação e caracterização de conceitos fundamentais genéricos em cada uma das áreas temáticas, com destaque para o primeiro tema (SCD), e referência a casos de estudo a utilizar nesta UCE (destaque para aplicações na área do processamento de imagem).
Apresentação de temas e problemas a resolver para a sessão da semana seguinte.


Semana 2

09-Out-07 (9h-13h) 8h

Debate: Abordagem em termos de revisão de questões e impacto da representação de informação num computador.

Aula teórica: Revisão de conceitos básicos de sistemas de computação: representação binária de inteiros e reais em FP, geração típica de código assembly a partir de C (incluindo estruturas de dados e de controlo e procedimentos/funções), mecanismos de optimização da arquitectura interna do CPU e hierarquia de memória.

Sugestão de leituras: Página da unidade curricular (UC) de Sistemas de Computação da licenciatura de Ciências da Computação (em http://gec.di.uminho.pt/lcc/sc/), e em especial a leitura dos 3 primeiros capítulos do livro de Bryant & O'Hallaron, cuja versão beta se encontra em PDF aqui; está ainda disponível para consulta o seguinte material: um resumo da representação binária de números inteiros e reais (aqui), slides sobre a execução de programas em C num computador (aqui), slides .

Trabalho para casa: Revisão dos conceitos de paralelismo de instruções e hierarquia de memória, com destaque para a evolução dos processadores x86 (pós-Pentium) em termos de ILP e de organização de cache.

Semana 3

16-Out-07 (9h-13h) 12h

Apresentação e discussão de trabalhos: Levantamento da evolução dos processadores da Intel em termos de ILP e cache (slides do Edgar e 3 documentos sugeridos para leitura complementar: (i) sobre a arquitectura do Core, (ii) sobre caches, e (iii) uma comparação da AnandTech entre a arquitectura do Intel Core e o AMD K8 ).

Aula teórica: Síntese dos temas abordados, complementada com uma perspectiva do impacto do ILP na execução de programas na arquitectura do P6. Análise da fórmula que estima o valor de CPI na execução de um dado programa, e impacto da hierarquia de memória nesse valor.

Sugestão de leituras: Capítulo 5 do livro de Bryant (Optimizing Program Performance), em especial na parte sobre sobre execução paralela de instruções, e respectivos slides (aqui); e capítulo 6 do mesmo livro (Memory Hierarchy) com 3 conjuntos de slides sobre hierarquia de memória e cache (aqui1, aqui2, aqui3).

Trabalho para casa: Levantamento dos utilitários disponíveis para caracterização do perfil de programas (profilers), preferencialmente contendo capacidades de análise de funcionamento da hierarquia de memória, para sua apresentação na sessão seguinte.

Semana 4

23-Out-07 (9h-13h) 16h

Apresentação e discussão de trabalhos: (i) Shark (MacOS), por PAG (para saber mais, pode ler isto ou isto); (ii) OProfile e GProf (Linux), por EAB; (iii) YourKit Java Profiler, por LFG (homepage deste produto comercial aqui); (iv) Valgrind (Linux), por RJM e EMB (homepage em http://valgrind.org/; slides do Ricardo). Os exemplos apresentados foram superficiais.

Aula teórica: Síntese das noções básicas de medições de tempo (granularidade do tempo medido), debugging e profiling (slides do Bryant e adaptados do Bryant)

Trabalho para casa: Selecção de um caso de estudo de média/grande dimensão e demonstração da utilidade e potencialidades dos profilers apresentados/debatidos na aula.

Semana 5

30-Out-07 (9h-13h)  20h

Aula teórica: Questões relacionadas com a introdução de paralelismo nos sistemas de computação: (i) os modelos ILP (pipeline, superescalar, vectorial), (ii) acessos à memória (local/remota, UMA/NUMA, partilhada/distribuída) e (iii) topologias de interligação entre cores/CPU e entre nós de computação (partilhado/comutado, barramento, rede 2D/toróide/hipercubo/shuffle). Breve introdução da estrutura do cluster SEARCH.

Apresentação e discussão de trabalhos: (i) demonstração das potencialidades do Shark com 2 exemplos (função soma de matrizes e uma aplicação de computação gráfica); (ii) análise comparativa do YourKit Java Profilere do Valgrind por LFG (pouco aprofundado e sem um caso de estudo a suportar a apresentação); (iii) exploração de potencialidades do Valgrind na identificação de tempos de CPU e no comportamento da cache, por RJM e depois EMS (a interpretação dos resultados foi superficial).

Sugestão de leituras: Capítulo 5 do livro de Bryant (Optimizing Program Performance), na íntegra!
Adicionalmente, para quem tenha curiosidade de entender o funcionamento da parte vectorial dos processadores da Intel, os manuais da família Intel 64 e IA-32 de 2007 estão aqui disponíveis (Part1, Part2A, Part2B, Part3A e Part3B).

Trabalho para casa: Caracterização completa da arquitectura do cluster SEARCH (alguma informação adicional em http://www.di.uminho.pt/search/ ), com destaque para a arquitectura de cada nó e para as 3 topologias de interligação dos nós (Gbit Ethernet, Myrinet 10G e estrutura de acesso à SAN).

Semana 6

06-Nov-07 (9h-13h) 24h

Apresentação e discussão de trabalhos: apresentação e debate da estrutura e componentes físicos do cluster computacional SeARCH (slides corrigidos e completados do RJM). 

Aula teórica: Revisão completa das técnicas de optimização de código independentes da máquina, com referência ainda aos bloqueadores de optimização presentes nos compiladores, e às opções que estes disponibilizam para a introdução de optimizações (slides).

Trabalho para casa: Análise da versão em Fortran da aplicação FireStation (a ser usada no âmbito do projecto CROSS-Fire), no front-end do SeARCH. Sobre a aplicação de simulação de fogos, este artigo do responsável do grupo na Univ. Coimbra apresenta uma visão dos modelos de simulação, e funciona como introdução ao FireStation.
Utilitários sugeridos instalados no front-end: Intel Trace Analyzer (sítio na Intel e tutorial) e Intel VTune Performance Analyzer (sítio na Intel e tutorial); slides da Intel com técnicas de profiling e tracing.

Sugestão de leituras: Lacunas detectadas na caracterização das topologias de interligação (durante o debate) podem ser corrigidas em qualquer livro de arquitectura de computadores (ver na biblioteca), ou na Wikipedia, ou mesmo nestes slides de uma aula na Duke University, ou nestes leccionados há poucas semanas no CMU). Recomenda-se ainda uma leitura desta apresentação recente da Myricom.
Em complemento da aula sobre técnicas de optimização com forte incidência no papel do compilador, este survey está bastante completo e é um bom elemento de referência para já e para o módulo de computação paralela.
De notar ainda que devido à elevada latência nos acessos à memória têm sido desenvolvidos ao longo do tempo técnicas de data pre-fetching, quer ao nível do hardware quer do software; este artigo que saiu na revista Computer caracteriza algumas dessas técnicas.

Semana 7

13-Nov-07 (11h-13h) 26h

Apresentação e discussão de trabalhos: discussão das dificuldades encontradas na interpretação de alguns dados/factos relacionados com a aplicação FireStation. 

Aula teórica: Revisão de técnicas de optimização de código dependentes da máquina, com especial destaque para as questões de loop unroll e de function inline (slides distribuídos na semana anterior).

Sugestão de leituras: Completar as sugeridas na semana anterior.

Trabalho para casa: Análise das opções de optimização dos diferentes compiladores de C e Fortran disponíveis no cluster, para posterior utilização na análise de desempenho das várias versões compiladas do FireStation.

Semana 8  

20-Nov-07 (9h-13h) 30h

Aula teórica: A avaliação de desempenho de sistemas de computação na execução de aplicações: introdução (i) à análise comparativa entre o recurso à modelação matemática, à simulação dos sistemas de computação e ao método experimental directo e indirecto e (ii) à instrumentação de medida em computação.
A bibliografia para estes tópicos será basicamente baseada no livro de David Lilja (mais informação em http://www.amazon.com/gp/reader/0521641055/ref=sib_dp_pt/105-0961713-4751626#reader-link) e no respectivo conjunto de slides (compactados).

Apresentação e discussão de trabalhos: discussão da estrutura da aplicação FireStation e de resultados preliminares do desempenho de componentes da aplicação. Identificação de lacunas nas metodologias de trabalho: falta de análise e caracterização das potencialidades dos compiladores (de acordo com uma interpretação da informação constante em manuais) e das restantes ferramentas de apoio ao desenvolvimento de aplicações. 

Sugestão de leituras: Cap. 1 e 2 do livro de Lilja; manuais das versões mais recentes dos compiladores C++ e Fortran da Gnu e da Intel.

Trabalho para casa: Análise do desempenho e sugestões de optimização da convolução digital de imagens: enunciado, código da main e das funções.

Semana x

27-Nov-07 (9h-13h)
Neste dia não houve aula deste módulo, mas do módulo de PCP.

Semana 9

04-Dez-07 (9h-13h) 34h

Apresentação e discussão de trabalhos: análise e discussão das condições e métodos de trabalho na caracterização do desempenho da função de convolução de imagens; discussão dos resultados experimentais da nova versão de ensaio do FireStation (maior área a analisar, maior duração do incêndio a simular, maior eficiência na leitura dos dados dos ventos, tempos de execução wall time inferiores a 1min). 

Aula teórica: Explicitação de conceitos de base na análise de dados experimentais em informática: caracterização de métricas de desempenho, e introdução a tipos de médias (aritmética, geométrica, harmónica) e à propagação de erros em séries e em processos iterativos.

Sugestão de leituras: Completar as sugeridas anteriormente.

Trabalho para casa: Converter a actual versão do FireStation em Fortran para C, C++ e Java, a analisar as diferentes ferramentas de desenvolvimento de aplicações disponíveis para cada um destes ambientes no cluster SeARCH. Analisar o desempenho dos programas resultantes (produzir mapas/tabelas comparativas de desempenho para os vários ambientes, e avançar com algumas propostas concretas de optimização, incluindo multi-threading (com OpenMP).

Semana 10

11-Dez-07 (9h-13h)
xxx

Semana 11 

18-Dez-07 (9h-13h)
Parte desta aula será com tema do módulo de AMN, nomeadamente análise e propagação de erros na utilização de métodos numéricos.
Outra parte será com análise e discussão do projecto integrado (FireStation), com sumário no módulo de PI.

****************   Férias de Natal   **********************

Semana 12

08-Jan-08 (9h-13h)
xxx

Semana 13

15-Jan-08 (9h-13h)
xxx

Semana 14

22-Jan-08 (9h-13h)
xxx

Semana 15

29-Jan-08 (9h-13h)
xxx

 

Topo...


Direitos de Autor & Copyright

Esta publicação - incluindo a sua faculdade de impressão - e respectivos conteúdos - que poderão incluir reproduções parciais de obra(s) alheia(s) devidamente citadas, com a indicação do autor, título da obra, editor ou outra fonte - destinam-se exclusivamente aos alunos da unidade currricular de especialização de Computação Paralela Distribuída, do Mestrado em Informática, da Universidade do Minho, para uso pessoal e fins de aprendizagem electrónica (e-learning) e não revestem qualquer finalidade lucrativa ou comercial.
Qualquer outra reprodução, total ou parcial, desta obra, por qualquer suporte, modo ou processo, nomeadamente processo electrónico, mecânico ou fotográfico, incluindo fotocópia, a modificação da obra, a sua comunicação pública, a sua distribuição através de aluguer ou comodato, sem qualquer autorização escrita do autor, é ilícita e passível de procedimento judicial contra o infractor.

Topo...

 


Página mantida por aproenca@di.uminho.pt
Ultima Modificação: 05 Dez 2007