Modelo de Programação Paralela

Documentos relacionados
Definindo melhor alguns conceitos

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

Exercícios (Ian Foster s Book)

Organização e comunicação em plataformas paralelas

Modelos para Concorrência

Tecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2)

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

Programação de Alto Desempenho - 2. Prof: Carla Osthoff

SSC510 Arquitetura de Computadores. 6ª aula

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

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

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

Organização e Arquitetura de Computadores I

Caracterização de Sistemas Distribuídos

Sistema Distribuído. Sistema Distribuído. Aplicações Distribuídas. Conceitos Básicos

Ferramentas para Programação em Processadores Multi-Core

AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES

Sistemas Distribuídos

Sistemas Operacionais. Adão de Melo Neto

Sistemas Distribuídos

Organização de Computadores II. Arquiteturas MIMD

Arquitetura e Organização de Processadores. Aula 4. Pipelines

Thread. Thread. Sistemas Operacionais. Leonard B. Moreira. UNIVERSIDADE ESTÁCIO DE SÁ fevereiro, / 41

Processos O conceito de processos é fundamental para a implementação de um sistema multiprogramável. De uma maneira geral, um processo pode ser entend

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 02: PROCESSAMENTO PARALELO: PROCESSADORES VETORIAIS

FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES MEMÓRIA CACHE CAPÍTULO 5. Cristina Boeres

Processos e Threads e em sistemas distribuídos. Prof. Me. Hélio Esperidião

O Modelo Síncrono BSP para Computação Paralela

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

Estruturas de Sistemas Operacionais

Computadores e Programação (DCC/UFRJ)

Multiprogramação leve em arquiteturas multi-core

Sistemas Operacionais. Processos e Threads

Sistemas de Memória. CES-25 Arquiteturas para Alto Desmpenho. Paulo André Castro

Exercícios Cap I. 1.1, 1.2, 1.3 (somente letras (a), (b) e (c)) , 1.8 e 1.12 IC - UFF

Arquitetura e Organização de Computadores

CURSO de CIÊNCIA DA COMPUTAÇÃO RIO DAS OSTRAS - Gabarito

Algoritmos Computacionais

Sistemas Operacionais

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 02

Programação Concorrente

Definindo melhor alguns conceitos

FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES MEMÓRIA CACHE CONTINUAÇÃO CAPÍTULO 5. Cristina Boeres

Capítulo 2. Multiprogramação. Conteúdo. Objetivo. Recordando. Recordando. DCA-108 Sistemas Operacionais

Curso de Programação Distribuída e Paralela 29/09/2008. Informática UFRGS. Sistemas Operacionais II (C. Geyer) Sincronização 1. Pg.

Organização e Arquitetura de Computadores INTRODUÇÃO

Sistemas de Informação. Sistemas Operacionais

MEMÓRIA CACHE FELIPE G. TORRES

Modelo de Von Neumann

Sistemas Operacionais. Sistema de entrada e Saída

Processos Concorrentes

CONCURSO PÚBLICO PARA PROVIMENTO DE CARGO EFETIVO PROFESSOR DE ENSINO BÁSICO, TÉCNICO E TECNOLÓGICO Edital 20/2015 Campus Rio Pomba FOLHA DE PROVA

Microprocessadores. São máquinas elétricas onde podemos armazenar instruções lógicas, aritméticas e de tomada de decisão;

Sistemas Operacionais

Fundamentos de Sistemas Operacionais

Disciplina de Arquitetura de Computadores

Barramento. Prof. Leonardo Barreto Campos 1

Sistemas Operacionais. Entrada/Saída

Threads. Sistemas Operacionais. Charles Tim Batista Garrocho. Instituto Federal de São Paulo IFSP Campus Campos do Jordão. charles.garrocho.

SSC0112 Organização de Computadores Digitais I

Capítulo 5 Livro do Mário Monteiro Conceituação. Elementos de projeto de memória cache

Estrutura de um computador digital. Gustavo Queiroz Fernandes

SISTEMA DE ARQUIVOS DO SISTEMA OPERACIONAL

Figura 3.1: Fluxograma do algoritmo da Programação Genética.

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

Fundamentos de Sistemas Operacionais

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

Aula 1: Introdução aos Sistemas Operacionais. Instituto Federal da Bahia INF009 - Sistemas Operacionais Profª Flávia Maristela

Entrada/Saída. Capítulo 5. Sistemas Operacionais João Bosco Junior -

Carlos Eduardo Batista Centro de Informática - UFPB

Sistemas Operacionais. Conceitos de Hardware

Programação Concorrente. Prof. Hugo Vieira Neto

