Paradigmas de Computação



Documentos relacionados
Sistemas de Computação e Desempenho (UCE Computação Paralela Distribuída)

Arquitecturas Paralelas I. Computação Paralela. João Luís Ferreira Sobral

Arquitecturas Paralelas I Computação Paralela em Larga Escala. Introdução

Arquitectura de Computadores II. Multiprocessadores

Parallel Computing Paradigms

Arquitetura NUMA 1. Daniel de Angelis Cordeiro. INRIA MOAIS project Laboratoire d Informatique de Grenoble Université de Grenoble, França

Sistemas Operacionais

Capítulo 8. Sistemas com Múltiplos Processadores. 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos

Capítulo 8 Arquitetura de Computadores Paralelos

Arquitectura de Computadores II. Interface com Periféricos

periféricos: interfaces humano-computador (HCI) arquivo de informação comunicações

Programação de Sistemas

Sistemas MIMD. CES-25 Arquiteturas para Alto Desmpenho. Paulo André Castro

Organização de Computadores 1

Computação Paralela. Desenvolvimento de Aplicações Paralelas João Luís Ferreira Sobral Departamento do Informática Universidade do Minho.

Sistema de Computação

Organização e Arquitetura de Computadores I. de Computadores

Arquitectura de Sistemas Paralelos e Distribuídos

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

Computação Paralela. João Luís Ferreira Sobral

Multi-processamento. Arquitecturas MIMD de memória partilhada Multi-cores heterogéneos Multi-processadores

Ricardo Gonçalves 2013/2014. Arquitecturas Multicore

Organização e Arquitetura de Computadores. Hugo Barros @hugobarros.com.br

Programação de Sistemas

Programação de Sistemas

Arquitetura de Sistemas Operativos

1.3. Componentes dum sistema informático HARDWARE SOFTWARE

Paralelismo. Computadores de alto-desempenho são utilizados em diversas áreas:

Multicomputadores. Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação CECOMP

Microarquiteturas Avançadas

Programação de Sistemas

Programação de Sistemas

Máquinas Multiníveis

Comparação SDs X Scs

Multiprocessamento. Multiprocessadores com memória distribuída (multicomputador)

09/06/2011. Profª: Luciana Balieiro Cosme

Arquitetura e Organização de Computadores 2. Apresentação da Disciplina

Arquitetura e Organização de Computadores. Capítulo 0 - Introdução

Introdução. Definição de um Sistema Distribuído (1) Definição de um Sistema Distribuído(2) Metas de Sistemas Distribuídos (2)

Arquitetura de Von Neumann e os Computadores Modernos

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Processador ( CPU ) E/S. Memória. Sistema composto por Processador, Memória e dispositivos de E/S, interligados por um barramento

Bits internos e bits externos. Barramentos. Processadores Atuais. Conceitos Básicos Microprocessadores. Sumário. Introdução.

Visão Geral da Arquitetura de Computadores. Prof. Elthon Scariel Dias

Introdução à Organização de Computadores. Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

Symmetric Multiprocessing Simultaneous Multithreading Paralelismo ao nível dos dados

Prof. Marcelo de Sá Barbosa SISTEMAS DISTRIBUIDOS

CPU Unidade Central de Processamento. História e progresso

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

Introdução aos Sistemas Operativos

BC-0506: Comunicação e Redes Aula 04: Roteamento

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 02 - Estrutura dos Sistemas Operacionais. Cursos de Computação

Prof. Sandrina Correia

Arquitetura e Organização de Computadores. Capítulo 0 - Introdução

Arquitetura de Computadores. Professor: Vilson Heck Junior

Introdução à Organização de Computadores. Execução de Programas Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy)

O que é Grid Computing

Visão do Usuário da DSM

Sistemas Operativos. Sumário. Estruturas de sistemas de computação. ! Operação de um sistema de computação. ! Estruturas de E/S

Aula 04 A. Barramentos. Prof. Ricardo Palma

Arquitetura dos Sistemas de Informação Distribuídos

Prof. Luiz Fernando Bittencourt MC714. Sistemas Distribuídos 2 semestre, 2013

Figura 1 - O computador

Componentes de um Sistema de Computador

Prof. Samuel Henrique Bucke Brito

ICORLI INSTALAÇÃO, CONFIGURAÇÃO E OPERAÇÃO EM REDES LOCAIS E INTERNET

Sistemas Informáticos

