![]() |
Computação Paralela |
Direitos
de Autor & Copyright
Avisos | Equipa docente | Objetivos
e Organização |
Resultados de Aprendizagem
| Programa
| Bibliografia
| Sumários | Avaliação
Ultima
Modificação:
19 Dez 2019
departamento de informática |
|
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
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:
Um estudante que complete com sucesso a UC de CP deverá ser capaz de demonstrar que adquiriu as seguintes competências:
Conteúdos para cada um dos módulos temáticos:
Arquiteturas Avançadas:
Algoritmos e Programação Paralela:
Computer Organization and Design, 5th
Ed., David Patterson & John Hennessy, Morgan Kaufmann, 2013
Computer Architecture. A Quantitative Approach, 5th Ed., David
Patterson & John Hennessy, Morgan Kaufmann, 2011
Intel Xeon Phi Processor High Performance Programming, Knights Landing
Edition, James Jeffers, James Reinders & Avinash Sodani, Morgan
Kaufmann, 2016
Programming Massively Parallel Processors, A Hands-on Approach, 2nd
Ed., David Kirk & Wen-mei Hwu, Morgan Kaufmann, 2012
Parallel Programming in C with MPI and OpenMP,
Michael J. Quinn, McGraw-Hill Education, 2003
Parallel Programming in C with MP, Peter Pacheco, Morgan Kaufmann 2011
Designing and Programming Parallel Programs:
Concepts and Tools for Parallel Software Engineering, Ian Foster,
Addison-Wesley, 1995
(free online at http://www.mcs.anl.gov/~itf/dbpp/text/book.html, or
here)
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.
É constituída por 2 elementos:
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.