Linguagem de Programação II

Documentos relacionados
Carlos Eduardo Batista Centro de Informática - UFPB

Linguagem de Programação II

speedup aprimorado aprimorado Fração aprimorada speedup aprimorado Fração aprimorada speedup aprimorado Tempo original Fração aprimorada aprimorado

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

Introdução à Computação: Sistemas de Computação

AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES

SSC510 Arquitetura de Computadores. 6ª aula

Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Filipo Mór

Introdução à Programação Paralela através de Padrões. Denise Stringhini Calebe Bianchini Luciano Silva

Multiprogramação leve em arquiteturas multi-core

Caracterização de Sistemas Distribuídos

Organização e Arquitetura de Computadores I

Programação Concorrente e Paralela

Sistemas Distribuídos

Arquitetura de Computadores. Processamento Paralelo

Arquiteturas Paralelas

SSC0611 Arquitetura de Computadores

Modelo de Von Neumann

SIST706 Sistemas Distribuídos

Programação Concorrente e Paralela. Noemi Rodriguez

SSC-0742 PROGRAMAÇÃO CONCORRENTE. Aula 04 Revisão de Arquiteturas Paralelas -Parte 2 Prof. Jó Ueyama e Julio Cezar Estrella

Processamento Paralelo

Arquitetura de Computadores Paralelos. Introdução Conceitos Básicos Ambientes de Programação Modelos de Programação Paralela

SSC510 Arquitetura de Computadores. 8ª aula

SSC0611 Arquitetura de Computadores

Disciplina de Arquitetura de Computadores

Organização de Computadores II. Arquiteturas MIMD

Universidade Federal do Rio de Janeiro Informática DCC/IM. Arquitetura de Computadores II. Arquiteturas MIMD. Arquiteturas MIMD

Arquitetura de Computadores. Prof. João Bosco Jr.

Multiprocessamento. Patterson & Hennessy Capítulo 9. Arquitetura e Organização de Computadores Juliano M. Vieira (c) 2011

SSC PROGRAMAÇÃO CONCORRENTE. Aula 02 Revisão de Arquiteturas Paralelas Parte 1 Prof. Jó Ueyama

Concorrência em Processos

Sistemas Distribuídos

Sistemas distribuídos. Prof. Emiliano Monteiro

Programação Distribuída e Paralela. Jorge Barbosa

Processamento Paralelo & Multiprocessadores

COMPUTADORES. Arquiteturas de Computadores Paralelos. Prof.: Agostinho S. Riofrio

Arquiteturas paralelas Parte 1

OpenMP: Variáveis de Ambiente

ARQUITETURA DE COMPUTADORES. Organização de Sistemas Computacionais. Prof.: Agostinho S. Riofrio

Unidade 12: Introdução ao Paralelismo:

Memória Cache. Walter Fetter Lages.

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES INTRODUÇÃO AO PARALELISMO: PROCESSADORES SUPERESCALARES. Prof. Dr. Daniel Caetano

Programação Concorrente

AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS

Computadores e Programação (DCC/UFRJ)

PARALELISMO NO NÍVEL DO PROCESSADOR

Bibliografia em processamento paralelo

Introdução à Computação: Sistemas de Computação

STD29006 Sistemas Distribuídos

Memória. Memória Cache

Arquitetura de Sistemas Digitais

Modelos para Concorrência

Processadores. Principal função é executar programas armazenados na memória principal.

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 04: PROCESSAMENTO PARALELO: MULTICOMPUTADOR

Paralelização de Algoritmos de CFD em Clusters Multi-Core MC7. Escola de Verão Arquiteturas Multi-Core

Organização de Computadores Sistema de entrada e saída (I/O) e computação paralela. Professor: Francisco Ary

Memória Compatilhada Distribuída. Bruno M. Carvalho Sala: 3F2 Horário: 35M34

Sistemas de Memória Cache para Multiprocessadores

Organização de Computadores 2005/2006 Processamento Paralelo

JAVA CÁ & LÁ Um Middleware para Computação Paralela e Distribuída

