Logotipo e link para a Universidade do Minho

CPD - Arquiteturas Avançadas
Mestrado Eng.ª Informática
2015/2016
Docente responsável: A. Proença

Vista da Rua do Souto no Séc. XVI

 

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: 13 Jan 2016
 

 departamento de informática

Avisos:

  1. Notas adicionais relativas à defesa dos trabalhos a 1-dez:
    • o resumo do trabalho a entregar na véspera (antes das 16h00) deverá basicamente conter o desenho do roofline, a indicação da sequência dos ciclos atribuído ao grupo (ijk ou kji ou ...) e 1 ou 2 gráficos dos vossos ensaios com o roofline e a localização dos pontos de performance dos vossos códigos (para os diferentes tamanhos de matrizes que escolheram)
    • na apresentação oral a parte do roofline do trabalho deverá ser reduzida ao mínimo (máx 1 slide), mas o relatório a entregar depois deverá ser claro como foram calculados os valores
    • a ordem de apresentação oral pelos grupo é totalmente aleatória e será definida apenas no início de cada apresentação
    • a avaliação dos trabalhos tem uma componente de avaliação global (mesma nota para ambos os membros do grupo, caso do relatório e da estrutura global dos slides) e uma de avaliação individual (comportamento na sessão de apresentação e defesa do trabalho, e participação na sessão)
    • cada apresentação será feita por ambos os membros do grupo: para cada slide o docente indicará na hora quem deverá apresentá-lo
    • após os 10min de apresentação dos slides, seguir-se-ão 5min de discussão, com intervenção da audiência; cada aluno deverá colocar pelo menos 2 questões durante a sessão toda.  (25-nov-15)
     

  2. Avaliação: Refinamento dos pesos das diversas componentes de avaliação: (i) participação nas 3 sessões laboratoriais (10% a 15%), (ii) trabalho prático com relatório e defesa no dia 01-dez-15 (30% a 50%), e (iii) teste escrito no dia 15-dez-15 (40% a 60%).   (20-out-15)
     

  3. 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  (12-set-15)
     

  4. 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. (21-set-15)
     

  5. 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. (12-set-15)

Topo...


Sumários & Notas de apoio:

Semana 1

15-set-15 (9h-12h)

Introdução ao ambiente laboratorial do perfil: Apresentação do cluster computacional SeARCH de apoio ao funcionamento das UCs do perfil de CPD, incluindo visita guiada às instalações do equipamento (conduzida pelo administrador de sistemas, Eng.º Albano Serrano) e exposição sucinta do ambiente de desenvolvimento de aplicações no cluster.

Semana 2

22-set-15 (9h-12h)

Introdução à UC: Caracterização do ambiente de trabalho para 2015/16: os alunos (e sua formação prévia), a equipa docente (4 docentes), a metodologia de trabalho e proposta para discussão sobre a metodologia de avaliação a adoptar.
Identificação e caracterização de conceitos fundamentais genéricos em Arquiteturas Avançadas.

Aula teórica: Revisão de conceitos básicos de sistemas de computação: mecanismos de otimização da arquitetura interna do CPU e hierarquia de memória. Revisão e síntese 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, SIMD/vetorial, 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/sc1415/), 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.
Adicionalmente:  (i) identificar a microarquitetura de todos os processadores Xeon da Intel, do Hammer e Core até às mais recentes, e construir uma tabela com: ano, max clock frequency, # pipeline stages, grau de superscalarity, # simultaneous threads, suporte vecorial , # cores, tipo/bandwidth de interfaces externas, ...; (ii) identificar as gerações de dispositivos CPU no cluster SeARCH . Ver sugestões no último slide disponibilizado.

Semana 3