SIS17-Arquitetura de Computadores

Sistemas Distribuídos. Introdução

Unidade 13: Paralelismo:

Centro Tecnológico de Eletroeletrônica César Rodrigues. Atividade Avaliativa

29/3/2011. Primeira unidade de execução (pipe U): unidade de processamento completa, capaz de processar qualquer instrução;

Single-Chip Cloud Computer

Ferramentas de Modelação e Análise de Sistemas baseadas em Redes de Petri (RdP)

Hardware. Objetivos da aula. Fornecer exemplos de processadores Intel. Esclarecer as diferenças e as tecnologias embutidas nos processadores Intel.

Arquitetura de Computadores II

SISTEMAS DISTRIBUÍDOS

Tecnologia de Sistemas Distribuídos Capítulo 8: Sistemas de Ficheiros Distribuídos Paulo Guedes

Sistemas Distribuídos

Estruturas do Sistema de Computação

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo

Curso Técnico de Nível Médio

Estrutura de um Rede de Comunicações. Redes e Sistemas Distribuídos. Tarefas realizadas pelo sistema de comunicação. Redes de comunicação de dados

Topologias e abrangência das redes de computadores. Nataniel Vieira nataniel.vieira@gmail.com

Prof. Wilton O. Ferreira Universidade Federal Rural de Pernambuco UFRPE 1º Semestre / 2012

Arquitetura e Organização de Computadores

Arquitecturas Alternativas. Pipelining Super-escalar VLIW IA-64

FACULDADE PITÁGORAS PRONATEC

Fundamentos de Banco de Dados

SISTEMA DE ARMAZENAMENTO (STORAGE)

Transcrição:

UCE- Computação Paralela e Distribuída Paradigmas de Computação João Luís Ferreira Sobral www.di.uminho.pt/~jls jls@... http://alba.di.uminho.pt/... 1

Paradigmas de Computação Paralela Resultados da Aprendizagem! Conceber, implementar e optimizar aplicações que executem de forma eficiente numa gama alargada de arquitecturas: multi-processador (multi-core e multi-thread) e/ou arquitecturas distribuídas (clusters) Programa (resumido)! Arquitectura dos sistemas de computação " sistemas de memória partilhada e sistemas de memória distribuída.! Modelos de programação paralela e linguagens " processos comunicantes, objectos distribuídos " distribuição de componentes pelos recursos computacionais " mecanismos de especificação de concorrência/paralelismo! Projecto de aplicações paralelas " algoritmos paralelos típicos: pipelining, farming, heartbeat e divide & conquer " gestão eficiente da distribuição de componentes; medição, análise e optimização do desempenho " relação custo/benefício de concorrência/paralelismo e sua quantificação (métricas); " adaptação da granularidade da computação/comunicação; " estratégias de distribuição da carga de dados/computação/comunicação.! Análise de ambientes comerciais/tecnologias 2

Paradigmas de Computação Paralela Avaliação! Um trabalho prático (desenvolvimento aplicação para um ambiente de cluster) Pré-requesitos! Conhecimentos de Java e de C /SCD Bibliografia (Base)! Acetatos! M. Quinn. Parallel programming in C with C and OpenMP, McGraw Hill, 2003! I. Foster. Designing and Building Parallel Programs, Addison-Wesley, 1995.! D. Lea. Concurrent Programming in Java: Design Principles and Patterns, Addison Wesley, 2000. Bibliografia (Adicional)! R. Gerber, A. Binstock. Programming with Hyper-Threading Technology, Intel Press, 2004.! F. Buschmann, D. Schmidt, M. Stal, H. Rohnert, Pattern-oriented Software Architecture Vol 2: Patterns for Concurrent and Networked Objects, John Wiley and Sons Ltd, 2000.! T. Christopher, G. Thiruvathukal, High-performance Java platform computing, Prentice Hall, 2000. 3

Paradigmas de Computação Paralela Escalonamento 1. Inrodução à computação paralela (arquitecturas) 2. Programação de sistemas multicore: OpenMP 3. Programação de sistemas multicore: Concorrência (Java) 4. Programação de sistemas multicore: modelos de consistência de memória 5. Sistemas de memória distribuída: Modelos de progamação 6. Sistemas de memória distribuída: MPI 7. Sistemas de memória distribuída: Sistemas de objectos ditribuídos 8. Projecto de aplicações paralelas 9. Medição e optimisação de desenepenho 10. Caso de estudo: simulações de dinâmica molecular 11. Palestra: Parallel programming by refinement 12. Palestra: TBA 4