3 Computação de Propósito Geral em Unidades de Processamento Gráfico

Arquitetura de Computadores

Arquitetura de Computadores Unidade Central de Processamento CPU

Conceitos Básicos Processador

Prof. Rômulo Calado Pantaleão Camara Carga Horária: 2h/60h

Programação Paralela e Distribuída

Arquitetura de sistemas distribuídos

Laboratório de Programação Paralela. Introdução. Prof. Carlos Bazilio

Arquitetura e Organização de Processadores. Aula 1. Introdução Arquitetura e Organização

SSC PROGRAMAÇÃO CONCORRENTE. Aula 03 Terminologia Geral de Computação Paralela Prof. Jó Ueyama

Arquiteturas de Sistemas de Processamento Paralelo. Arquiteturas MIMD

Parte I Multiprocessamento

Características de Sistemas Distribuídos

Arquitetura de Computadores. Prof. João Bosco Jr.

Sistemas Operacionais Distribuídos

Sistemas Operacionais. Adão de Melo Neto

MEMÓRIA COMPARTILHADA DISTRIBUÍDA

Processamento Paralelo

PROCESSADORES SUPERESCALARES FELIPE G. TORRES

The future is parallel but it may not be easy

SSC PROGRAMAÇÃO CONCORRENTE. Aula 06 Modelos de Programação Prof. Jó Ueyama e Julio Cezar Estrella

Memória Compartilhada e Distribuída. _ Notas de Aula _ Prof. Tiago Garcia de Senna Carneiro DECOM/UFOP

PROCESSADORES Unidade de Controle Unidade Aritmética e Lógica efetua memória de alta velocidade registradores Program Counter Instruction Register

30/5/2011. Sistemas computacionais para processamento paralelo e distribuído

Acessos não uniforme à memória em sistemas distribuídos Orientador: Prof. Dr. Norian Marranghello

Arquiteturas de Computadores. Programa de Pós-Graduação em Ciência da Computação. Plano da aula

MONTAGEM E MANUTENÇÃO DE COMPUTADORES

Aula 2: Tipos de Sistemas Operacionais. Instituto Federal da Bahia Campus Salvador INF009 - Sistemas Operacionais Profª Flávia Maristela

Arquitetura de Computadores

SSC0611 Arquitetura de Computadores

Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos

Sistemas Operacionais

Definindo melhor alguns conceitos

28/8/13. Processadores. Introdução

Sequência 17 Organização e Hierarquia de Memória

Hierarquia de Memória

Modelagem e implementação de programas concorrentes

Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores

Transcrição:

Linguagem de Programação II Carlos Eduardo Ba6sta Centro de Informá6ca - UFPB bidu@ci.ufpb.br

Mo6vação Adaptar a estrutura lógica de um problema (Ex.: Servidores Web). Lidar com disposi6vos independentes (Ex.: S.O.). Aumentar o desempenho das aplicações (Ex.: aplicações de Big Data, SETI@Home). Arquiteturas de computadores paralelos Avanços mais recentes das Arquitetura de Computadores têm implicado muito mais no incremento de paralelismo (mul6processadores ou mul6cores) do que no aumento velocidade (clock).

Arquitetura de Computadores Memória cache Mais rápida e cara. Localidade temporal e espacial. Localidade temporal Uma vez acessada uma determinada posição de memória, há uma grande probabilidade dessa posição ser novamente acessada em um curto intervalo de tempo. Localidade espacial Quando uma determinada posição de memória é referenciada, existe uma grande probabilidade de que as posições vizinhas também sejam acessadas.

Arquitetura de Computadores Memória Principal Cache L2 Cache L1 CPU

Arquitetura de Computadores Modernos Computadores paralelos Mul6processador de Memória Compar6lhada Mul6processador de Memória Distribuída Taxonomia de Flynn Single Instruc6on Single Data (SISD) Mul6ple Instruc6on, Single Data stream (MISD) Single Instruc6on, Mul6ple Data streams (SIMD) Mul6ple Instruc6on, Mul6ple Data streams (MIMD)

