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

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

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

Sistemas Distribuídos e Paralelos

OpenMP: Variáveis de Ambiente

AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES

Introdução OpenMP. Nielsen Castelo Damasceno

Sistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional

Sistemas Operacionais. Prof. Fabio Augusto Oliveira

Programação Paralela e Distribuída

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

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

Sistemas de Informação. Sistemas Operacionais

Programação Concorrente

COMPARAÇÃO DE DESEMPENHO ENTRE IMPLEMENTAÇÕES DO ALGORITMO JOGO DA VIDA COM PTHREAD E OPEMMP 1

Aluno de Pós-Graduação em Engenharia de Software para Dispositivos Móveis pela UNINTER

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

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

SSC510 Arquitetura de Computadores. 6ª aula

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

Paralelismo em Computadores com Tecnologia Multicore

AULA 01: APRESENTAÇÃO

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

Ferramentas para Programação em Processadores Multi-Core

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

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

Processos Concorrentes

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

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

Computadores e Programação (DCC/UFRJ)

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

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

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

Introdução a Sistemas Operacionais. Adão de Melo Neto

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

Estrutura dos Sistemas Operacionais. Adão de Melo Neto

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

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 12: MEMÓRIA CACHE: FUNÇÃO DE MAPEAMENTO (PARTE 1)

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

Sistemas Distribuídos

Organização e Arquitetura de Computadores I

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 02: INTRODUÇÃO

Estrutura do Sistema Operacional

Arquitetura de Computadores. Processamento Paralelo

Apresentação. Ementa da Disciplina. Objetivo da Disciplina. DCA-108 Sistemas Operacionais. Referências Bibliográfica. Referências Bibliográfica

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

Técnicas de Processamento Paralelo na Geração do Fractal de Mandelbrot

Multiprogramação leve em arquiteturas multi-core

Processos e Threads. Ciclo 2 AT3. Prof. Hermes Senger

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

Fundamentos de Sistemas Operacionais

Sistemas Operacionais

Estilos Arquiteturais

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

AULA Nº 08 SISTEMAS OPERACIONAIS. Threads

Sistemas Distribuídos

Arranjo de Processadores

Roteiro... Sistemas Distribuídos Aula 4. Troca de mensagens. Comunicação entre processos. Conceitos de SD, vantagens e desvantagens

Estrutura dos Sistemas Operacionais. Adão de Melo Neto

Sistemas Operacionais. Processos e Threads

Introdução à Informática

Sistemas Distribuídos

Programação Concorrente e Paralela

Computação Paralela (CUDA)

Paralelismo de dados. (execução de simultaneidade) Tipo de arquitetura paralela SIMD. SIMD (Single Instruction Multiple Data)

Sistemas Distribuídos

Organização de Computadores II. Arquiteturas MIMD

Programação Concorrente e Paralela. Noemi Rodriguez

Introdução aos Conceitos de Computação Paralela através da estimativa de Pi

Sistemas Distribuídos

SISTEMAS OPERACIONAIS

Transcrição:

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação

PROGRAMAÇÃO PARALELA Há vários modelos de programação paralela em uso atualmente: Memória compartilhada Threads Passagem de mensagens Dados paralelos Híbridos Modelos de programação paralela existem como uma abstração acima da arquitetura de hardware e de memória.

PROGRAMAÇÃO PARALELA Apesar de não ser evidente, os modelos não são específicos para um determinado tipo de arquitetura. Pode ser implementado em qualquer hardware Não existe o melhor modelo. No entanto há melhores implementações de alguns modelos sobre outros. Qual modelo utilizar?

MODELO DE MEMÓRIA COMPARTILHADA

MODELO DE MEMÓRIA COMPARTILHADA As tarefas compartilham um espaço de endereço comum. As leituras e escritas podem ser simultaneamente. Geralmente são utilizados mecanismos do tipo semáforos para controlar o acesso à memória compartilhada. Uma vantagem para o programador. Não existe a necessidade de comunicação explicita de dados entre as tarefas. Dificuldade de entender e gerenciar a localidade dos dados.

MODELO DE MEMÓRIA COMPARTILHADA Precisam manter os dados locais no processador. Para minimizar os acessos à memória que ocorrem quando múltiplos processadores utilizam o mesmo dado. Os SMPs (multicore) representam uma implementação comum de uma arquitetura de memória compartilhada.

MODELO DE THREADS

MODELO DE THREADS No modelo de threads, cada processo (tarefa) pode ter múltiplos caminhos de execução concorrente. O programa principal é escalonado para ser executado pelo SO. O programa principal é executado sequencialmente, mas cria tarefas (threads) que podem ser escalonadas e executadas simultaneamente pelo SO. Cada thread tem dados locais e compartilha recursos como o programa principal. Isso diminui o overhead associado com a replicação dos recursos entre vários processos. Cada thread tem uma visão global de memória, para compartilhar o espaço de memória com o programa principal.

