Análise e desenho de algoritmos Paralelos Implementação em Java

Tamanho: px
Começar a partir da página:

Download "Análise e desenho de algoritmos Paralelos Implementação em Java"

Transcrição

1 ISUTIC 207 Análise e desenho de algoritmos Paralelos Implementação em Java Docente: MSc. Angel Alberto Vazquez Sánchez

2 Sumario Desenho metodológico Particionamento Comunicação Aglomeração Mapeamento

3 Bibliografía I. Foster, Designing and Building Parallel Programs: Concepts and Tools for Parallel Software Engineering, st ed. Addison Wesley, 995.

4 Desenho metodológico A maioria dos problemas de programação tem várias soluções paralelas. A melhor solução pode ser diferente da sugerida pelos algoritmos seqüenciais existentes. A metodologia de projeto destina-se a promover uma abordagem exploratória do design em que problemas independentes da máquina, como a concorrência, são considerados antecipadamente e os aspectos específicos da máquina do projeto são atrasados até o final do processo de design.

5 Desenho metodológico Particionamento. A computação que deve ser realizada e os dados operados por este cálculo são decompostos em pequenas tarefas. Problemas práticos como o número de processadores no computador alvo são ignorados e a atenção é focada no reconhecimento de oportunidades de execução paralela. Comunicação. A comunicação necessária para coordenar a execução da tarefa é determinada e as estruturas e algoritmos de comunicação apropriados são definidos.

6 Desenho metodológico Aglomeração. A tarefa e as estruturas de comunicação definidas nas duas primeiras etapas de um projeto são avaliadas em relação aos requisitos de desempenho e custos de implementação. Se necessário, as tarefas são combinadas em tarefas maiores para melhorar o desempenho ou para reduzir os custos de desenvolvimento. Mapeamento. Cada tarefa é atribuída a um processador de forma a tentar satisfazer os objetivos concorrentes de maximizar a utilização do processador e minimizar os custos de comunicação. O mapeamento pode ser especificado de forma estática ou determinado em tempo de execução por algoritmos de balanceamento de carga.

7 Desenho metodológico

8 Desenho metodológico Particionamento Decomposição de tarefa / dados Comunicação Coordenação da execução da tarefa Aglomeração Avaliação da estrutura Mapeamento Atribuição de recursos

9 Particionamento O estágio de particionamento destina-se a expor oportunidades para a execução paralela Concentre-se na definição de um grande número de pequenas tarefas para produzir uma decomposição fina do problema Uma boa partição divide em pequenas peças as tarefas computacionais associadas a um problema e os dados nos quais as tarefas funcionam.

10 Particionamento A decomposição de domínio se concentra em dados de computação A decomposição funcional concentra-se em tarefas de computação A mistura de domínio / decomposição funcional é possível

11 Domínio e Descomposição Funcional Decomposição de domínio da rede 2D / 3D Descomposição funcional de um modelo climático

12 Lista de verificação de particionamento A sua partição definir pelo menos uma ordem de magnitude mais tarefas do que há processadores no computador de destino? Caso contrário, pode perder flexibilidade de design Sua partição evita a computação redundante e os requisitos de armazenamento? Caso contrário, pode não ser escalável. São tarefas de tamanho comparável? Caso contrário, pode ser difícil alocar cada processador quantidades iguais de trabalho.

13 Lista de verificação de particionamento O número de tarefas escala com o tamanho do problema? Caso contrário, talvez não consiga resolver problemas maiores com mais processadores Você identificou várias partições alternativas?

14 Comunicação (Interação) As tarefas geradas por uma partição devem interagir para permitir que a computação prossiga Fluxo de informações: dados e controle Tipos de comunicação Local vs. Global: localidade de comunicação Estruturado vs. Não estruturado: padrões de comunicação Estático vs. Dinâmico: determinado por condições de tempo de execução Síncrono versus assíncrono: grau de coordenação

15 Comunicação (Interação) Granularidade e frequência de comunicação Tamanho da troca de dados Pense na comunicação como interação e controle Aplicável ao paralelismo de memória compartilhado e distribuído

16 Tipos de Comunicação Ponto a ponto Baseado em grupo Hierárquico Coletivo