Fundamentos de Sistemas Operacionais. Threads. Prof. Edwar Saliba Júnior Março de Unidade Threads

Sistema Operacional. Prof. Leonardo Barreto Campos. 1/30

Redes de Computadores. Fundamentos de Sistemas Operacionais - 2º Período

Infra-Estrutura de Software

Organização de Sistemas Computacionais Processadores: Organização da CPU

Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia (Material Adaptado)

Aula 6: Comunicação entre processos. Instituto Federal da Bahia INF009 - Sistemas Operacionais Profª Flávia Maristela

Aula 16: UCP: Conceitos Básicos e Componentes

Algoritmos Paralelos usando CGM/MPI: Uma Introdução. Edson Norberto Cáceres e Siang Wun Song DCT/UFMS e DCC/IME/USP DCC-IME-USP - Aula 02

CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO

Memória. Memória Cache

SSC0611 Arquitetura de Computadores

Infra-Estrutura de Software. Entrada / Saída

Sistemas Distribuídos e Paralelos

Concorrência em Processos

Programação Paralela e Distribuída Lista de Exercícios P2 2008/1

Introdução aos Sistemas Distribuídos

Memória Cache. Memória Cache. Localidade Espacial. Conceito de Localidade. Diferença de velocidade entre Processador/MP

Introdução à Programação Aula 02. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Sâmia Rodrigues Gorayeb. Arquitetura de Computadores Processadores

Arquitetura e Organização de Computadores. Processador Registrador Memória. Professor Airton Ribeiro

SSC0611 Arquitetura de Computadores

Ferramentas para Programação em Processadores Multi-Core

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

Redes de Computadores e Aplicações

Gerência de Dispositivos. Adão de Melo Neto

Transcrição:

Modelo de Programação Paralela As arquiteturas paralelas e distribuídas possuem muitos detalhes Como especificar uma solução paralela pensando em todos esses detalhes? O que queremos? Eecutar a solução paralela o mais rápido possível? Todos os detalhes influem no desempenho eficiente da solução? Então Um modelo de programação paralela deve especificar a metodologia de eecução e detalhes que influenciam na eecução da aplicação naquela arquitetura Um modelo não deve especificar detalhes de um sistema/máquina específico

Abstraindo para Programar Maior facilidade de programação: o esforço intelectual é reduzido quando nos concentrarmos em "uma coisa de cada vez duas dimensões: dimensão espacial dimensão temporal

Dimensão Espacial A cada momento, conjuntos de tarefas independentes são implementadas cada tarefa ou processador não sabe o que acontecerá "a seguir" detalhamento de informações globais levam a uma programação difícil Dimensão Temporal programas são composições de ações seqüenciais que preenchem o sistema computacional como um todo: pode-se definir com maior conhecimento o que vai acontecer a seguir

Níveis de Paralelismo Dependendo do nível considerado, a eploração do paralelismo é diferente nível de aplicações ou fases de aplicações a nível de tarefas a nível de instruções - a eecução da instrução necessita da busca, análise e eecução propriamente dita dentro dos circuitos aritméticos

Algoritmos Quando queremos resolver um problema computacionalmente, temos que analisar a compleidade deste. No domínio seqüencial, se procura definir um algoritmo que resolva o problema em tempo mínimo. Mas quando se tratando de algoritmos paralelos, mais um parâmetro número de processadores operações independentes devem ser eecutadas em paralelo. qual o tamanho dos processos? noção de granulosidade (granularity) a razão entre o tempo de computação necessário para eecutar uma tarefa e a sobrecarga de comunicação durante essa computação.

Modelos de Computação Modelo de Computação Seqüencial: von Neumann plataforma base para que usuários e projetistas compleidade de tempo do pior caso: tempo máimo que o algoritmo pode levar para eecutar qualquer entrada com n elementos compleidade de tempo esperado: compleidade média critério de custo uniforme: qualquer instrução RAM leva uma unidade de tempo para ser eecutada e também o acesso a registradores

Modelos de Computação Modelo de Computação Paralela O desempenho do programa paralelo depende de certos fatores dependentes da máquina: grau de concorrência; escalonamento e alocação de processadores; comunicação e sincronização.

Modelos de Computação Paralela! Memória Compartilhada Com ou sem uso de threads! Memória Distribuída Troca de mensagens! Paralelismo de Dados! Híbrido

Modelos de Computação Paralela Memória Compartilhada sem uso de threads Processos podem a vir compartilhar espaço de memória Através de semáforos para não ocorrer deadlock Uma vantagem deste modelo: todos os processos podem acessar igualmente os dados compartilhados. Não há necessidade de eplicitar a troca de dados entre processos (como em memória distribuída) Uma desvantagem desse modelo: o gerenciamento da localidade de dados: ou seja, trazer dados para a cache para economizar acesso a memória principal