Arquitetura de Computadores Leitura sugerida: Flynn s taxonomy (Wikipedia) h]p://en.wikipedia.org/wiki/flynn%27s_taxonomy "Some Computer Organiza6ons and Their Effec6veness (FLYNN, M.J.) h]p://ieeexplore.ieee.org/xpl/ar6cledetails.jsp? arnumber=5009071

Mul6processador de memória compar6lhada Máquinas UMA (Uniform Memory Access)

Mul6processador de memória compar6lhada IBM p690 (32 processadores Power4+)

Mul6processador de memória compar6lhada Máquinas NUMA (Non- Uniform Memory Access)

Mul6processador de memória compar6lhada IBM HS22 (2 processadores Xeon 5500 da Intel)

Arquitetura de Computadores Modernos Quando dois processadores fazem referência a uma mesma posição na memória compar6lhada, pode ocorrer um problema de inconsistência de cache. Operações de escrita podem levar a um problema de inconsistência de memória. Manter a sequência natural das instruções em um programa executado de forma paralela é caro e muitas vezes complexo.

Coerência de Cache Diversas Arquiteturas de máquinas paralelas atuais são construídas com processadores produzidos em larga escala - Reduzir os custos de projeto Máquinas paralelas com múltiplos processadores incorporam caches em suas arquiteturas Presença de caches privadas em multiprocessadores necessariamente introduz problemas de coerência de cache

Coerência de Cache Descrição do problema Múltiplas cópias de mesma posição de memória podem existir em diferentes caches Cada processador atualiza sua cópia local, não se preocupando com a existência de outras cópias em outros processadores Cópias de mesmo endereço de memória poderão possuir valores diferentes à Caracteriza uma situação de inconsistência de dados

Coerência de Cache Coerência de cache em multicomputadores Não ocorre pois cada nó possui hierarquia de memória inteira Não existe espaço de endereçamento global compartilhado por todos

Coerência de Cache Uma arquitetura multiprocessada com caches privadas é coerente se e somente se uma leitura de uma posição x de memória efetuada por qualquer processador i retorne o valor mais recente desse endereço

Coerência de Cache Toda vez que uma escrita for efetuada por um processador i em um endereço de memória x, tem que ser garantido que todas as leituras subseqüentes de x, independentemente do processador, forneçam o novo conteúdo de x

Coerência de Cache

Coerência de Cache Estratégias básicas para tratar coerência de cache Escrita na cache resulta atualização de outras cópias desse dado nas demais caches (write-update) Escrita na cache resulta invalidação de outras cópias desse dado nas demais caches (write-invalidate)

Coerência de Cache Invalidação tem custo menor, mas maior latência de acesso caso as cópias invalidadas sejam novamente acessadas Necessita buscar da memória principal Atualização tem custo mais alto, especialmente em máquinas com muitos processadores (muitas cópias potenciais de mesmo endereço), mas menor latência Novo acesso a cópias é resolvido em nível de cache

Arquitetura de Computadores Modernos Consistência de memória é a polí6ca que determina como e quando mudanças feitas por um processador são vistas pelos outros processadores do sistema. Um modelo de consistência de memória define um contrato entre o sovware e o sistema de memória Se o sovware obedecer certas regras, o sistema de memória funcionará corretamente.

Arquitetura de Computadores Modernos Modelos de consistência de memória Consistência sequencial Consistência de processador Consistência de liberação

Arquitetura de Computadores Modernos Consistência sequencial A execução paralela de um programa é sequencialmente consistente se qualquer uma de suas execuções é equivalente a uma execução entrelaçada em um único processador

Arquitetura de Computadores Modernos Consistência sequencial A ordem das operações em cada processador deve ser preservada. O efeito das operações deve ser percebido pelos processadores no mesmo tempo.

Arquitetura de Computadores Modernos Consistência sequencial

Arquitetura de Computadores Modernos Consistência de processador (Goodman) Operações de escrita de um único processador são recebidas por todos os outros processadores na ordem em que são executadas, enquanto que operações de escrita de processadores dis6ntos podem ser enxergadas em ordens diferentes por processadores diferentes.

