![]() |
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: 2014/2015)
Ultima
Modificação:
28 Dez 2016
departamento de informática |
|
Alteração de datas de avaliação: confirmam-se as
seguintes datas acordadas para a avaliação: terça 10-jan-17,
9h30-11h30, teste escrito; quinta 19-jan-17, 9h00-12h00 e
14h00-17h00, defesa dos trabalhos práticos, os quais deverão ser antecedidos
por uma versão preliminar do relatório em inglês (com resumo e estrutura do
relatório, máx 2 páginas, a entregar antes de 12h00 de 18-jan-17), e
com entrega do relatório final em inglês até dia 22-jan-17. (15-dez-16)
Avaliação: Ficaram finalmente acordadas as
datas para as avaliações, nomeadamente para o teste (terça, 10-jan,
9h30) e para as defesas dos trabalhos de grupo (terça 20-dez,
9-12 e quarta 21-dez, 9-12); a constituição dos grupos de trabalho
deverá ser comunicada ao docente responsável pela UC, por email, até 20-nov.
(15-nov-16)
Mudança de sala de aula: a partir da próxima aula
(18-out-16) as aulas de AA passarão a usar a sala 309 no CP2 (a mesma que é
usada à tarde para a outra UC do mesmo perfil). Não esquecer que a próxima
sessão de terça terá uma componente laboratorial, pelo que se recomenda que
tragam os vossos portáteis para acesso ao cluster.
(14-out-16)
Criação de contas no SeARCH: A lista de contas que
foram criadas no cluster para apoio a esta UC (e perfil) estão
aqui. Se esta lista estiver incompleta
ou contiver outras incorrecções, agradeço que me contactem por email. (06-out-16)
Avaliação (proposta aceite, datas corrigidas): Refinamento dos pesos das diversas
componentes de avaliação: (i) participação em todas as sessões
laboratoriais (10% a 15%), (ii) trabalho prático com relatório e
defesa no dia 19-jan-17 (30% a 50%), e (iii) teste escrito no dia 10-jan-17 (40% a 60%). (15-dez-16)
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
• Jim Jeffers & James Reinders,
Intel Xeon Phi Coprocessor High
Performance Programming, Morgan Kaufmann, 2013
(19-set-16)
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.
(19-set-16)
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. (19-set-16)
Sumários & Notas de apoio:
Semana 1
20-set-16 (9h-12h)
Introdução ao perfil: Caracterização do ambiente de trabalho para 2016/17: os alunos (e sua formação prévia), a equipa docente (4 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/lei/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
27-set-16 (9h-12h e 14h-16h)
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; 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.
Introdução ao ambiente laboratorial do perfil: Apresentação do cluster computacional SeARCH de apoio ao funcionamento das UCs do perfil de CPD, e exposição sucinta do ambiente de desenvolvimento de aplicações no cluster (com a colaboração dos Prof. António Pina e Eng.º Albano Serrano).
Sugestão de leituras:
Slides de revisão sobre ILP e slides de
introdução ao cluster SeARCH.
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, e o
capítulo 6 do mesmo livro (Memory Hierarchy).
Trabalho para casa: Para as 5 mais recentes microarquiteturas de processadores Intel Xeon presentes no cluster SeARCH, construir uma tabela com as características principais desses chips. Ver as sugestões indicadas no último slide disponibilizado.
Semana 3
04-out-16 (9h-12h)
Aula teórica com exemplos: 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, nomeadamente nos protocolos de coerência de cache (snooping e directory-based) e na consistência de caches.
Sugestão de leituras:
uma revisão de conceitos básicos sobre organização e estrutura de uma
cache
e
slides da aula sobre hierarquia de memória.
Complementar esta leitura 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.
Trabalhos para casa: (i) completar adequadamente a tabela
comparativa dos processadores x86-64 mais recentes na sequência das
especificações definidas anteriormente, para discussão na próxima sessão; (ii)
ler e estudar para discussão na próxima aula este
tutorial sobre modelos de consistência de memória partilhada.
Semana 4
11-out-16 (9h-12h)
Aula teórica com exercícios: Hierarquia
de memoria: análise de 6 técnicas de otimização básicas e outras 10 mais
avançadas.
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: introdução às arquiteturas vetoriais.
Sugestão de leituras: Os slides sobre ILP-MThread e a primeira série sobre DataParallelism1. O primeiro conjunto de slides segue o material do livro CAQA, e as secções relevantes estão referidas no último slide; o segundo conjunto segue as primeiras 3 secções do Cap. 4 do livro 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 5
18-out-16 (9h-12h)
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 da sessão tutorial com prática laboratorial sobre PAPI e Code-Optimization (e o código associado); o guião de trabalhos para a sessão laboratorial 1 (e código associado)contendo uma lista de trabalhos obrigatórios a realizar antes do início da sessão.
Semana 6
25-out-16 (9h-12h)
Aula teórica: 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.
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: os slides sobre DataParallelism1 foram atualizados.
Semana 7
01-nov-16 (9h-12h)
Feriado
Semana 8
8-nov-16 (9h-12h)
Aula teórica: 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 (i) o Keystone DSP da TI, (ii) o IBM Cell BE, (iii) o IBM Power BlueGene/Q Compute, (iv) a evolução da família Tegra da NVidia para o projeto Parker com o novo ARM de 64-bits, Denver 2(v) os novos dispositivos Many Integrated Core (MIC) da Intel, o co-processador KNC e o processador KNL.
Sugestão de leituras: Os slides sobre
DataParallelism2; estes slides seguem material diverso disperso na
web.
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)
os artigos que descrevem a arquitetura do sistema que ficou em #1 no TOP500 de
junho'16, o Sunway TaihuLight e o que
descreve o chip de 1024-cores da Adapteva, o
Epiphany-V.
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, complementado por estes
ficheiros; os slides de introdução à
programação de GPUs com CUDA que serão
apresentados na próxima aula.
Semana 9
15-nov-16 (9h-12h)
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, nomeadamente (v) dispositivos que requerem um processador escalar externo (referidos como host), com destaque para os GPUs e as FPGA (que podem ser ISA-free). Análise mais detalhada de arquiteturas de GPUs da NVidia, em especial a evolução Fermi/Kepler/Maxwell/Pascal 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.
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 sobre DataParallelism3; os slides de DataParallelism2 foram atualizados; os slides com o tutorial sobre CUDA foram disponibilizados no sumário da aula anterior; ler também os Chap 3 a 6 do livro recomendado sobre (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). Slides adicionais da NVidia com sugestões complementares de apoio a esta sessão com CUDA, bem como o whitepaper da NVidia apresentando o Kepler GK110, que equipa vários nós do cluster.
Semana 10
22-nov-16 (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 nova 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
DataParalelism4;
uma compilação de artigos sobre a arquitetura e
programação dos manycore Xeon Phi da
Intel, incluindo alguns capítulos do novo livro sobre o KNL. 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 (versão final atualizada).
Semana 11
29-nov-16 (9h-12h)
Aula prática laboratorial (Lab3): Análise do impacto da vetorização de código e sua escalabilidade em termos de # threads paralelos, usando um problema com dimensão proporcional ao # cores, em sistemas com Xeon manycore (Xeon Phi, arquitetura MIC), com e sem vetorização de código.
Sugestão de leituras: 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 estes ficheiros.
Semana 12
06-dez-16 (9h-12h)
Aula prática laboratorial: Análise e discussão de questões relacionadas com o trabalho prático para avaliação.
Semana 13
13-dez-16 (9h-12h)
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.
Semana 14
20 dez-16 (9h-12h)
Sessão adiada para janeiro (ver detalhes nos Avisos, em cima).
10-jan-17 (9h-12h)
Avaliação: Teste escrito.
Palestras: Propostas de temas para o Projeto Integrado
associado ao perfil CPD:
-
19-jan-17 (9h-12h, 14h-17h)
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.