Sistemas Distribuídos e Paralelos

Documentos relacionados
OpenMP. Slides baseados em tutorial de Tim Mattson da Intel

Introdução OpenMP. Nielsen Castelo Damasceno

OpenMP: Variáveis de Ambiente

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

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

Introdução ao OpenMP

Construtores de Sicronização em OpenMP

Bibliografia. OpenMP. Disponibilidade de OpenMP. Abordagem SPMD. Nicolas Maillard

Paralelismo em Computadores com Tecnologia Multicore

OpenMP: Variáveis de Ambiente

Programação em Paralelo OpenMP

OpenMP. Adaptado do Material do Calebe de Paula Bianchini

Agenda. O que é OpenMP? Regiões Paralelas Construtores para Compartilhamento de

for(int x=0; x < width; x++) { for(int y=0; y < height; y++) { finalimage[x][y]=renderpixel(x,y, &scenedata); } }

Introdução à OpenMP (Dia 1) Prof. Guido Araujo

Variáveis em OpenMP. Esbel Tomás Valero Orellana

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

OpenMP: Uma Introdução

Processos Concorrentes

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017. ALUNO Prof. Bosco

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017 ALUNO

UM ESTUDO COMPARATIVO DE DESEMPENHO UTILIZANDO PROGRAMAÇÃO SEQUENCIAL VS PARALELA APLICADO EM ALGORITMOS GENÉTICOS 1

Introdução ao OpenMP

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 03/07/2017 ALUNO

Ferramentas para Programação em Processadores Multi-Core

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

INE5645 PROGRAMAÇAO PARALELA E DISTRIBUÍDA PROVA 1 18/09/2017 ALUNO: Prof. Bosco

Matheus S. Serpa, Vinícius G. Pinto, Philippe O. A. Navaux Contato: INTEL MODERN CODE PARTNER

Introdução à programação paralela em Fortran usando OpenMP e MPI

Threads. Nuno Ferreira Neves Faculdade de Ciências de Universidade de Lisboa. Fernando Ramos, Nuno Neves, Sistemas Operativos,

ÍNDICE PARTE I INTRODUÇÃO... 6

Paralela e Distribuída. com o MPI e o OpenMP

Programação em Memória Compartilhada com OpenMP

Programação Concorrente e Paralela

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 03/07/2017 ALUNO

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

Paralela e Distribuída. Memórias Cache e Arquitecturas Multi-Processador

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017 ALUNO

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

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

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 07: PROGRAMANDO COM THREADS EM LINGUAGEM C

Memórias Cache em Arquiteturas Multiprocessador e Multicore

Fundamentos de Sistemas Operacionais

CAP-387(2016) Tópicos Especiais em

Monografia. Análise Comparativa de Desempenho de um algoritmo Paralelo implementado nas Linguagens de Programação CPAR e OpenMP

OpenMP. Aleardo Manacero Jr.

Jorge Barbosa, FEUP-DEI 2008

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

Para saber se o pacote está disponível nos repositórios, abra um terminal e digite (use o comando abaixo):

OpenMP. Slides baseados em tutorial de Tim Mattson da Intel

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

Intel Thread Building Blocks (TBB)

Ruby e JRuby em... Paralelos e Distribuídos. Felipe Barden Lucas Fialho Zawacki

AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES

Concorrência em Processos

ANÁLISE DE DESEMPENHO COM A PARALELIZAÇÃO DO CÁLCULO DE NÚMEROS PERFEITOS 1

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

Programação Concorrente e Paralela. Noemi Rodriguez

Sistemas Operacionais

The Excitement in Parallel Computing

Paradigmas de Computação Paralela (UCE Computação Paralela Distribuída)

Bibliografia em processamento paralelo

Threads. MCTA Sistemas Operacionais. Emilio Francesquini 2019.Q1

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

Paradigmas de Computação Paralela

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

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

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

SSC510 Arquitetura de Computadores. 6ª aula

SSC0611 Arquitetura de Computadores

Definindo melhor alguns conceitos

SSC 0742 PROGRAMAÇÃO CONCORRENTE. Aula 08 Ferramentas de Apoio ao Desenvolvimento de Aplicações Concorrentes OpenMP Prof.

Chapter 4: Threads. Operating System Concepts 8th Edition

Sistemas de Informação. Sistemas Operacionais

Linguagem de Programação II

Sistemas Distribuídos

Introdução à Programação Paralela com OpenMP: Além das Diretivas de Compilação

Organização de Computadores II. Arquiteturas MIMD


PROGRAMAÇÃO. Programação paralela com o OpenMP Em paralelo

Sistemas Operacionais

Classes e Objetos. Sintaxe de classe em Java

Linguagens de Programação 10 Avaliação de Linguagens

Modelo de Programação Paralela

Modelos para Concorrência

Linguagem de Programação III

Linguagem Chapel. Walter Perez Urcia. Universidade de São Paulo Instituto de Matemática e Estadística Departamento de Ciências da Computação

Sistemas Operacionais

Programação Paralela e Distribuída - OpenMP

Na Aula Anterior... O Conceito de Threads

Programação Concorrente e Paralela. Noemi Rodriguez

Uma proposta de implementação de árvores rubro-negras em Haskell de forma concorrente

Introdução ao OpenMP

INE 5645 Programação Paralela e Distribuída. Prof. João Bosco M. Sobral INE-UFSC

Sistemas Distribuídos Aula 3

PROGRAMAÇÃO I. Introdução

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

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

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

Transcrição:

Sistemas Distribuídos e Paralelos Aula #6: Programação paralela em sistemas de memória compartilhada. ISUTIC - 2016 Eng. Alexander Rodríguez Bonet

Aula de hoje Regiões paralelas. Cláusulas de âmbito. Partilha de tarefas. Tarefas: OpenMP 3.0. Outras ferramentas.

Objectivo Caracterizar as técnicas e ferramentas de programação paralela em memória compartilhada.

Introdução SSDDPP Todos os processadores compartilham o mesmo espaço de direções. Comunicação implícita através do acesso a variáveis compartilhadas. Necessários mecanismos de sincronização (semáforos, secções críticas, barreiras...). Atualmente em auge pelas arquiteturas multicores.

Ferramentas de programação paralela em memória compartilhada. Threads nativos (ex. Pthreads) programação de baixo nível (ainda que portável), baseada em chamadas a bibliotecas. OpenMP: API regular para programação em sistemas de memória compartilhada (Fortran, C/C++) programação de alto nível (diretoras no código sequencial). Portabilidade. Threading Building Blocks: Biblioteca para a programação paralela em memória compartilhada (C/C++). Permite a criação de programas paralelos mediante a combinação de pequenos componentes paralelos. Trabalha com o conceito de Tarefa em lugar

Ferramentas de programação paralela em memória compartilhada. Parallel Pattern Library (PPL): Biblioteca de programação paralela em.net. Baseada em extensões da linguagem Visual C. Programação baseia em padrões de implementação paralela. Trabalha com o conceito de Tarefa em lugar de Fios. Pacote java.util.concurrent de JAVA 7: Conjunto de primitivas de programação concorrente. Introduz conceitos como executor que permite a execução (planejamento) concorrente e transparente de tarefas. Introduz as tarefas de tipo Fork/Join para a implementação de algoritmos concorrentes de tipo Divide e Vencerás.

Características que devem ter estas ferramentas: Um mecanismo de identificação dos threads. Um método para declarar as variáveis como privadas (private) ou compartilhadas (shared). Um mecanismo para poder definir regiões paralelas, bem seja a nível de função ou a nível de iteração de bucle. Facilidades para sincronizar os threads.

OpenMP SSDDPP Um API usado para programação multithreding direto explícito e paralelismo de memória compartilhada. Consta de três componentes API principais: Diretoras do compilador, Rotinas de livraria de tempo de execução e Variáveis de meio. Portável: O API está especificado para C/C e Fortran. Implementou-se em múltiplas plataformas incluindo a maioria de Unix e Windows. Padronizado: Definido em acordo e usado por várias grandes empresas de SW/HW. Espera-se que se converta num regular ANSI.

OpenMP Simples e ligeiro: Estabelece um conjunto de diretoras simples e limitado para programar máquinas de memória compartilhada. Com tão só 3 ou 4 diretoras pode-se implementar um paralelismo significativo. Facilidade de uso. Proporciona capacidade para paralelizar incrementalmente um programa série, ao invés que as bibliotecas de passagem de mensagens, que requerem uma aproximação todo-ou-nada.

Qué não é OpenMP? Não está destinado a programas paralelos em memória distribuída (por si mesmo). Não está necessariamente implementado identicamente por todas as empresas. Não garante o uso mais eficiente da memória compartilhada (na actualidade não há construtores de localidade de dados).

Modelo Fork-Join Realiza um paralelismo explícito, não automático, baseado em fios que oferece ao programador o controle total da paralelización. Usa o modelo de execução paralela Fork-Join. Todos os programas OpenMP começam como um único fio: o fio mestre. O fio mestre executa-se sequencialmente até que se encontre a primeira construção de região paralela.

Modelo Fork-Join FORK: O fio mestre cria uma "equipa" de fios paralelos. As sentenças do programa que estão encerradas numa construção de região paralela se executam então entre vários fios da equipa. JOIN: Quando os fios da equipa completam as sentenças da construção de região paralela, se sincronizam e terminam deixando só ao fio mestre.

Modelo Fork-Join SSDDPP

Diretivas de OpenMP Sintaxe: #pragma omp nombre-directiva [cláusula,...] Pode ter uma, nenhuma ou várias cláusulas. A cada diretiva aplica-se a no máximo uma sentença seguinte, que deve ser um bloco estruturado. São sensíveis a maiúsculas. Só um nome de diretora se pode especificar por diretiva.

Criação de uma região paralela: Uma região paralela é um bloco de código que executarão vários fios. É a construção fundamental de OpenMP. Sintaxe: #pragma omp parallel [cláusula,...] /* structured block*/ Os programas OpenMP executam-se sequencialmente até encontrar a diretiva parallel. Cria-se um grupo de fios cujo número pode ser especificado na diretora. A cada fio criado executa as instruções especificadas em structured block.

Cláusulas: Paralelização condicional: A cláusula if (scalar expression) determina se na região paralela criam-se os fios ou não. Grau de concorrência: A cláusula num_threads(integer expression) especifica o número de fios que serão criados pela diretiva parallel.

Tarefa SSDDPP Pesquisar a utilidade das cláusulas para o manejo de dados: private (variable list) firstprivate (variable list) shared (variable list) default (state) reduction (operator: variable list) Pesquisar a utilidade das diretivas: For barrier Master ordered sections Single Critical

Sistemas Distribuídos e Paralelos Aula #6: Programação paralela em sistemas de memória compartilhada. ISUTIC - 2016 Eng. Alexander Rodríguez Bonet