Paradigmas de Computação Paralela (UCE Computação Paralela Distribuída) Arquiteturas Paralelas João Luís Ferreira Sobral jls@... 1-Março-2011

Paradigmas de Computação Paralela Futuro da arquitectura de computadores Microprogramação Pipelining Superescalaridade Caches Timeshared Memória Virtual RISC VLIW (EPIC) CC-UMA CC-NUMA Not-CC-NUMA Passagem de Mensagens GRID/Internet SIMD Evolução ILP Multithreading Processos comunicantes Revolução Os processadores exploram paralelismo ao nível da instrução de forma transparente Uma revolução obriga à alteração da forma de pensar dos programadores A ênfase de computação paralela é na programação deste tipo de arquitecturas 2

Paradigmas de Computação Paralela Memória partilhada centralizada (CC-UMA, CC-NUMA) Vários processadores partilham um barramento de acesso à memória As caches de cada processador contribuem para reduzir o tráfego no barramento e a latência dos acessos à memória Um valor pode estar replicado em vários sítios => são necessários mecanismos para assegurar a coesão entre as caches dos vários processadores e a memória A largura de banda de acesso à memória é partilhada pelos vários processadores => limitação à escalabilidade deste tipo de arquitetura: P r o c e s s o r P r o c e s s o r P r o c e s s o r C a c h e C a c h e C a c h e S i n g l e b u s M e m o r y I / O 3

Arquitecturas Multi-core Memória distribuída processadores conectados por uma rede de interligação (CC- NUMA, passagem de mensagens) Os sistemas interligados por um barramento tendem a limitar o número de processadores que efectivamente podem ser ligados A alternativa reside na utilização de uma rede dedicada à interligação dos vários processadores, possuindo cada processador a sua memória dedicada P r o c e s s o r P r o c e s s o r P r o c e s s o r C a c h e C a c h e C a c h e M e m o r y M e m o r y M e m o r y N e t w o r k

Paradigmas de Computação Paralela Endereços partilhados sobre memória distribuída Implementação mais simples => não fornecer HW para suporte a coesão de cache a cache não é utilizada em a endereços acessos remotos Serviço de directoria que mantém a informação sobre a partilha de cada bloco local de memória: A directoria é distribuída pelos processadores Cada entrada indica os processadores que contêm uma cópia do bloco de memória A invalidação dos blocos efectuada através de mensagens, com base em informação na directoria

Paradigmas de Computação Paralela Redes de interligação Topologias Completamente conectada (requer N 2 comutadores) Anel (requer 2N comutadores) Matriz e hipercubo Multi-nível

Paradigmas de Computação Paralela Redes de interligação Métricas Latência Largura de banda por ligação agregada - soma a largura de banda das ligações que podem ser realizadas simultaneamente de bisecção - obtida dividindo a máquina em dois tipos de nodos: receptores e emissores d (degree) = ligações de cada comutador Diâmetro = máximo número de ligações entre dois nodos (caminho mais curto) Distância média entre dois nodos

Paradigmas de Computação Paralela Cluster de máquinas Constituídos pode HW normal, interligados por uma rede de alta velocidade (Gbit/s com muito baixa latência) Cada nodo de processamento pode ser uma máquina de memória partilhada com vários processadores Cada nodo possui uma cópia do SO Alta disponibilidade: quando falha uma máquina basta substituí-la por outra Custos de administração na ordem do número de máquinas Exemplo (Cluster investigação da Universidade do Minho - 2006): 8 nodos com SAN FC 3TB 8 nodos com NVIDIA 7800 GTX CPU Processador Freq. Relógio Memória Actual/Máxima Comunicação Nodos Máximo de nodos 14 Intel Xeon 3,2 GHz 10 GB / 112 GB 250 MB/s, 10us (2,0 Gbit/s) 2-way 7 96 Intel Xeon 3,0 GHz 2,0 GHz 96GB / 768GB 1 GB/s, 3us (10 Gbit/s) 2-way / 4-way 48 8

Arquitecturas Multi-core Hierarquia processador-memória Organização dos diversos níveis de cache em sistemas multi-core Consistência entre os vários níveis de memória Conectividade do processador com o exterior Topologias de interligação entre cores / CPU Barramentos, estrela, híbridos Execução simultânea de vários fios de execução (SMT) Hyper-threading Programação de sistemas multi-core Especificação de actividades paralelas Modelos de consistência da memória

