![]() |
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: 2017/2018)
Ultima
Modificação:
22 Jan 2019
departamento de informática |
|
Pauta com classificação dos testes: a pauta anterior
estava incompleta (faltavam 2 alunos) e continha um erro: no cálculo da
melhor combinação de pesos, uma das colunas considerou o peso mínimo dos
testes como 35% quando teria de ser pelo menos 40%; é a coluna com os dados
a vermelho na nova pauta corrigida e
atualizada. Manteve-se nesta pauta a classificação provisória no trabalho
prático de 12.5 valores, que foi a pior classificação do ano anterior. (22-jan-19)
Adiamento do exame: a totalidade dos alunos que
compareceu ao exame solicitou o seu adiamento para a próxima quarta, 30-jan,
no dia imediatamente a seguir à defesa dos trabalhos (29-jan, e não 29-fev
como chegou a ser divulgado).
O ponto de encontro para o exame será às 9h00 à porta do gabinete do docente
responsável pela UC, que depois indicará a sala para a sua realização.
A defesa dos trabalhos será em princípio numa das salas do DI junto ao
gabinete dos técnicos de informática. (22-jan-19)
Pauta com classificações provisórias: já está
disponível a pauta com classificações
provisórias (pode conter erros) com a informação dos testes e da
participação nas aulas (em especial nas aulas laboratoriais). Esta pauta
contém uma simulação de classificação final usando uma classificação no
trabalho prático de 12.5 valores, que foi a pior classificação do ano
anterior. De notar que o cálculo da nota final leva em consideração as
melhores classificações de cada um dos componentes de avaliação. (18-jan-19)
Defesa dos trabalhos e exame de recurso: dado que
vários grupos manifestaram a sua indisponibilidade para defenderem o
trabalho esta sexta, tendo alguns sugerido adiar para segunda,
estamos disponíveis para estas defesas na segunda às 14h00, a quem se
manifestar interessado a tal; os restantes, na impossibilidade de saberem se
ficam ou não aprovados à UC, terão a possibilidade de fazerem o exame de
recurso e eu aproveitarei depois a melhor classificação; proposta de 2ª
data para realizar a defesa dos trabalhos, qualquer que seja o estado do
cluster: terça, 29-jan, 9h00. (17-jan-19)
Ainda a defesa dos trabalhos: seria conveniente que
os resultados finais da avaliação desta UC fossem conhecidos antes do exame
de recurso, para que todos possam tomar a decisão de fazer ou não este exame
antes da data do mesmo. Para que tal seja possível a defesa do trabalho terá
de ser feita ainda esta semana (sexta à tarde?) e a entrega do relatório na
manhã de segunda; só assim poderei corrigir os trabalhos e divulgar as
classificações da UC ainda na segunda, véspera do dia do exame. Agradeço que
entre vós se decidam se estão ou não disponíveis para defender o trabalho
nesta sexta e entregar o relatório na segunda, e me comuniquem essa decisão.
Estou disponível para avaliar os trabalhos em duas datas diferentes, uma
esta sexta, outra em data posterior. (15-jan-19)
Novo adiamento de prazos: atendendo a que a anomalia
ainda não foi resolvida, os prazos anteriormente definidos são de novo
adiados para data a anunciar logo que se saiba quando o cluster
estará de novo em funcionamento. (14-jan-19)
Adiamento de prazos relacionados com a entrega e defesa
do trabalho: devido à anomalia no sistema de armazenamento do
cluster ocorrida recentemente (e ainda por resolver), os prazos que foram
previamente definidos são todos adiados por uma semana. (07-jan-19)
Bug no enunciado do trabalho: o enunciado tinha um
bug e já foi corrigido hoje às 10h00; por favor fazer o
download do mesmo. (29-nov-18)
Datas para as avaliações (confirmado): teste a
11-dez e defesa dos trabalhos a 8-jan; entrega de uma versão estendida do
abstract do trabalho a 7-jan (12h00) e o relatório final a 14-jan (12h00). (28-nov-18)
Avaliação (proposta): e 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-18 (30% a 50%), e (iii) teste escrito em data a
definir, podendo ser na 1ª semana de jan-19 (40% a 60%). (24-set-18)
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
(24-set-18)
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.
(24-set-18)
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. (24-set-18)
Sumários & Notas de apoio:
Semana 1
18-set-18 (9h-12h)
Introdução ao perfil: Caracterização do ambiente de trabalho para 2018/19: os alunos (e sua formação prévia), a equipa docente (3 docentes), a estrutura e objetivos das UCs do perfil de especialização (AA, PCP, AP, ESC), a metodologia de trabalho e proposta para discussão sobre a metodologia de avaliação a adoptar.
Aula teórica: Revisão de conceitos básicos de sistemas de computação, com destaque para a evolução das melhorias da arquitetura interna do CPU 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.
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.
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.
Trabalho para casa: Rever conhecimentos adquiridos na licenciatura, para discussão na sessão da semana seguinte: 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.
Semana 2
25-set-18 (9h-12h)
Aula teórica: 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.
Sugestão de leituras: Introdução aos lides de revisão sobre ILP.
Semana 3
02-out-18
Não houve aula; será compensada noutras semanas.
Semana 4
09-out-18 (9h-12h30)
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). Paralelismo ao nível dos
dados: introdução às arquiteturas vetoriais.
Hierarquia de memoria: revisão dos
conceitos chave.
Sugestão de leituras: Slides de revisão
sobre ILP 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 sobre ILP-MThread seguem 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.
Slides com introdução à
hierarquia de memória, complementada com (i)
o capítulo 6 do mesmo livro de Bryant (Memory Hierarchy)
e (ii) o texto que deu origem aos slides, o Cap. 2 e o
Anexo B do livro CAQA, onde o anexo é uma revisão do conteúdo do livro
mais básico dos mesmos autores (COD).
Semana 5
16-out-18 (9h-12h30)
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 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,
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 e outras 10 mais
avançadas.
Sugestão de leituras:
Slides com
hierarquia de memória
(mesmos que da aula anterior) complementada com (i)
o capítulo 6 do mesmo livro (Memory Hierarchy)
e (ii) 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, sendo o tópico de coerência de caches
abordado em 5.2 de CAQA.
Um artigo ainda atual colocado em fins de 2012 no website do Dr.Dobb's
sobre
Cache-friendly code
e outro sobre modelos de
consistência em
memória partilhada.
Semana 6
23-out-18 (9h-12h30)
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) 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.
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 com extensões
SIMD, nomeadamente (i) os processadores e co-processadores aceleradores de
computação many-core, nomeadamente os dispositivos Many Integrated
Core (MIC) da Intel (Xeon Phi), (ii) o IBM Power BlueGene/Q
Compute e o ShenWay 26010, (iii) os aceleradoires ISA-free (FPGA) com
destaque para a oferta da Intel e (iv) os aceleradores baseados em GPU da NVidia
(apenas introdução).
Aula tutorial com prática laboratorial:
Introdução às ferramentas de utilização de contadores de desempenho de
hardware, com destaque para o PAPI. Exemplos e exercícios práticos da sua
utilização, num nó do cluster.
Apresentação
de um caso de estudo (multiplicação de matrizes) com análise de ineficiências no
algoritmo e sua execução em processadores x86, com sugestões de melhorias,
incluindo técnicas efetivas de vetorização e de paralelização em ambiente de
memória partilhada. Medição e comparação do desempenho do caso de estudo com a
aplicação das diversas técnicas, usando um nó do cluster.
Sugestão de leituras:
Os slides completos de DataParallel1_SIMD segue
as primeiras 3 secções do Cap. 4 do livro CAQA e são uma introdução ao
paralelismo ao nível dos dados.
Os slides da sessão tutorial com prática laboratorial sobre
PAPI e
Code-Optimization.
O guião de trabalhos para a sessão laboratorial 1
da próxima semana
(e
código associado, bem como um
exemplo com matrizes), contendo uma lista de trabalhos obrigatórios a realizar antes do início
da sessão.
Semana 7
30-out-18 (9h-12h30)
Aula teórica: Paralelismo ao nível dos dados para além dos computadores vetoriais e extensões SIMD: continuação da abordagem às arquiteturas particulares de dispositivos baseados em CPUs, complementada com uma análise detalhada dos GPUs da NVidia, em especial a evolução Fermi/Kepler/Maxwell/Pascal/Volta e seu impacto nos sistemas do TOP500.
Aula prática laboratorial (Lab1): Análise do impacto da vetorização de código e sua escalabilidade em termos de # threads paralelos, usando sempre um problema com a mesma dimensão, em sistemas com Xeon multicore (guião Lab1, distribuído na semana anterior).
Sugestão de leituras: Slides de
DataParallel2_GPU;
estes slides foram elaborados com base em documentação diversa recolhida na Web,
estando a maioria dos links referidos nos próprios slides; recomenda-se
ainda a leitura de 2
whitepapers da NVidia, um
apresentando o
Kepler
GK110 (equipa vários nós do cluster) e outro sobre a última geração
da NVidia, o
Tesla V100
(Volta).
O guião de trabalhos para a
sessão laboratorial 2 com uma lista de trabalhos obrigatórios a realizar antes do início
da sessão.
Semana 8
06-nov-18 (9h-12h30)
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 laboratorial (Lab2): Tutorial sobre CUDA, com apresentação dos conceitos chave em CUDA e na formalização das atividades paralelas, com análise hands-on de um problema para execução num nó do cluster.
Sugestão de leituras: os slides de introdução a CUDA, DataParallel3_CUDA, complementados com estes slides de introdução à programação de GPUs com CUDA; ler também os Chap 3 a 6 do livro recomendado sobre os GPUs da NVidia (Programming Massively Parallel Processors) e as partes relevantes sobre GPUs que estão na secção 4.4 do livro CAQA; em complemento destes capítulos, sugere-se uma leitura dos slides das sessões práticas de CUDA dum ano anterior (TACC-CUDA).
Semana 9
13nov-18 (9h-12h)
Aula teórica: Discussão
dos modelos de programação dos manycore chips da família Intel MIC,
dos co-processadores no Xeon Phi Knights Corner (KNC) aos processadores
no Xeon Phi Knights Landing (KNL); análise detalhada das inovações
introduzidas na arquitetura do KNL.
Apresentação do modelo de desempenho Roofline, com
exemplos; explicitação dos possíveis bottlenecks da execução de código
num nó computacional com 2 dispositivos com CPUs e com um ou mais aceleradores,
com referência ao impacto das limitações do código usado (introdução de
ceilings no modelo Roofline). Sugestões de melhoria de desempenho do
código com base na intensidade operacional do mesmo e do Roofline do
sistema de computação usado.
Sugestão de leituras: Os slides sobre
a família
Intel
MIC;
uma compilação de artigos sobre a arquitetura e
programação dos manycore
Xeon Phi da
Intel, incluindo alguns capítulos do livro sobre o KNL. Recomenda-se ainda (i) a exploração
deste site
da Intel com informação pertinente sobre o MIC, bem como os dois primeiros
capítulos do livro recomendado sobre o Intel Xeon Phi Coprocessor; e (ii)
o relatório que analisa a arquitetura do sistema que esteve em #1 no TOP500 de
junho'16 a novembro'17, o
Sunway TaihuLight.
Os
slides sobre Roofline. O conceito de Roofline é apresentado na secção 4.3 do livro
CAQA e o artigo que surgiu no ACM está
aqui.
O guião de trabalhos para a sessão laboratorial
3 com uma lista de trabalhos obrigatórios a realizar antes do início
da sessão, complementado por
estes
ficheiros.
Trabalho prático para casa (para avaliação): O enunciado e respetiva documentação de apoio.
Semana 10
20-nov-18 (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.
Análise da evolução de PUs desde a lista de TOP500 do ano anterior e uma visão para a
próxima geração de sistemas HPC, com destaque em sistemas baseados na versão HPC do ARMv8 de 64-bits.
Aula prática laboratorial (Lab3): Exploração de questões de vetorização do Xeon Phi KNL.
Sugestão de leituras: slides
TopHPC; recomenda-se ainda a leitura de artigos e
slides relativos ao ARMv8 da Cavium, o Thunder-X2.
O guião de trabalhos para a sessão laboratorial 4 com uma lista de trabalhos obrigatórios a realizar antes do início
da sessão, complementado por
este
ficheiro.
Semana 11
27-nov-18 (9h-12h)
Aula teórica: Paralelismo ao nível dos dados para além dos computadores vetoriais e extensões SIMD: análise de SoCs híbridos com multicore PUs e GPU-cores, com destaque para os chips da Intel e da associação da ARM com a NVidia (família Tegra).
Aula prática laboratorial (Lab4): Técnicas de otimização de código CUDA com análise comparativa de desempenho face a idêntica execução num Xeon multicore.
Sugestão de leituras: parte final dos slides
TopHPC; recomenda-se ainda uma leitura dos
slides de
Jim Rainders (Intel) num curso que ele deu em 2014.
Semana 12
04-dez-18 (9h-12h)
Palestra pelo Prof. Luís Paulo Santos: "Introdução à Computação Quântica e ao algoritmo de Grover" (slides)
Aula prática laboratorial: Análise e discussão de questões relacionadas com o trabalho prático para avaliação.
Semana
13
11-dez-18 (9h-12h)
Avaliação: Teste escrito.
15-jan-19 (9h-12h)
Apresentação e discussão de trabalhos: Caracterização em termos de desempenho máximo de várias plataformas de computação (usando o Roofline), e 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.