Logotipo e link para a Universidade do Minho

Computação Paralela
Mestrado Eng.ª Informática
2020/2021
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

2019/2020

Ultima Modificação: 11 Nov 2020
 

 departamento de informática

Avisos:
 

  1. Transição do módulo de Arquiteturas Avançadas para o de Programação Paralela: a partir de 11-nov-20 as sessões passam a ser integralmente presenciais e as aulas PL vão requerer um laptop com um compilador de C que permita executar programas com MPI. (11-nov-20)
     

  2. Horário das aulas de arquitetura: embora tenha dito na semana anterior que as aulas poderiam começar às 13h30, estas 2  ultimas semanas deste modulo terão de começar às 13h00. (28-out-20)
     

  3. Data proposta para o teste: 20-jan-21. (28-out-20)
     

  4. Defesa de trabalhos: está prevista a ultima aula em janeiro, toda a tarde de 13-jan-21; o enunciado será divulgado no inicio de dezembro. Não esquecer que o trabalho e sua defesa são indispensáveis para aprovação na UC.  (28-out-20)
     

  5. Chave para pré-inscrição no Blackboard: cp2021. (28-out-20)
     

  6. Metodologia de funcionamento da UC: conforme referido na aula inicial, esta UC vai ter 2 módulos, um nas 4 semanas  iniciais sobre Arquiteturas Avançadas, lecionada quase toda online (usandoo o Zoom, cujos dados de acesso  são divulgados por email), e as restantes semanas sobre Programação Paralela, lecionada em modo presencial. 
    No modo de funcionamento online o material a abordar em cada sessão é divulgado com antecedência de modo a que os alunos possam estudar essa matéria antes do dia da aula; na aula propriamente dita far-se-á uma discussão coletiva sobre essa matéria e complementar-se-á a aula com apresentação de exemplos ou aprofundamento da matéria com novos  slides, os quais serão posteriormente divulgados com a  gravação vídeo  dessa aula online.  (22-out-20)

     

  7. Aula inicial: vai ser na quarta 14-out pelas 13h00, no Anf A4 no CP1. (13-out-20)

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

07-out-20 

Não  houve aula ainda.

14-out-20 

Parte teórica: Caracterização do ambiente de trabalho para 2020/21: 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.

Parte prática: Apresentação do cluster SeARCH a ser usado em ambiente laboratorial (pelo Engº Albano Serrano).

Sugestão de leituras: Slides desta sessão aqui, os quais incluem material de revisão de conceitos básicos de sistemas de computação, nomeadamente um exemplo detalhado de várias implementações ILP na microarquitetura do Intel P6  (enquanto percursor das atuais microarquiteturas Intel x86), com visualização da iteração de ciclos num fragmento de código vetorial, e uma análise comparativa do desempenhos estimados e medidos (em CPE).
Material adicional de revisão da licenciatura: página da unidade curricular (UC) de Sistemas de Computação de MIEI (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 de introdução ao cluster SeARCH.
Material para aprofundar: 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.

21-out-20 

Parte teórica: 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  da Intel (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; extensões SIMD na arquitetura ARM.
Paralelismo ao nível dos dados para além dos computadores vetoriais e extensões SIMD: (i) uma breve introdução às extensões para opera
ções diretas com tensores (vetores, matrizes,  ...), normalmente designadas por tensor units, e (ii) uma breve abordagem às arquiteturas particulares de dispositivos baseados em muitos cores, nomeadamente o Many Integrated Core (MIC) da Intel, o Xeon Phi Knights Landing (KNL).

Sugestão de leituras: Slides de preparação da sessão teórica aqui; slides da aula online 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.
Vídeos de preparação para esta sessão teórica em duas partes: ILP & MT e Data Parallelism
; vídeos da aula online em duas partes: ILP & MT e Data Parallelism.

28-out-20 

Parte teórica: 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. Resolução de exercícios práticos.
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.
Aceleradores
de computação vetoriall, GPU: a abordagem seguida pela NVidia, com análise da evolução dos seus GPUs, em especial a evolução Fermi/Kepler/Maxwell/Pascal/Volta/Ampere.
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.

Parte prática: Construção e execução de um programa com CUDA.

Sugestão de leituras: Slides de preparação 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.
Vídeo de preparação para esta sessão teórica: Mem_Hierarchy .
Material de apoio relativo à sessão online sobre hierarquia de memória (slides e vídeo) e sobre GPU e CUDA (slides e vídeo), complementada com os capítulos introdutórios do livro
Programming Massively Parallel Processors e duma descrição da arquitetura do GPU Ampere da NVidia.

4-nov-20 

Parte teórica: A lista de supercomputadores TOP500: métricas  para a construcao das listas publicadas 2 vezes por ano, (i) HPL performance benchmark, (ii) HPL performance por unidade de energia consumida (FLOPS/Watt) e (iii) HPCG  benchmark.
Análise cr
ítica das arquiteturas que se destacaram nos últimos anos nessas listas do TOP500.
Análise da estratégia europeia para obter um melhor posicionamento nas listas do TOP500.
Análise da arquitetura  do Decalion, o novo supercomputador no MACC. 

Parte prática: .

Sugestão de leituras: Material de preparação da aula sobre os supercomputadores de topo (TopHPC), slides e vídeo.
Material de apoio relativo à sessão online sobre os supercomputadores atuais (slides e vídeo)

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: 11 Nov 2020