Logotipo e link para a Universidade do Minho

Computação Paralela
Mestrado Eng.ª Informática
2019/2020
Docentes responsáveis: A. Proença / J. L. Sobral

Vista da Rua do Souto no Séc. XVI

 

Direitos de Autor & Copyright
Avisos
| Equipa docente | Objetivos e Organização | Resultados de Aprendizagem | Programa | Bibliografia | Sumários | Avaliação

2018/2019

Ultima Modificação: 19 Dez 2019
 

 departamento de informática

Avisos:
 

Topo...


Equipa docente

Tema: Arquiteturas Avançadas
Alberto José Proença
email: aproenca<at>di.uminho.pt

Tema: Algoritmos e Programação Paralela
João Luís Sobral
email: jls<at>di.uminho.pt

Topo...


Objectivos e Organização

A computação paralela (CP) é hoje uma técnica de desenvolvimento de software e respetivo suporte à sua execução,  indispensável para quem tem preocupações de eficiência, quer em termos de desempenho computacional, quer na pegada ecológica quer ainda na gestão eficiente de recursos. Qualquer sistema de processamento de informação baseia-se hoje em componentes de computação constituídos por múltiplas unidades de processamento (tradicionalmente designados por CPUs) integradas num único circuito eletrónico, quer sejam os denominados supercomputadores (clusters computacionais construídos com milhares de servidores semelhantes aos laptops), quer os sistemas embebidos noutros equipamentos (incluindo smartphones).

A UC de CP usa os atuais clusters computacionais para desenvolver competências para os sistemas de hoje e os que virão depois, concentrando-se no desenvolvimento de competências (conhecimentos, e aptidões intelectuais e práticas) nos seguintes temas:

Topo...


Resultados de Aprendizagem

Um estudante que complete com sucesso a UC de CP deverá ser capaz de demonstrar que adquiriu as seguintes competências:

Topo...


Programa

Conteúdos para cada um dos módulos temáticos:

Arquiteturas Avançadas:

Algoritmos e Programação Paralela:

Topo...


Bibliografia

Topo... 


Sumários e Notas de Apoio

18-set-19 (9h-12h)

Caracterização do ambiente de trabalho para 2019/20: a estrutura e objetivos dos temas principais da UC (Arquiteturas Avançadas e Algoritmos e Programação Paralela), a metodologia de trabalho e proposta sobre a metodologia de avaliação a adoptar.
Breve revisão das questões pertinentes que ligam o desempenho à arquitetura e organização do par processador-memória, com destaque para as diversas abordagens na introdução de paralelismo na evolução das arquitecturas dos processadores, nomeadamente ao nível do ILP (pipeline, multiple issue), do paralelismo de dados (SIMD/vetorial), do paralelismo na execução de fios de execução (multi-threading) e breve introdução à organização da memória.

Sugestão de leituras: Slides desta sessão aqui.

25-set-19 (9h-12h)

Revisão de conceitos básicos de sistemas de computação: análise da microarquitetura de processadores multicore e reflexão sobre estratégias de fabricantes para a redução da latência no acesso à memória; exemplo detalhado de várias implementações ILP na microarquitetura do Intel P6, enquanto percursor das atuais microarquiteturas Intel x86; visualização da iteração de ciclos num fragmento de código vetorial, com uma análise comparativa do desempenhos estimados e medidos (em CPE) e consequente explicação das implicações da estrutura do processador no desempenho do código.
Apresentação do cluster SeARCH a ser usado em ambiente laboratorial (pelo Engº Albano Serrano).