Modelos de Computação Paralela Threads Utilização de múltiplos "light weight Por eemplo, podemos pensar que dependendo do problema, uma sub-rotina possa ser definida como uma thread Comunicação entre threads realizada por memória compartilhada Sincronização entre as threads necessárias se duas ou mais threads estão atualizando o mesmo endereço de memória

Modelos de Computação Paralela Memória Distribuída (troca de mensagens) Cada tarefa tem sua memória local Pode haver uma ou mais tarefas por processador e em vários processadores A troca de informações é realizada através de mensagens Para tal, geralmente é utilizada uma biblioteca de troca de mensagens Eemplo: Message Passing Interface (MPI) library Se tornou padrão entre aplicações industriais e acadêmicas de fato MPI-1 em 1994 MPI-2 em 1996 MPI-3 in 2012

Modelos de Computação Paralela Modelo de Paralelismo de Dados Paralelismo é realizado em uma estrutura global comum Um conjunto de tarefas trabalha em conjunto nesta estrutura A mesma operação sobre elementos diferentes Pode ser implementado em memória compartilhada ou memória distribuída Compartilhada estrutura na memória global Distribuída estrutura dividida entre as diferentes memórias.

Modelo PRAM Mas como pensar em paralelo? Abstrair de formas de como implementar... O que tínhamos com computação sequencial? Memória CPU

Modelo PRAM Mas como pensar em paralelo? Abstrair de formas de como implementar... Como podemos pensar em paralelo? Memória Memória CPU CPU CPU CPU

Modelo PRAM modelo ideal conjunto de p processadores operando sincronamente sob o controle de um único relógio, compartilhando um espaço global de memória algoritmos desenvolvidos para este modelo geralmente são do tipo SIMD todos os processadores eecutam o mesmo conjunto de instruções, e ainda a cada unidade de tempo, todos os processadores estão eecutando a mesma instrução mas usando dados diferentes.

Modelo PRAM modelo ideal propriedades chaves: eecução síncrona sem nenhum custo adicional para a sincronização comunicação realizada em uma unidade de tempo, qualquer que seja a célula de memória acessada comunicação é feita usando a memória global

Passo do algoritmo PRAM fase de leitura: os processadores acessam simultaneamente locais de memória para leitura. Cada processador acessa no máimo uma posição de memória e armazena o dado lido em sua memória local fase de computação: os processadores eecutam operações aritméticas básicas com seus dados locais fase de gravação: os processadores acessam simultaneamente locais de memória global para escrita. Cada processador acessa no máimo uma posição de memória e grava um certo dado que está armazenado localmente

Modelo PRAM análise e estudo de algoritmos paralelos definição de paradigma de programação paralela avaliação do desempenho desses algoritmos independentemente das máquinas paralelas se o desempenho de um algoritmo paralelo para o modelo PRAM não é satisfatório, então não tem sentido implementá-lo em qualquer que seja a máquina paralela se eficiente, no entanto, podemos simulá-lo em uma máquina real : simulação deve ser eficiente

Padrões de Acesso no Modelo PRAM Eclusive Read (ER): vários processadores não podem ler ao mesmo tempo no mesmo local Eclusive Write (EW): vários processadores não pode escrever no mesmo local de memória Concurrent Read (CR): vários processadores podem ler ao mesmo tempo o mesmo local de memória Concurrent Write (CW): vários processadores podem escrever no mesmo local de memória ao mesmo tempo Combinações são usadas para formar as variantes do PRAM: EREW, CREW, ERCW e CRCW

Prioridades do CRCW Para resolver conflitos no caso de vários processadores tentarem escrever ao mesmo tempo no mesmo local de memória global: Comum - vários processadores concorrem a escrita no mesmo local de memória global durante o mesmo instante de relógio - todos devem escrever o mesmo valor; Arbitrário - dentre os vários processadores, um é selecionado arbitrariamente e seu valor armazenado no local de memória disputado; Prioridade - dentre os vários processadores, aquele com o menor índice é escolhido para escrever o seu valor no local concorrido.

Memória Global P 1 P 2 P 3 P 4 P n

Comunicação em uma máquina PRAM Comunicação através da memória global: Pi quer passar para Pj Pi escreve em um local de memória global em um determinado passo Pj pode acessar o dado naquele local no próimo passo

Memória compartilhada P 1 P 2 P 3 P n d1 d 1 Passo 1: cada processador realiza sua computação