17 Lista de verificação de desenho de comunicação A distribuição das comunicações é igual? Comunicação não balanceada pode limitar a escalabilidade Qual é a localidade de comunicação? Os locais de comunicação mais amplos são mais caros Qual é o grau de concorrência de comunicação? As operações de comunicação podem ser paralelizadas

18 Lista de verificação de desenho de comunicação A computação está associada a diferentes tarefas capazes de prosseguir simultaneamente? A comunicação pode ser sobreposta com a computação? Tente reordenar computação e comunicação para expor oportunidades de paralelismo

19 Aglomeração Mude de abstrações paralelas para implementação real Revisar partição e comunicação Ver a execução eficiente do algoritmo É útil aglomerar? O que acontece quando as tarefas são combinadas? É útil replicar dados e / ou computação?

20 Aglomeração Muda o algoritmo e os índices de desempenho importantes Surface-to-volume: redução na comunicação à custa de paralelismo decrescente Comunicação / computação: qual custo domina A replicação pode permitir uma redução na comunicação Manter a flexibilidade para permitir a sobreposição

21 Tipos de aglomeração Elemento para coluna Elemento para bloco Melhor superfície ao volume Fusão de tarefas Redução de tarefas Reduz a comunicação

22 Lista de verificação de desenho de aglomeração O aumento da localidade reduziu os custos de comunicação? A computação replicada vale a pena? A replicação de dados compromete a escalabilidade? A computação ainda está equilibrada? A escalabilidade no tamanho do problema ainda é possível? Existe ainda uma concorrência suficiente? Existe espaço para mais aglomeração? Grão fino vs. grosseiro?

23 Mapeamento Especifique onde cada tarefa deve ser executada Menos preocupante em sistemas de memória compartilhada Tentativa de minimizar o tempo de execução Coloque tarefas simultâneas em diferentes processadores para aumentar a concorrência física Coloque as tarefas de comunicação no mesmo processador, ou em processadores próximos uns dos outros, para aumentar a localidade Estratégias podem entrar em conflito! O problema de mapeamento é NP-complete Usar classificações de problemas e heurísticas Balanceamento de carga estático e dinâmico

24 Algoritmos de mapeamento Algoritmos de balanceamento de carga (particionamento) Algoritmos baseados em dados Pense na carga computacional em relação à quantidade de dados em operação Atribuir dados (isto é, trabalhar) de alguma forma conhecida para equilibrar Tome em consideração as interações de dados Algoritmos baseados em tarefas (agendamento de tarefas) Usado quando a decomposição funcional produz muitas tarefas com requisitos de local fracos Usar a atribuição de tarefa para manter a computação ocupada dos processadores Considere esquemas centralizados e descentralizados

25 Lista de verificação do desenho do mapeamento O mapeamento estático é muito restritivo e não responsivo? O mapeamento dinâmico é muito caro em geral? O agendamento centralizado leva a engarrafamento? Os esquemas dinâmicos de balanceamento de carga exigem muita coordenação para reequilibrar a carga? Qual é a compensação da complexidade dinâmica de agendamento versus melhoria de desempenho? Existem tarefas suficientes para alcançar altos níveis de concorrência? Caso contrário, os processadores podem estar ociosos.

26 Tipos de Programas Paralelos Sabores de paralelismo Paralelismo de dados: todos os processadores fazem a mesma coisa em dados diferentes Task parallelism: Os processadores recebem tarefas que fazem coisas diferentes Modelos de execução paralela Dados paralelos Pipelining (Produtor-Consumidor) Gráfico da tarefa Pool de trabalho Mestre - Trabalhador

27 Paralelismo em nível de tarefa Qualquer algoritmo pode especificá-lo como uma seqüência de passos. Por exemplo: Suponhamos que temos uma serie de elementos e queremos computar a soma de seus elementos. sum = soma da primeira metade sum2 = soma da segunda metade sum = sum + sum2

28 Criação de Tarefas e Término (Async, Finish) finish async sum = soma da primeira metade sum2 = soma da segunda metade sum = sum + sum2