29-set-15 (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; 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.

Sugestão de leituras: Slides de revisão sobre ILP e uma revisão de conceitos básicos sobre organização e estrutura de uma cache.
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: (i) Para as mesmas arquiteturas de processadores Intel XEON referidas no TPC anterior, completar a tabela com dados sobre a hierarquia de memória on-chip, nomeadamente: # níveis de cache, e para cada, tamanho, estrutura (block size/placement, replacement policy, write policy), bandwidth para aceder aos níveis inferiores. Ver as sugestões indicadas no último slide disponibilizado.

Semana 4

06-out-15 (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; técnicas de otimização básicas e avançadas. 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: 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 5

13-out-15 (9h-12h) 

Aula teórica com exercícios: 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. Paralelismo ao nível dos dados: arquitecturas vetoriais, extensões SIMD em arquitecturas SISD (MMX, SSE e equivalentes).

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 4 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. .

Semana 6

20-out-15 (9h-12h)

Aula tutorial com prática laboratorial: Introdução à 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 7

27-out-15 (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) a evolução da família Tegra da NVidia para o projeto Denver com o novo ARM de 64-bits, (iv) os novos dispositivos Many Integrated Core (MIC) da Intel e (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 algumas destas arquiteturas, em especial o MIC da Intel e a arquitetura Fermi/Kepler dos GPUs da NVidia, pelo seu impacto nos sistemas atuais do TOP500.

Aula prática laboratorial: 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.

Sugestão de leituras: Os slides sobre DataParallelism2; estes slides seguem material diverso disperso na web. Recomenda-se ainda a leitura deste site da Intel com informação pertinente sobre o MIC, bem como as partes relevantes sobre os GPUs que estão na secção 4.4 do livro CAQA e os dois primeiros capítulos do livro recomendado sobre o Intel Xeon Phi Coprocessor. Recomenda-se ainda a leitura de uma compilação de artigos sobre a arquitetura e programação dos manycore da Intel bem como o whitepaper da NVidia apresentando o Kepler GK110, tudo colocado num ficheiro compactado.

Semana 8  

3-nov-15 (9h-12h)

Palestra: Proposta de um tema para o Projeto Integrado associado ao perfil CPD: "Challenges in Computational Particle Physics", por André Pereira e Alberto Proença (slides)

Aula teórica com exercícios: 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 Roofline. O conceito de Roofline é apresentado na secção 4.3 do livro CAQA e o artigo que surgiu no ACM está aqui.

Trabalho prático para casa: O enunciado e respetiva documentação de apoio ao mesmo estão aqui disponíveis.

Semana 9

10-nov-15 (9h-12h)

Palestra: Proposta de um tema para o Projeto Integrado associado ao perfil CPD: "Finite Volumes for Tsunami Simulation", por Stéphane Clain (slides)

Aula teórica: Discussão dos modelos de programação do Intel MIC e 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: 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.
Para ler também os Chap 3 a 6 do livro recomendado sobre (Programming Massively Parallel Processors) e as partes relevantes sobre os GPUs que estão na secção 4.4 do livro CAQA.
Para introdução à programação em CUDA e em complemento destes capítulos, sugere-se uma leitura dos slides das sessões práticas de CUDA dum ano anterior (TACC-CUDA). 
Os slides do Tutorial CUDA e o código associado.
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.

Semana 10

17-nov-15 (9h-12h)

Aula prática laboratorial: 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: Slides adicionais da NVidia com sugestões complementares de apoio a esta sessão com CUDA; slides da sessão laboratorial com os exercícios resolvidos estão disponíveis 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.

Semana 11 

24-nov-15 (9h-12h)

Palestra 1: Proposta de um tema para o Projeto Integrado associado ao perfil CPD: "DD3IMP (Finite Element Solver): the Challenge of Computational Performance Improvement through HPC", por Luís Alves (slides)

Aula prática laboratorial: 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.

Palestra 2: Proposta de um tema para o Projeto Integrado associado ao perfil CPD: "Challenges in a Linear Algebra Approach to OLAP", por Rogério Pontes e José Nuno Oliveira (slides)

Sugestão de leituras: Os slides da sessão laboratorial com os exercícios resolvidos estão disponíveis aqui ; atenção ao aviso no início desta página, com indicações sobre o modo de funcionamento da próxima aula, com a apresentação e discussão dos trabalhos.

Semana 12

01-dez-15 (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.

Sugestão de leituras: O conjunto dos relatórios apresentados estão compactados neste ficheiro.

Semana 13

08-dez-15 (9h-12h)

Feriado

Semana 14

05-jan-16 (9h-11h)

Avaliação: Teste escrito.

12-jan-16 (9h-10h)

Palestra: Proposta de um tema para o Projeto Integrado associado ao perfil CPD: "Improving the Performance of Liquid Surfaces Modelling in Multicore Devices", por J. Ricardo Fafe (slides)

 


Direitos de Autor & Copyright

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.

Topo...


Página mantida por aproenca<at>di.uminho.pt
Ultima Modificação: 13 Jan 2016