MODELO DE THREADS As threads se comunicam umas com as outras por meio da memória global. Isso requer sincronização para garantir a consistência dos dados durante a execução das threads. As threads podem ser criadas ou destruídas, mas o programa principal continua ativo. Para fornecer os recursos compartilhados necessários até que a tarefas seja concluídas

MODELO DE THREADS Threads são comumente associadas com arquiteturas de memória compartilhada e sistemas operacionais. Uma biblioteca de sub-rotinas que são chamadas a partir do código fonte paralelo Um conjunto de diretivas de compilador no código paralelo ou serial. O programador é responsável por determinar todo o paralelismo

MODELO DE THREADS OpenMP Padrão definido e apoiado pelos maiores fabricantes de hardware e software do mundo. API OpenMP Fortan (28/10/1957) API OpenMP C/C++ (Final de 1998) Portável e multiplataforma (Unix e Windows) É fácil e simples de usar A Microsoft tem sua própria implementação de threads Não relacionada com o padrão Unix POSIX ou OpenMP

MODELO DE THREADS Posix Threads Especificado pelo padrão IEEE POSIX 1003.1c (1995) Somente linguagem C Conhecido como Pthreads A maioria dos fabricantes de hardware já fornecem pthreads Paralelismo explícito Reque muita atenção do programador para detalhes de codificação

MODELO DE PASSAGEM DE MENSAGENS

MODELO DE PASSAGEM DE MENSAGENS Conjunto de tarefas que utilizam a memória local durante a computação. Várias tarefas podem residir na mesma máquina. As tarefas trocam dados através de comunicação, enviando e recebendo mensagens A transferência de dados em geral requer operações de cooperação a serem executadas por cada processo Operação de envio deve ter uma operação de recepção correspondente.

MODELO DE PASSAGEM DE MENSAGENS O programador é responável por determinar todo o paralelismo. Várias bibliotecas disponíveis desde a década de 1980 Muitas diferenças. Dificuldade de desenvolver aplicações portáveis MPI Padrão da indústria para ambientes de passagem de mensagens.

MODELO DE PASSAGEM DE MENSAGENS

MODELO DE PASSAGEM DE MENSAGENS Para arquitetura de memória compartilhada, as implementações do MPI geralmente não utilizam redes para a comunicação entre as tarefas. Ao invés disso é utilizada a memória compartilhada (cópia de memória ) por razões de desempenho.

MODELO DE PARALELO DE DADOS

MODELO PARALELO DE DADOS A maioria das tarefas paralelas envolve a execução de operações em um conjunto de dados. Os dados são geralmente organizados em uma estrutura, como uma matriz ou um cubo. Um conjunto de tarefas trabalham coletivamente na mesma estrutura de dados. No entanto, cada tarefa opera em uma partição diferente da mesma estrutura de dados.

MODELO PARALELO DE DADOS Tarefas executam a mesma operação em sua partição de trabalho. Adicionar valores a cada elemento de um array Em arquiteturas de memória compartilhada, todas as tarefas podem ter acesso à estrutura de dados armazenada na memória global. Em arquitetura de memória distribuída, a estrutura de dados é dividida e distribuída na memória local de cada processador.

MODELO PARALELO DE DADOS

MODELO PARALELO DE DADOS IMPLEMENTAÇÃO Escreve-se um programa definindo a organização paralela dos dados A organização pode ser definida por uma biblioteca de dados paralelos, ou por diretivas do compilador.

OUTROS MODELOS

OUTROS MODELOS Além dos modelos já mencionados há outros modelos de programação paralela. Três dos mais comuns são descritos: Híbrido SPMD MPMD

OUTROS MODELOS HÍBRIDO Combinação de dois ou mais modelos de programação paralela Combinação do modelo de passagem de mensagens (MPI) com o modelo de threads (POSIX Threads) ou o modelo de memória compartilhada (OpenMP) Combinação de dados paralelos com passagem de mensagens em arquitetura de memória distribuída (utiliza-se passagem de mensagens para transmitir dados entre as tarefas, de forma transparente para o programador).

OUTROS MODELOS SINGLE PROGRAM MULTIPLE DATA (SPMD) Modelo de programação de alto nível que pode ser construído a partir da combinação dos modelos de programação paralela previamente mencionados. O processamento é colaborativo entre todas as máquinas. O código executado em todas é o mesmo (single program) Os dados (multiple data) são trocados de modo coordenado entre os processos

OUTROS MODELOS SINGLE PROGRAM MULTIPLE DATA (SPMD) Programsa SPMD geralmente possuem a lógica necessária em seu programa para permitir que diferentes tarefas se ramifiquem ou condicionalmente executem apenas as partes do programa que se destinam a executar. Todas as tarefas podem utilizar diferentes dados.

OUTROS MODELOS MULTIPLE PROGRAM MULTIPLE DATA (MPMD) Modelo de programação de alto nível que pode ser construído a partir da comunicação dos modelos de programação paralela. Um único processo chamado mestre controla todas as tarefas que serão dadas para os outros processos. Todos podem executar o mesmo programa ou diferentes programas.