29 Tarefas no marco de trabalho ForkJoin de Java public class ASum { private double[] array; int lo; int hi; double sum; public ASum(double[] array, int lo, int hi) {...} public void compute() { if(lo == hi) { sum = array[lo]; }else if(lo > hi) { sum = 0; }else { int mid = (hi+lo)/2; ASum l = new ASum(array, lo, mid); ASum r = new ASum(array, mid+, hi); l.compute(); r.compute(); sum = l.sum + r.sum; } } }

30 Tarefas no marco de trabalho ForkJoin de Java public class ASum { private double[] array; int lo; int hi; double sum; public ASum(double[] array, int lo, int hi) {...} public void compute() { if(lo == hi) { sum = array[lo]; }else if(lo > hi) { sum = 0; }else { int mid = (hi+lo)/2; ASum l = new ASum(array, lo, mid); ASum r = new ASum(array, mid+, hi); async l.compute(); r.compute(); sum = l.sum + r.sum; } } }

31 Tarefas no marco de trabalho ForkJoin de Java public class Asum extends RecursiveAction { private double[] array; int lo; int hi; double sum; public ASum(double[] array, int lo, int hi) {...} public void compute() { if(lo == hi) { sum = array[lo]; }else if(lo > hi) { sum = 0; }else { int mid = (hi+lo)/2; ASum l = new ASum(array, lo, mid); ASum r = new ASum(array, mid+, hi); async l.compute(); l.fork() r.compute(); sum = l.sum + r.sum; } } }

32 Tarefas no marco de trabalho ForkJoin de Java public class Asum extends RecursiveAction{ private double[] array; int lo; int hi; double sum; public ASum(double[] array, int lo, int hi) {...} public void compute() { if(lo == hi) { sum = array[lo]; }else if(lo > hi) { sum = 0; }else { int mid = (hi+lo)/2; ASum l = new ASum(array, lo, mid); ASum r = new ASum(array, mid+, hi); l.fork(); finish r.compute(); sum = l.sum + r.sum; } } }