Sugestão de leituras: Material de revisão da licenciatura: página da unidade curricular (UC) de Sistemas de Computação da LEI (em http://gec.di.uminho.pt/miei/sc/), e em especial a leitura dos 3 primeiros capítulos do livro de Bryant & O'Hallaron (Computer Systems: A Programmer's Perspective), cuja versão beta se encontra em PDF aqui.
Slides desta sessão
aqui.
Slides de introdução ao cluster SeARCH.
Material para aprofundar e para debate na próxima semana: capítulos 4 (4.10) e 5 (5.1, 5.2, 5.3, 5.8, 5.10) da 4* edição do livro Computer Organization and Design, COD.

02-out-19 (9h-12h)

A evolução das arquiteturas para além do paralelismo ao nível da instrução (ILP), com revisão dos principais desafios para melhorar desempenho de um uniprocessador, focando a melhoria do CPI com pipeline e técnicas de multi-issue. Exploração de paralelismo ao nível dos fios de execução (Thread-Level Parallelism, TLP): noção de multithreading de grão fino / multiplexado no tempo, grão grosso e simultâneo (SMT), com referência ao Hyper-Threading da Intel (HT).
Paralelismo ao nível dos dados: desafios e características das arquiteturas vetoriais; extensões SIMD em arquitecturas SISD (MMX, SSE, AVX/AVX2, AVX-512), com referência às suas limitações relativamente aos computadores vetoriais e como estas limitações têm vindo a reduzir nas extensões AVX da Intel.
Paralelismo ao nível dos dados para além dos computadores vetoriais e extensões SIMD: uma breve abordagem às arquiteturas particulares de dispositivos baseados em CPUs, nomeadamente os novos dispositivos Many Integrated Core (MIC) da Intel, o co-processador KNC e o processador KNL.

Sugestão de leituras: Slides desta sessão aqui.. Em complemento dos capítulos sugeridos na semana anterior, recomendamos ainda o capítulo 5 do livro de Bryant (Optimizing Program Performance), em especial na parte sobre sobre execução paralela de instruções.

09-out-19 (9h-12h)

Hierarquia de memoria: questões chave no projeto de memórias cache com análise do impacto da hierarquia no desempenho da execução de código ao nível de CPI; estimativa do impacto no desempenho das caches multi-nível em termos de hit time, miss rate e miss penalty, devido aos seguintes fatores chave: tamanho da cache/bloco, colocação/substituição de blocos (linhas), técnicas de escrita, latência/bandwidth. Breve introdução à organização das caches em ambiente multi-core, nomeadamente nos protocolos de coerência de cache (snooping e directory-based) e na consistência de caches. Análise de 6 técnicas de otimização básicas na organização das caches, para um melhor desempenho na execução de instruções.

Sugestão de leituras: Slides da aula sobre hierarquia de memória, complementada com o texto que lhe deu origem, o Cap. 2 e o Anexo B do livro de texto básico deste módulo: Computer Architecture: A Quantitative Approach (CAQA), 5ª edição, onde o anexo é uma revisão do conteúdo do livro mais básico dos mesmos autores (COD), o Cap 2 é dedicado às questões mais avançadas de hierarquia de memória, sendo o tópico de coerência de caches abordado em 5.2 de CAQA.

16-out-19 (9h-12h)

Visão alternativa aos PUs convencionais: a abordagem seguida pela NVidia, com análise da evolução dos seus GPUs, em especial a evolução Fermi/Kepler/Maxwell/Pascal/Volta e seu impacto nos sistemas do TOP500.
Introdução ao ambiente CUDA como modelo de programação orientado para os dispositivos GPU: terminologia, modelos de memória e de organização de threads.
Introdução de tensor/neural nets na arquitetura de de GPUs para suporte de aplicações machine learning.

Sugestão de leituras: Slides desta sessão aqui.

Topo...


Avaliação (a confirmar)

É constituída por 2 elementos:

Topo...


Direitos de Autor & Copyright

Esta publicação - incluindo a sua faculdade de impressão - e respetivos 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 do perfil de especialização em Computação Paralela Distribuída, do Mestrado de Eng.ª Informática, da Universidade do Minho, para uso pessoal e fins de aprendizagem eletró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 eletró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 infrator.

Topo...


Página mantida por aproenca<at>di.uminho.pt
Ultima Modificação: 19 Dez 2019