![]() |
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:
11 Nov 2020
departamento de informática |
|
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)
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)
Data proposta para o teste:
20-jan-21. (28-out-20)
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)
Chave para pré-inscrição
no Blackboard:
cp2021. (28-out-20)
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)
Aula inicial: vai ser na quarta 14-out pelas 13h00, no Anf A4 no CP1. (13-out-20)
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, 6th Ed., David
Patterson & John Hennessy, Morgan Kaufmann, Dec 2017
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, 3rd
Ed., David Kirk & Wen-mei Hwu, Morgan Kaufmann, Nov 2016
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)
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)
É 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.