33 Tarefas no marco de trabalho ForkJoin de Java public class ASum extends RecursiveAction{ private double[] array; int lo; int hi; double sum; public ASum(double[] array, int lo, int hi) {...} public void compute() { if(lo == hi) { sum = array[lo]; }else if(lo > hi) { sum = 0; }else { int mid = (hi+lo)/2; ASum l = new ASum(array, lo, mid); ASum r = new ASum(array, mid+, hi); l.fork(); finish r.compute(); l.join(); sum = l.sum + r.sum; } }

34 Tarefas no marco de trabalho ForkJoin de Java public class ASum extends RecursiveAction{ private double[] array; int lo; int hi; double sum; public ASum(double[] array, int lo, int hi) {...} l.fork(); public void compute() { r.compute(); if(lo == hi) { invokeall(l,r); l.join(); sum = array[lo]; }else if(lo > hi) { sum = 0; }else { int mid = (hi+lo)/2; ASum l = new ASum(array, lo, mid); ASum r = new ASum(array, mid+, hi); l.fork(); r.compute(); l.join(); sum = l.sum + r.sum; } }

35 Tarefas no marco de trabalho ForkJoin de Java public class ASum extends RecursiveAction{ private double[] array; int lo; int hi; double sum; public ASum(double[] array, int lo, int hi) {...} public void compute() { if(lo == hi) { sum = array[lo]; }else if(lo > hi) { sum = 0; }else { int mid = (hi+lo)/2; ASum l = new ASum(array, lo, mid); ASum r = new ASum(array, mid+, hi); invokeall(l,r); sum = l.sum + r.sum; } } }

36 Gráficos de Computação Modelam a execução de um programa paralelo como um conjunto parcialmente ordenado Especificamente, um CG consiste em: Um conjunto de vértices ou nós, em que cada nó representa um passo consistente em uma computação seqüencial arbitrária. Um conjunto de bordas direcionadas que representam restrições de pedidos entre etapas.

37 Gráficos de Computação Para os programas fork-join, é útil dividir as arestas em três casos: Arestas "Continue" que capturam a seqüência de passos em uma tarefa Arestas "Fork" que conectam uma operação "fork" ao primeiro passo das tarefas filha Arestas "Join" que conectam o último passo de uma tarefa a todas as operações join nessa tarefa

38 Gráficos de computação Suponha que possamos as seguintes etapas de um algoritmo para executar S finish{ async S2 S3 } S4 S fork S2 S3 join S2 S4 S fork continue S2 S3 join continue S4

39 Gráficos de computação Os CGs também podem ser usados para argumentar sobre o paralelismo ideal de um programa paralelo da seguinte maneira: Define WORK(G) para ser a soma dos tempos de execução de todos os nós no CG G, Defina SPAN (G) para ser a longitude de um caminho mais longo em G, ao somar os tempos de execução de todos os nós no caminho. Os caminhos mais longos são conhecidos como caminhos críticos, então o SPAN também representa a longitude do caminho crítico (CPL) de G.

40 Gráficos de computação Dadas as definições de WORK e SPAN, definimos o paralelismo ideal do Gráfico de Computação G como a relação, WORK(G) / SPAN(G). O paralelismo ideal é um limite superior do fator de aceleração que pode ser obtido a partir da execução paralela de nós no gráfico de computação G.

41 Gráficos de computação 0 S2 fork join S continue S3 continue S4 0 Work = 22 SPAN = 2

42 Agendamento multiprocessador, aceleração paralela S Tp = tempo de execução em p processadores S2 S4 S6 0 P 0 P S Idle S 2 S 4 T 2 =4 S3 S5 S 3 S 5 S7 S 6 S 7 Idle Idle

43 Agendamento multiprocessador, aceleração paralela S Tp = tempo de execução em p processadores S2 S4 S6 0 P 0 P S Idle S 6 S T 2 =2 S3 S5 S 3 S7 S 4 S 5 S 7

44 Agendamento multiprocessador, aceleração paralela S Tp = tempo de execução em p processadores S2 S3 S4 S5 S6 0 T =Work T =SPAN T T p T S7

45 Agendamento multiprocessador, aceleração paralela S Tp = tempo de execução em p processadores T =Work S2 S3 S4 S5 S6 0 T =SPAN T T p T S7 Speedup= T T p

46 Agendamento multiprocessador, aceleração paralela S Tp = tempo de execução em p processadores T =Work S2 S3 S4 S5 S6 0 T =SPAN T T p T S7 Speedup= T T p Speedup p Speedup Work Span = paralelismo ideal

47 Lei de Amdahl Speedup Work Span Span q Work q = fração do código que é sequencial Speedup q Exemplo: q=0.5 Speedup 2

Programação Concorrente e Paralela

Programação Concorrente e Paralela projeto de programas paralelos 2016 PCAM problema particionamento comunicacao aglomeracao mapeamento desenhada para memória distribuída mas muitas idéias em comum Particionamento idéia é expor oportunidades

Leia mais

Arquiteturas Paralelas

Arquiteturas Paralelas ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES Arquiteturas Paralelas Medidas de desempenho Alexandre Amory Edson Moreno Índice 2 1. Introdução 2. Medidas de Desempenho Introdução 3 Aumento de desempenho dos

Leia mais

Algoritmos de ordenação em forma paralela.

Algoritmos de ordenação em forma paralela. ISUTIC 2017 Algoritmos de ordenação em forma paralela. Docente: MSc. Angel Alberto Vazquez Sánchez Bibliografía A. Grama, Introduction to parallel computing. Pearson Education, 2003. I. Foster, Designing

Leia mais

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

Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos Pensando em Paralelo Pensar em paralelo é uma tarefa que exige disciplina

Leia mais

SSC PROGRAMAÇÃO CONCORRENTE

SSC PROGRAMAÇÃO CONCORRENTE SSC- 0143 PROGRAMAÇÃO CONCORRENTE Aula 08 Avaliação de Desempenho de Programas Paralelos Prof. Jó Ueyama Créditos Os slides integrantes deste material foram construídos a par4r dos conteúdos relacionados

Leia mais

Análise e desenho de algoritmos paralelos

Análise e desenho de algoritmos paralelos ISUTIC 2017 Análise e desenho de algoritmos paralelos Docente: MSc. Angel Alberto Vazquez Sánchez Sumario Análise de algoritmos paralelos: Parâmetros absolutos e relativos para avaliar algoritmos paralelos.

Leia mais

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

Paralelismo de dados. (execução de simultaneidade) Tipo de arquitetura paralela SIMD. SIMD (Single Instruction Multiple Data) Paralelismo de dados (execução de simultaneidade) Em métodos tradicionais de programação (processamento sequencial), uma grande quantidade de dados é processada em um único núcleo de uma CPU, enquanto

Leia mais

Paralelismo em Computadores com Tecnologia Multicore

Paralelismo em Computadores com Tecnologia Multicore IFRN - Pau dos Ferros Pau dos Ferros/RN, 25 de fevereiro de 2016 O minicurso Descrição: Para se utilizar os vários núcleos de processamento disponíveis nos computadores atuais de forma eficiente, faz necessário

Leia mais

Arquitetura de Computadores. Processamento Paralelo

Arquitetura de Computadores. Processamento Paralelo Arquitetura de Computadores Processamento Paralelo 1 Multiprogramação e Multiprocessamento Múltiplas organizações de computadores Single instruction, single data stream - SISD Single instruction, multiple

Leia mais

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

Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Filipo Mór Bacharelado em Sistemas de Informação Sistemas Operacionais Prof. Filipo Mór WWW.FILIPOMOR.COM - REVISÃO ARQUITETURAS PARALELAS Evolução das Arquiteturas Evolução das Arquiteturas Entrada CPU Saída von

Leia mais

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

Universidade Federal do Rio de Janeiro Informática DCC/IM. Arquitetura de Computadores II. Arquiteturas MIMD. Arquiteturas MIMD Universidade Federal do Rio de Janeiro Informática DCC/IM Arquitetura de Computadores II Arquiteturas MIMD Arquiteturas MIMD As arquiteturas MIMD dividem-se em dois grandes modelos: Arquiteturas MIMD de

Leia mais

Paradigmas de Computação Paralela

Paradigmas de Computação Paralela Paradigmas de Computação Paralela Modelos e Linguagens de Computação Paralela João Luís Ferreira Sobral jls@... 1 Dezembro 2015 Razões para a computação paralela (cf. Skillicorn & Talia 1998) O mundo é

Leia mais

AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES

AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES Prof. Max Santana Rolemberg Farias [email protected] Colegiado de Engenharia de Computação MULTIPROCESSADORES

Leia mais

Sistemas Distribuídos e Paralelos

Sistemas Distribuídos e Paralelos 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

Leia mais

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

AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS Prof. Max Santana Rolemberg Farias [email protected] Colegiado de Engenharia de Computação PROGRAMAÇÃO PARALELA

Leia mais

Processos Concorrentes

Processos Concorrentes Processos Concorrentes Walter Fetter Lages [email protected] Universidade Federal do Rio Grande do Sul Escola de Engenharia Departamento de Engenharia Elétrica ENG04008 Sistemas de Tempo Real Copyright

Leia mais

Desempenho de computação paralela

Desempenho de computação paralela Desempenho de computação paralela o paralelismo existente na aplicação decomposição do problema em subproblemas menores a alocação destes subproblemas aos processadores o modo de acesso aos dados: a existência

Leia mais

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

SSC PROGRAMAÇÃO CONCORRENTE. Aula 03 Terminologia Geral de Computação Paralela Prof. Jó Ueyama SSC- 0742 PROGRAMAÇÃO CONCORRENTE Aula 03 Terminologia Geral de Computação Paralela Prof. Jó Ueyama Créditos Os slides integrantes deste material foram construídos a par4r dos conteúdos relacionados às

Leia mais

ENTENDENDO O FRAMEWORK FORK/JOIN DE JAVA

ENTENDENDO O FRAMEWORK FORK/JOIN DE JAVA ENTENDENDO O FRAMEWORK FORK/JOIN DE JAVA Como funciona o Java Framework Fork /Join? Paralelismo é a execução simultânea de duas ou mais tarefas. Para nossos propósitos, basta entender que, em alguns problemas,

Leia mais

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas Processamento e Otimização de Consultas Banco de Dados Motivação Consulta pode ter sua resposta computada por uma variedade de métodos (geralmente) Usuário (programador) sugere uma estratégia para achar

Leia mais

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

Memória Compartilhada e Distribuída. _ Notas de Aula _ Prof. Tiago Garcia de Senna Carneiro DECOM/UFOP Introdução Memória Compartilhada e Distribuída _ Notas de Aula _ Prof. Tiago Garcia de Senna Carneiro DECOM/UFOP Um sistema de memória compartilhada faz a memória física global de um sistema igualmente

Leia mais

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

Introdução à Computação: Sistemas de Computação Introdução à Computação: Sistemas de Computação Beatriz F. M. Souza ([email protected]) http://inf.ufes.br/~bfmartins/ Computer Science Department Federal University of Espírito Santo (Ufes), Vitória,

Leia mais

Organização de Computadores II. Arquiteturas MIMD

Organização de Computadores II. Arquiteturas MIMD Organização de Computadores II Arquiteturas MIMD Arquiteturas UMA Arquiteturas com memória única global. Tempo de acesso uniforme para todos os nós de processamento. Nós de processamento e memória interconectados

Leia mais

Programação Concorrente e Paralela. Noemi Rodriguez

Programação Concorrente e Paralela. Noemi Rodriguez 2013 Objetivos princípios e técnicas de programação concorrente multiprocessadores memória compartilhada troca de mensagens obs: diferentes níveis de abstração! que princípios e técnicas são esses? notações

Leia mais

Introdução OpenMP. Nielsen Castelo Damasceno

Introdução OpenMP. Nielsen Castelo Damasceno Introdução OpenMP Nielsen Castelo Damasceno Computação de auto desempenho Processamento Paralelo Memória Distribuída e Compartilhada Modelo de programação OpenMP Métricas de Desempenho Computação de auto

Leia mais

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

Paralelismo de dados. (execução de simultaneidade) Tipo de arquitetura paralela SIMD. SIMD (Single Instruction Multiple Data) Paralelismo de dados (execução de simultaneidade) Em métodos tradicionais de programação (processamento sequencial), uma grande quantidade de dados é processada em um único núcleo de uma CPU, enquanto

Leia mais

Arranjo de Processadores

Arranjo de Processadores Um arranjo síncrono de processadores paralelos é chamado arranjo de processadores, consistindo de múltiplos elementos processadores (EPs) sob a supervisão de uma unidade de controle (UC) Arranjo de processadores

Leia mais

OpenMP: Variáveis de Ambiente

OpenMP: Variáveis de Ambiente Treinamento OpenMP C/C++ 1 TREINAMENTO OpenMP C/C++ Módulo 1 Computação de Alto Desempenho Módulo 2 OpenMP: Construtores Paralelos Módulo 3 OpenMP: Diretivas de sincronização Módulo 4 OpenMP: Funções de

Leia mais

Programação Paralela e Distribuída

Programação Paralela e Distribuída Curso de Informática DCC-IM / UFRJ Programação Paralela e Distribuída Um curso prático Mario J. Júnior Gabriel P. Silva Colaboração: Adriano O. Cruz, Julio S. Aude Ementa Paradigma de Troca de Mensagens

Leia mais

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

Sistema Distribuído. Sistema Distribuído. Aplicações Distribuídas. Conceitos Básicos Sistema Distribuído Conjunto de máquinas (CPU + memória) interligadas em rede. Sistema Distribuído Sistema operacional distribuído trata este conjunto como um único sistema computacional. Estação 1 Estação

Leia mais

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

Aula 6: Comunicação entre processos. Instituto Federal da Bahia INF009 - Sistemas Operacionais Profª Flávia Maristela Aula 6: Comunicação entre processos Instituto Federal da Bahia INF009 - Sistemas Operacionais Profª Flávia Maristela (-- motivação --) Processos em execução no sistema operacional podem ser: Independentes:

Leia mais

Projeto e Análise de Algoritmos NP Completude. Prof. Humberto Brandão

Projeto e Análise de Algoritmos NP Completude. Prof. Humberto Brandão Projeto e Análise de Algoritmos NP Completude Prof. Humberto Brandão [email protected] Universidade Federal de Alfenas versão da aula: 0.4 Introdução Problemas intratáveis ou difíceis são comuns

Leia mais

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 13/11/2017 ALUNO

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 13/11/2017 ALUNO INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 13/11/2017 ALUNO 1. Sockets - Indicar (Verdade/Falso): (2.0) (a) (Verdade/Falso) A comunicação entre processos consiste em transmitir uma mensagem entre

Leia mais

Parte I Multiprocessamento

Parte I Multiprocessamento Sistemas Operacionais I Estrutura dos SO Prof. Gregorio Perez [email protected] 2004 Parte I Multiprocessamento Roteiro 1 Multiprocessadores em Sistemas Fortemente Acoplados 1.1 1.2 1.3 Processamento

Leia mais

SSC510 Arquitetura de Computadores. 6ª aula

SSC510 Arquitetura de Computadores. 6ª aula SSC510 Arquitetura de Computadores 6ª aula PARALELISMO EM NÍVEL DE PROCESSOS PROFA. SARITA MAZZINI BRUSCHI Tipos de Paralelismo Instrução (granulosidade fina) Paralelismo entre as instruções Arquiteturas

Leia mais

Sistemas Operacionais. Tipos de SO

Sistemas Operacionais. Tipos de SO Sistemas Operacionais Tipos de SO Tipos de Sistemas Operacionais Tipos de Sistemas Operacionais Sistemas Monoprogramáveis/ Monotarefas Sistemas Multiprogramáveis/ Multitarefas Sistemas com Múltiplos Processadores

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Unitri Prof: Carlos Eduardo de Carvalho Dantas Conceitos Sistema Distribuído é um conjunto de computadores independentes que se apresenta a seus usuários como um sistema único e coerente.

Leia mais

Características de Sistemas Distribuídos

Características de Sistemas Distribuídos Tópicos O conceito de Características de Carlos Ferraz [email protected] Infra-estrutura básica Exemplos Vantagens e desvantagens Convergência digital Características 2002-2003 Carlos A. G. Ferraz 2 O Conceito

Leia mais

Lista 1 - PMR2300. Fabio G. Cozman 3 de abril de 2013

Lista 1 - PMR2300. Fabio G. Cozman 3 de abril de 2013 Lista 1 - PMR2300 Fabio G. Cozman 3 de abril de 2013 1. Qual String é impressa pelo programa: p u b l i c c l a s s What { p u b l i c s t a t i c void f ( i n t x ) { x = 2 ; p u b l i c s t a t i c void

Leia mais

Programação concorrente (processos e threads)

Programação concorrente (processos e threads) Programação concorrente (processos e threads) Programação concorrente Por que precisamos dela? Para utilizar o processador completamente Paralelismo entre CPU e dispositivos de I/O Para modelar o paralelismo

Leia mais

Modelo do Mundo Real. Abstração. Interpretação

Modelo do Mundo Real. Abstração. Interpretação Modelo do Mundo Real Mundo Real Abstração Interpretação Sistema de Software Modelo Algoritmo Abstração: O modelo precisa capturar apenas as características do mundo real que são importantes para o sistema

Leia mais

Programação em Paralelo OpenMP

Programação em Paralelo OpenMP Programação em Paralelo OpenMP N. Cardoso & P. Bicudo Física Computacional - MEFT 2012/2013 N. Cardoso & P. Bicudo Programação em Paralelo: OpenMP 1 / 15 Introdução Potencial do GPU vs CPU Cálculo: 367

Leia mais

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

Aluno de Pós-Graduação em Engenharia de Software para Dispositivos Móveis pela UNINTER COMPARAÇÃO DE DESEMPENHO NA PROGRAMAÇÃO PARALELA HÍBRIDA (MPI + OPENMP) NA BUSCA DE TEXTO EM ARQUIVOS 1 COMPARISON OF PERFORMANCE IN HYBRID PARALLEL PROGRAMMING (MPI + OPENMP) IN SEARCH OF TEXT IN FILES

Leia mais

Arquitetura e Organização de Computadores

Arquitetura e Organização de Computadores Arquitetura e Organização de Computadores Unidade Central de Processamento (CPU) Givanaldo Rocha de Souza http://docente.ifrn.edu.br/givanaldorocha [email protected] Baseado nos slides do capítulo

Leia mais

Características de Sistemas Distribuídos

Características de Sistemas Distribuídos Características de Sistemas Distribuídos Carlos Ferraz [email protected] 2002-2003 Carlos A. G. Ferraz 2 Tópicos O conceito de Sistemas Distribuídos Infra-estrutura básica Exemplos Vantagens e desvantagens

Leia mais

Faculdade de Computação 3 a Prova de Arquitetura e Organização de Computadores 2 Parte I Prof. Cláudio C. Rodrigues

Faculdade de Computação 3 a Prova de Arquitetura e Organização de Computadores 2 Parte I Prof. Cláudio C. Rodrigues Faculdade de Computação 3 a Prova de Parte I Prof. Cláudio C. Rodrigues Nome: Matrícula: Valor: 15 Nome: Matrícula: Valor: 15 Nome: Matrícula: Valor: 15 Nome: Matrícula: Valor: 15 Problemas: P1. Qual o

Leia mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Aula 4: Programação Concorrente Diego Passos Últimas Aulas Processos Compostos por: Código (programa). Estado (memória, registradores). Em um sistema com multiprogramação:

Leia mais

Complexidade de Tempo e Espaço

Complexidade de Tempo e Espaço Complexidade de Tempo e Espaço Profa. Sheila Morais de Almeida DAINF-UTFPR-PG junho - 2018 Sheila Almeida (DAINF-UTFPR-PG) Complexidade de Tempo e Espaço junho - 2018 1 / 43 Este material é preparado usando

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Classes, Atributos e Métodos Msc. Paulo de Tarso F. Júnior 1 Introdução Programas eram lineares e com poucos módulos: PE Programação Estruturada Aumento da complexidade

Leia mais

Engenharia de Software. Projeto de Software. Projeto: definição. Profa. Dra. Lúcia V. L. Filgueiras Profa. Dra. Selma Shin Shimizu Melnikoff

Engenharia de Software. Projeto de Software. Projeto: definição. Profa. Dra. Lúcia V. L. Filgueiras Profa. Dra. Selma Shin Shimizu Melnikoff Engenharia de Software Profa. Dra. Lúcia V. L. Filgueiras Profa. Dra. Selma Shin Shimizu Melnikoff Projeto de Software Fundamentos de projeto de software Projeto estruturado Índice do documento de projeto

Leia mais

Análise e Complexidade de Algoritmos

Análise e Complexidade de Algoritmos Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Algoritmos Divisão e Conquista Construção incremental Resolver o problema para um sub-conjunto dos elementos de entrada; Então, adicionar

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação CP41F Aula 2 Prof. Daniel Cavalcanti Jeronymo Conceito de algoritmo. Raciocínio lógico na construção de algoritmos. Estrutura de algoritmos. Universidade Tecnológica Federal

Leia mais

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

speedup aprimorado aprimorado Fração aprimorada speedup aprimorado Fração aprimorada speedup aprimorado Tempo original Fração aprimorada aprimorado Multiprocessadores - A evolução tecnológica dos processadores iria diminuir drasticamente. 2- O caminho para o aumento de desempenho é de unir mais de um processador para realizar a mesma tarefa em menos

Leia mais

Algoritmos evolutivos paralelos. Carlos Eduardo Cuzik Marcos Felipe Eipper Ramon Artner Rocha

Algoritmos evolutivos paralelos. Carlos Eduardo Cuzik Marcos Felipe Eipper Ramon Artner Rocha Algoritmos evolutivos paralelos Carlos Eduardo Cuzik Marcos Felipe Eipper Ramon Artner Rocha Introdução O mesmo de sempre mas com thread. Obrigado Fake news Introdução de verdade Era da informação - Big

Leia mais

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: ponteiros e alocação dinâmica Prof. Renato Pimentel 1 Ponteiros 2 Prof. Renato Pimentel 1 Ponteiros: introdução Toda a informação

Leia mais