Arquitecturas Multi-core Hierarquia processador-memória Cose Partilha de L1, L2 ou L3 entre cores? Como assegurar a coesão caches de diferentes cores? Partilha do barramento de acesso à memória externa? Exemplos: L1 = 32KB+32KB (/Core) L2 = 2MB/4MB/6MB L1 = 64KB+64KB (/Core) L2 = 512K (/Core) L3 = 2MB/6MB

Arquitecturas Multi-core OpenSparc T2-8 cores - 64 threads simultâneas (8/core) - 8 bancos de caches L2-4 controladores de memória

Arquitecturas Multi-core Hierarquia processador-memória Protocolos de coesão entre caches A utilização de protocolos write back pode originar valores inconsistentes entre a cache e a memória principal partilhada Os protocolos de coesão de caches asseguram a coesão entre os valores nas caches dos vários processadores e a memória central Coesão baseada em Snooping cada bloco da cache contém informação indicando se é partilhado. Write-invalidate: numa escrita todas as outras cópias são marcadas como inválidas» Gera menos tráfego no barramento (ex. no caso de escritas sucessivas) Write-update: numa escrita as outras cópias são também actualizadas» Reduz a latência nos acessos Falsa partilha: duas variáveis utilizadas por diferentes processadores são mapeadas no mesmo bloco da cache Problema agrava com o aumento da dimensão dos blocos da cache Caches inclusivas torna o snoop no barramento mais rápido

Arquitecturas Multi-core Hierarquia processador-memória Exemplo de coesão entre caches do tipo write-invalidate Estado de cada linha: Leitura (Read Only), Leitura/Escrita, Inválida A maior parte dos processadores comerciais utilizam uma variante deste protocolo (MESI), onde o estado Read Only está dividido em dois (Exclusive/Shared), indicando se o bloco é partilhado ou não.

Arquitecturas Multi-core Hierarquia processador-memória Implementação de operações de sincronização Com uma instrução de permuta atómica Gera um write-miss e um read-miss por ciclo O spin-lock desperdiça ciclos de CPU, não escalando com o número de processadores Exemplo para três processadores

Arquitecturas Multi-core Hierarquia processador-memória Implementação de operações de sincronização Com uma instrução de permuta atómica Apenas gera um write-miss quando o valor da variável é alterado

Arquitecturas Multi-core AMD K10 Integra o controlador de memória do próprio chip e 2 ligações externas (Hyper Transport) para ligação a outros processadores. O Hyper Transport permite a ligação até 8 processadores sem recurso a componentes adicionais: CC-NUMA - a largura de banda disponível para a memória local é superior à disponibilizada pelo Hyper Transport

Arquitecturas Multi-core Arquitectura do sistema (tradicional) Largura de Banda da memória: 25.6 GB/s (DDR3 1600 dual 12.8 Gb/s) O controlador de memória é o gargalo!

Intel Core i7 Arquitecturas Multi-core Controlador de memória integrado Barramento QPI para conexão o periféricos ou outros processadores (2 x 12,8 GB/s)

Arquitecturas Multi-core Intel 80-core TeraScale Chip para investigação de tecnologias futuras para multi-core, que não pretende ser comercializado Protótipo actual atinge 1 TeraFlop

Arquitecturas Multi-core Novas arquiteturas Intel Sandy bridge Intel 48-core SSC

Hyper-Threading Arquitecturas Multi-core Unidade Funcional Super-escalar Multi-processador (2 vias) Hyper-Threading 1 2 3 1 2 3 1 2 3 1 2 3 Ciclos de relógio 1 processador = 2 processadores? Não porque parte dos recursos do processador não são duplicados (i.é., são divididos pelos vários fios de execução) (caches, registos internos, buffers internos, etc.)

O futuro dos multi-core Arquitecturas Multi-core Aumento do número de núcleos por chip (100 ou mais) Desafios: Interligação - Como interligar de forma eficiente os núcleos Hierarquia de memória e coesão Partilha de cache pelos núcleos Memória Aumento proporcional ao número de núcleos Programação!!! A tendência atual é para o tipo NUMA Processadores multi-core são mais eficientes em termos energéticos As aplicações do dia-a-dia não beneficiam desta evolução