Arquitetura de Computadores Modernos Consistência de processador P1 P2 P3 P4 Barramento O processador P1 propaga sua operação de escrita, que chega primeiro em P2 e depois em P3. O inverso ocorre com a operação de escrita propagada por P4.

Arquitetura de Computadores Modernos Consistência de processador (Gharachorloo et al) Garante apenas que as operações de escrita ocorrerão na memória na ordem que são consideradas pelo processador. Permite que uma operação de leitura posterior a uma de escrita seja realizada antes que essa operação de escrita seja percebida por todos os processadores. O6miza o desempenho do hardware.

Arquitetura de Computadores Modernos Consistência de processador Cenário não condizente com este modelo.

Arquitetura de Computadores Modernos Consistência de liberação Antes de qualquer acesso a memória por operações de leitura ou escrita, todas as operações de obtenção (acquire) devem ter sido executadas. Antes de um acesso de liberação (release) ser executado, todas as operações de leitura ou escrita na memória devem ser executadas. Acessos especiais como obtenção (acquire) ou liberação (release) devem ser sequencialmente consistentes.

Arquitetura de Computadores Modernos Consistência de liberação São necessárias operações de sincronização explícitas para garan6r a ordem em que as operações de leitura e escrita se realizarão.

Mul6processador de memória distribuída

Arquitetura de Computadores Modernos MulIprocessadores de memória distribuída MulIcomputadores Máquinas fortemente acopladas. Processadores fisicamente próximos, conectados por um barramento de alta velocidade. Ex.: Mesh ou hipercubo. Redes Máquinas fracamente acopladas. Nós conectados através de uma rede de comunicação. Ex.: Beowulf.

Beowulf Arquitetura de computadores modernos

Arquitetura de Computadores Modernos MulIprocessador de memória distribuída Cada processador possui sua própria memória privada. A comunicação entre os processador se dá por meio de troca de mensagens. Como não há memória compar6lhada, não há problemas de consistência de cache e de memória.

Desafios da Programação Concorrente Construir programas de computador que trabalhem juntos e que possibilitem o uso eficiente das arquiteturas de hardware de processamento paralelo. As aplicações concorrentes são divididas em três grandes grupos: Sistemas Mul5threaded Sistemas Distribuídos Sistemas Paralelos

Desafios da Programação Concorrente Sistemas Mul5threaded Sistemas que apresentam mais threads do que processadores. Ex.: Gerenciador de janelas. Sistemas Distribuídos Sistemas que cooperam entre si, residindo em computadores dis6ntos que se comunicam através de uma rede. Ex.: A Web. Sistemas Paralelos Sistemas que necessitam de grande poder de processamento. Ex.: Problemas de o6mização.

Desafios da Programação Concorrente Para desenvolver programas concorrente é necessário conhecer três elementos: Regras Modelos formais que ajudam a entender e desenvolver programas corretos. Ferramentas Mecanismos oferecidos pelas linguagens de programação para descrever computações concorrentes. Estratégias Paradigmas de programação adequados para as aplicações tratadas

Desafios da Programação Concorrente As aplicações concorrentes devem ser vistas por dois ângulos: Computabilidade Princípios que abordam o que pode ser computado em um ambiente concorrente. Desempenho Avaliação do aumento no desempenho.

Leitura sugerida Parallel compu6ng (Wikipedia) h]p://en.wikipedia.org/wiki/parallel_compu6ng Amdahl s law (Wikipedia) h]p://en.wikipedia.org/wiki/amdahl's_law Scien6st out to break Amdahl's law h]p://www.pcworld.com/ar6cle/2042256/ scien6st- out- to- break- amdahls- law.html

Referências Notas de Aula do Prof. Bruno Pessoa Andrews, G. Founda2ons of Mul2threaded, Parallel, and Distributed Programming, Addison- Wesley, 2000. Rosseto, S., Cap. I: Introdução e histórico da programação concorrente. Disponível em: <h]p://www.dcc.ufrj.br/~silvana/compconc/ cap- 1.pdf>.