![]() |
CPD - Arquiteturas Avançadas |
Sumários
de
Arquiteturas Avançadas
Semana: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
(Ano anterior: 2019/2020)
Ultima
Modificação:
05 Fev 2021
departamento de informática |
|
Pauta com a classificação do semestre: já está disponível a
pauta provisória. (05-fev-21)
Defesa dos trabalhos: conforme indicado antes, a defesa dos
trabalhos irá decorrer esta terça, 19-jan-21, de manhã 9h00-12h00 e de tarde
14h00-16h00. Mais informações sobre como irá decorrer esta sessão
aqui. (18-jan-21)
Teste de 12-jan-21: confirmo que será às 9h00 na sala de aulas
habitual, e terá a duração de 2h; é um teste sem consulta e sem necessidade de
se usar computador ou máquina de calcular. O teste será distribuído com luvas e
no fim será colocado numa caixa a fim de limitar possíveis contágios, antes de
ser corrigido. Por favor entrem ordenadamente e com o devido distanciamento
social. (11-jan-21)
Alteração da data da palestra de Computação Quântica: infelizmente o
Prof. Luís Paulo Santos não pôde deslocar-se à UM para a palestra de CQ de
5-jan-21 por motivos de saúde da sua mãe. Contudo, assumindo que tudo correrá
pelo melhor, ele disponibilizou-se para vir falar de CQ no próximo dia
12-jan-21,após o teste. (05-jan-21)
Aula de 5-jan-21: será integralmente presencial. Votos de um Santo
Natal para todos.
(17-dez-20)
Datas para provas de avaliação
(decisão na aula de 15-dez-20):
teste a 12-jan-21; defesa do trabalho a 19-jan-21; entrega do relatório
do trabalho a 25-jan-21.
(17-dez-20)
Trabalho prático para casa (para
avaliação): O enunciado
e respetiva documentação de apoio.
(23-nov-20)
Disponibilização de material de estudo: todas
as semanas os sumários são atualizados com slides e vídeos da sessão
online bem como slides e vídeo de preparação para a aula da semana
seguinte, os quais deverão ser lidos antes das sessões online para
que nestas se possa discutir os temas da sessão e esclarecer dúvidas.
(27-out-20)
Avaliação (proposta): elementos de avaliação: (i)
participação em todas as sessões
laboratoriais (10% a 15%), (ii) trabalho prático com relatório e
defesa em jan-21 (30% a 50%), e (iii) teste escrito em data a
definir, podendo ser na 1ª semana de jan-21 (40% a 60%).
(01-out-20)
Bibliografia: a bibliografia referida no aviso
anterior contém um livro principal (CAQA, 5th Ed.), corretamente
especificado e uma edição antiga de um 2º livro sobre GPUs; para além destes
há ainda mais 2 livros aconselhados, um também de Hennessy & Patterson (para
revisão de conceitos básicos em Arquitetura de Computadores) e outro sobre o
Intel Xeon Phi. Eis a lista dos 4 livros úteis para esta UC:
• David Patterson & John Hennessy,
Computer Architecture. A Quantitative
Approach, 5th Ed., Morgan Kaufmann, 2011
• David Patterson & John Hennessy,
Computer Organization and Design,
5th Ed., Morgan Kaufmann, 2013
• David Kirk & Wen-mei Hwu, Programming Massively Parallel Processors, A
Hands-on Approach, 2nd Ed., Morgan Kaufmann, 2012
• James Jeffers,
James Reinders & Avinash Sodani, Intel Xeon Phi Processor High
Performance Programming, Knights Landing Edition, Morgan Kaufmann, 2016
(01-out-20)
Info complementar: os "Objectivos
de aprendizagem", "Conteúdos
programáticos", "Metodologias de
ensino e avaliação" e "Bibliografia"
estão no site oficial de MiEI, em
http://miei.di.uminho.pt/plano_estudos.html#arquiteturas_avan_adas;
este site é essencialmente orientado aos sumários e divulgação das notas de
apoio associadas a cada sumário. (01-out-20)
Metodologia de atualização dos sumários: as aulas deste ano irão inspirar-se no funcionamento do ano anterior; para facilitar a escrita de sumários foram copiados para aqui os sumários do ano anterior e colocados em cinzento; cada vez que for atualizado o sumário com o conteúdo efetivamente lecionado, esse será eventualmente modificado e colocado a preto. (01-out-20)
Sumários & Notas de apoio:
Semana 1
06-out-20 (9h-12h)
Ainda não houve aula.
Semana 2
13-out-20 (9h-12h)
Introdução ao perfil: Caracterização do perfil e do ambiente de trabalho para 2020/21: os alunos (e sua formação prévia), a equipa docente (4 docentes), a estrutura do perfil de especialização (UCs: AA, PCP, AP, ESC), a metodologia de trabalho e proposta para discussão sobre a metodologia de avaliação a adoptar.
Aula teórica:
Caracterização da UC AA enquanto preparativo de base para a formação de
performance engineers.
Revisão de
conceitos básicos de sistemas de computação, com destaque para a evolução das
melhorias da
arquitetura interna da PU e hierarquia de memória.
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 da organização da memória.
Apresentação de exemplo detalhado de várias implementações ILP na
microarquitetura do Intel P6, enquanto percursor das atuais microarquiteturas
Intel x86.
Aula prática: Apresentação do cluster e visita guiada as instalações do cluster.
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
da sessão teórica e slides de apresentação do
cluster.
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.
Introdução ao tópico para discussão na próxima aula
online,
slides e
vídeo.
Trabalho para casa: Rever conhecimentos adquiridos na licenciatura: (i) organização de um computador com destaque para o par processador-memória e análise da interface entre este par e a execução de instruções de um programa desenvolvido num paradigma imperativo; (ii) técnicas de otimização de código tirando partido de ILP e superescalaridade.
Semana 3
20-out-20 (9h-12h)
Aula teórica com exemplos:
Revisão de conceitos básicos de
sistemas de computação:
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.
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 multiple-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).
Aula prática: Introdução a ferramentas de profiling e visualização de métricas de performance. Utilização do profiler da GNU (
gprof), aplicado a 3 casos de estudo (disponíveis no SeARCH), para a identificação das suas limitações de medição e visualização de resultados.Sugestão de leituras: Slides de revisão
sobre ILP e MT, divulgados na semana anterior, complementada com texto
dos capítulos sugeridos na primeira semana; 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.
Os slides seguem
ainda o material do livro
de texto básico deste módulo
Computer Architecture: A Quantitative
Approach (CAQA), 5ª edição; as secções
relevantes estão referidas no último slide.
Material da aula teórica online:
slides
e
vídeo.
Introdução ao tópico para discussão na próxima aula
online,
slides e
vídeo.
Semana 4
27-out-20 (9h-12h)
Aula teórica:
Hierarquia de memoria: 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 multiní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 sobre o desempenho de caches e em ambiente
multinível de caches.
Aula prática:
Introdução ao modelo de performance Roofline.
Realização do primeiro guião laboratorial, Lab1, que explora a utilização do
Intel Advisor para a criação de um modelo Roofline e medição das métricas de
performance adequadas para a criação automática de ceilings e
intensidade aritmética dos 3 casos de estudo disponibilizados.
Sugestão de leituras: Slides adicionais
na sessão online sobre hierarquia de memória
(para além dos disponibilizados para a preparação desta aula) , bem como o
vídeo
dessa sessão: complementada com
o texto que deu origem aos
slides, o Cap. 2 do livro de texto básico deste módulo: Computer Architecture: A Quantitative
Approach (CAQA), 5ª edição, onde o Cap 2 é dedicado às questões mais
avançadas de hierarquia de memória, e o Anexo B é uma revisão do conteúdo do livro
mais básico dos mesmos autores (COD).
Introdução ao tópico para discussão na próxima aula
online,
slides e
vídeo,
que seguem
as primeiras 3 secções do Cap. 4 do livro CAQA e são uma introdução ao
paralelismo ao nível dos dados.
Enunciado do Lab1.
Semana 5
03-nov-20 (9h-12h)
Aula teórica: Paralelismo ao nível dos dados: desafios e características das arquiteturas vetoriais; extensões SIMD em arquitecturas SISD, nomeadamente Intel (MMX, SSE, AVX/AVX2, AVX-512, AMX) e ARM (NEON e SVE), 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 e SVE.
Aula prática:
Vetorização: do uso de intrinsics à vetorização automática.
Realização do segundo guião laboratorial, Lab2, que acompanha o processo de
vetorização automática, relacionando a informação presente nos relatórios de
vetorização dos compiladores GNU e Intel (relativos a 3 casos de estudo), ao
comportamento observado após a avaliação da eficiência da vetorização com
recurso ao Intel VTune.
Sugestão de leituras:
Material adicional da sessão online sobre extensão vetorial nas
arquiteturas x86 da Intel e da ARM:
slides e vídeo.
Introdução ao tópico (GPU) para discussão na próxima aula teórica
online,
slides e
vídeo;
estes slides foram elaborados com base em documentação diversa recolhida na Web,
estando a maioria dos links referidos nos próprios slides.
Enunciado do Lab2.
Semana 6
10-nov-20 (9h-12h)
Aula teórica: Paralelismo ao nível dos dados para além dos computadores vetoriais e extensões SIMD: uma breve abordagem aos aceleradores baseados em GPU da NVidia, em especial a evolução Fermi-Kepler-Pascal-Maxwell-Volta-Ampere; uma introdução ao machine learning com redes neuronais e às operações com tensores e respectivos tipos de dados; análise de componentes com extensões de tensores em GPUs e PUs com extensões SIMD (Intel, NVidia), aos componentes SoC com maior impacto (Google, Intel, Tesla, NVidia, Apple, Huawei) ou com arquitetura peculiar (Xilinx, Cerebras).
Aula prática:
Continuação do Lab2: análise e remoção de bloqueadores à vetorização e análise
de escalabilidade de 3 casos de estudo.
Introdução ao ambiente de programação para GPUs, CUDA.
Sugestão de leituras:
Material adicional da sessão online sobre arquiteturas com tensores:
slides (com material complementar ao vídeo e
com informação atualizada da Apple) e vídeo.
Introdução ao tópico (CUDA) para discussão na próxima aula
online,
slides e
vídeo.
Nota: é indispensável a visualização deste vídeo para poder
acompanhar a realização do trabalho laboratorial da próxima semana.
Semana 7
17-nov-20 (9h-12h)
Aula teórica: 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.
Aula prática:
Realização do Lab3, que acompanha o processo de porte de código multicore
em C++ de um
algoritmo de stencil, para CUDA. Gestão e avaliação da performance
das alocações e cópias de memória, execução do kernel, e acesso eficiente
à memória do GPU.
Sugestão de leituras:
Introdução ao tópico (Intel manycore Xeon Phi) para discussão na próxima aula
online,
slides e
vídeo.
Enunciado do Lab3.
Semana 8
24-nov-20 (9h-12h)
Aula teórica: Discussão dos modelos de
programação dos chips manycore da família Intel MIC, dos co-processadores
Xeon Phi Knights Corner (KNC) aos processadores Xeon Phi Knights Landing (KNL);
análise detalhada das inovações introduzidas na arquitetura do KNL.
Análise de vários chips/packages de processadores de tipo server,
na perspetiva de uma evolução da análise dos pontos fortes e fracos da família
Xeon Phi, entretanto descontinuada pela Intel: Intel Xeon Scalable Family, AMD
Epyc Zen, Shen Wei SX260xx, ARMv8 (Marvell ThunderX, Fujittsu A64FX, Arm
Neoverse, Ampere Altra, AWS Graviton, Huawei Kunpeng 9xx.
Aula prática laboratorial: Otimização e
comparação de duas implementações da multiplicação de matrizes: dispositivos GPU
vs multicore.
Realização do guião laboratorial Lab4, que acompanha o processo de medição e
comparação da performance do algoritmo SGEMM implementado em CUDA e em C
+ OpenMP. Implementação e medição do impacto de técnicas de otimização avançadas
em CUDA usando shared memory e gestão do padrão de acesso à memória (coalesced
memory accesses).
Sugestão de leituras:
Material adicional da sessão online sobre análise de vários processadores
de elevado desempenho e concorrentes da Intel: slides e
vídeo;
recomenda-se ainda a exploração dos dois primeiros
capítulos do livro recomendado sobre o Intel Xeon Phi Processor.
Recomenda-se ainda a leitura do artigo científico recomendado no último slide
online, a Turing Lecture do
Hennessy & Patterson.
Introdução ao tópico (top HPC systems in TOP500) para discussão na próxima aula
online,
slides e
vídeo.
Enunciado do Lab4.
Semana 9
01-dez-20 (9h-12h)
Feriado
Semana 10
08-dez-20 (9h-12h)
Feriado
Semana 11
15-dez-20 (9h-12h)
Aula teórica: Análise
crítica da arquitetura dos 10 primeiros
sistemas nas listas mais recentes do TOP500, do GREEN500 e usando o HPCG
benchmark em substituição do HPL, com destaque para as
arquiteturas mais recentes de unidades de processamento de sistemas HPC. Breve
introdução aos benchmarks complementares de HPL-AI e do GRAPH500.
Análise de algumas estatísticas relevantes de TOP500 referente a novembro
de 2020.
Uma visão da iniciativa EuroHPC com análise da arquitetura do Decalion, o
sistema de 5 PFLOPs a instalar no MACC.
Aula prática laboratorial: Sessão de apoio a dúvidas do Work Assignment e dos guiões laboratoriais disponibilizados durante o semestre. Identificação dos pontos fracos e possíveis soluções dos guiões laboratoriais.
Sugestão de leituras: Material adicional da sessão online sobre análise estatística de gráficos do TOP500, do EuroHPC e do Decalion: slides e vídeo.
Semana 12
05-jan-21 (9h-12h)
Aula prática laboratorial: Sessão de esclarecimento do Work Assignment.
Semana
13
12-jan-21 (9h-12h)
Avaliação: Teste escrito.
Aula teórica: Palestra pelo Prof. Luís Paulo Santos, "Introdução à Computação Quântica e ao algoritmo de Grover" (slides).
Semana 14
19-jan-21 (09h-12h e 14h00-16h00)
Apresentação e discussão de trabalhos: Análise do desempenho de vários algoritmos de multiplicação de matrizes quadradas usando três ciclos aninhados (variando a ordem de execução dos ciclos e alterando o armazenamento em memória de algumas matrizes, por transposição dos elementos). Discussão aberta dos resultados obtidos.
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 da unidade curricular de
especialização de 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.