Memória compartilhada d 1 P 1 P 2 P 3 P n d1 d 1 Passo 1: P 1 escreve na memória

Memória compartilhada d 1 P 1 P 2 P 3 P n d1 d 1 d 1 Passo 2: P 2 lê da memória

Observações os processadores operam sincronamente: a cada passo, todas os processadores eecutam a mesma instrução sobre dados distintos uma instrução pode ser simplesmente uma operação aritmética ou uma comparação de dois números processadores ativos: somente um subconjunto de processadores eecutem uma instrução e processadores restantes ficam ociosos/inativos

Eemplo V vetor com n elementos. um dado valor Problema: V? Ambiente: P processadores tipo EREW PRAM Analisando o problema: todos os processadores tem que saber o valor de não podem acessar a célula de simultaneamente depois, cada processador tem que olhar os elementos de V sinalização da localização do valor no vetor V

Solução todos os processadores devem saber sobre : broadcasting ou difusão Pior caso deste procedimento log 2 P passos P1 acessa a memória global: P2 comunica com P1 ou seja, de alguma forma, P1 informa para P2 P1 e P2 informam para P3 e P4 assim por diante processadores não têm permissão de acesso simultâneo gravam em lugares distintos: M i é um dos P locais de memória global Um vetor M auiliar é utilizado

Memória compartilhada M 1 M 2 M 3 M 4 M 5 M 6 M 7 M 8 P 1 P 2 P 3 P 4 P 5 P 6 P 7 P 8

Memória compartilhada M 1 M 2 M 3 M 4 M 5 M 6 M 7 M 8 P 1 P 2 P 3 P 4 P 5 P 6 P 7 P 8 PASSO 1 (inicialização)

Memória compartilhada M 1 M 2 M 3 M 4 M 5 M 6 M 7 M 8 P 1 P 2 P 3 P 4 P 5 P 6 P 7 P 8 PASSO 1 (inicialização)

Memória compartilhada M 1 M 2 M 3 M 4 M 5 M 6 M 7 M 8 P 1 P 2 P 3 P 4 P 5 P 6 P 7 P 8 PASSO 2

Memória compartilhada M 1 M 2 M 3 M 4 M 5 M 6 M 7 M 8 P 1 P 2 P 3 P 4 P 5 P 6 P 7 P 8 PASSO 2

Memória compartilhada M 1 M 2 M 3 M 4 M 5 M 6 M 7 M 8 P 1 P 2 P 3 P 4 P 5 P 6 P 7 P 8 PASSO 3

Memória compartilhada M 1 M 2 M 3 M 4 M 5 M 6 M 7 M 8 P 1 P 2 P 3 P 4 P 5 P 6 P 7 P 8 PASSO 3

Memória compartilhada M 1 M 2 M 3 M 4 M 5 M 6 M 7 M 8 P 1 P 2 P 3 P 4 P 5 P 6 P 7 P 8 PASSO 4

Memória compartilhada M 1 M 2 M 3 M 4 M 5 M 6 M 7 M 8 P 1 P 2 P 3 P 4 P 5 P 6 P 7 P 8 PASSO 4

Solução do broadcasting (leitura) P 1 lê P 1 escreve em M 1 P 2 lê M 1 P 2 escreve em M 2 P 3 e P 4 lêem M 1 e M 2 P 3 e P 4 escrevem em M 3 e M 4 P 5, P 6, P 7 e P 8 lêem M 1, M 2, M 3 e M 4 P 5, P 6, P 7 e P 8 escrevem M 5, M 6, M 7 e M 8 e assim por diante a cada passo: duas vezes o número de processadores ativos do passo anterior podem ler e escrever log P passos

broadcasting P 1 lê de ; P 1 escreve em M[1]; Para h:= 1 até log P faça { se 2 h-1 < i 2 h então { P i lê de M[i - 2 h-1 ]; P i escreve em M[i]; } }

A Procura o vetor V é divido em P pedaços: S1, S2,, SP Pi procura por em Si pior caso: n/p passos Total: log P + n/p passos, no pior caso Como o algoritmo poderia ser melhorado?? Definição de uma variável Achou Com computador mais poderoso algoritmo mais rápido.

PRAM mais poderoso: CREW PRAM para achar, o algoritmo eecuta n/p passos leituras concorrentes são permitidas todos os processadores podem acessar em um passo todos os processadores podem consultar Achou em um passo mas ao encontrar, o processador tem que atualizar Achou Quantos passos nas seguintes situações? somente um dos elementos tem valor pode ser um valor repetido em V mais de um processador pode atualizar Achou simultaneamente.