Técnicas de Paralelização

Documentos relacionados
Exemplo de Arquitetura: Cliente/Servidor com Mestre e Escravos. Interface. Fator de speed-up. Speed-up

Técnicas de Paralelização

MPI - Continuação. Qual o output do programa: from mpi4py import MPI comm = MPI.COMM_WORLD nprocs = comm.get_size() rank = comm.

Análise e Complexidade de Algoritmos

Programação em sistemas de memória distribuída

Divisão e conquista. Eficiência de divisão e conquista

Divisão e conquista. Há divisão quando o algoritmo tem pelo menos 2 chamadas recursivas no corpo

Algoritmos Paralelos - ordenação

Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet

Decisões arquiteturais importantes. Projeto arquitetural x projeto de algoritmos. Decomposição de dados. Decomposição de dados

Algoritmos de Ordenação: QuickSort

Programação Paralela e Distribuída

Estruturas de Dados 2

Arquitecturas Paralelas I Computação Paralela em Larga Escala LESI - 4º Ano. Desenvolvimento de Aplicações Paralelas

Introdução à Programação Estruturada Parte 2. Material da Prof. Ana Eliza

BCC202 - Estrutura de Dados I

CURSO DE ESTRUTURA DE DADOS MÓDULO: ALGORITMOS DE ORDENAÇÃO E PESQUISA PROFESSORA: DANIELA ELOISE FLÔR COLABORADORA: MARIA CAROLINA SILA VANUCHI

Divisão-e-Conquista ( ) CAL ( ) MIEIC/FEUP. ./rr (1) Técnicas de Concepção de Algoritmos

Programação Concorrente e Paralela

ALGORITMOS I. Procedimentos e Funções

Algoritmos e Estruturas de Dados I Linguagem C

SSC300- Linguagens de Programação e Aplicações Profa Vânia de Oliveira Neves. ICMC/USP São Carlos

Divisão e Conquista. Norton T. Roman. Apostila baseada nos trabalhos de Cid de Souza, Cândida da Silva e Delano M. Beder

Aula 3: Algoritmos: Formalização e Construção

CIC 110 Análise e Projeto de Algoritmos I

Aula 4 ESTRUTURAS DE REPETIÇÃO (FOR)

Algoritmos de ordenação Quicksort

Linguagem C ESTRUTURA DE CONTROLE

Análise de algoritmos

Análise de Problemas Recursivos. Algoritmos e Estruturas de Dados Flavio Figueiredo (

5. Análise de Complexidade de Algoritmos. João Pascoal Faria (versão original) Ana Paula Rocha (versão 2003/2004) Luís Paulo Reis (versão 2005/2006)

Algoritmos de Ordenação. Profº Carlos Alberto T. Batista

Divisão e Conquista. Fernando Lobo. Algoritmos e Estrutura de Dados II. É uma técnica para resolver problemas (veremos outras técnicas mais adiante).

Ordenação: MergeSort. Prof. Túlio Toffolo BCC202 Aula 14 Algoritmos e Estruturas de Dados I

Introdução na Computação Distribuída e Paralela

Fundamentos IV. Clarimar J. Coelho. Departamento de Computação. November 26, 2014

Projeto e Análise de Algoritmos Aula 4: Dividir para Conquistar ou Divisão e Conquista ( )

Paradigmas de Projetos de Algoritmos

INTRODUÇÃO À PROGRAMAÇÃO

Introdução aos Métodos Numéricos

Introdução aos Métodos Numéricos

Exemplo de Arquitetura: Cliente/Servidor com Mestre e Escravos. Interface em IDL. Dynamic Invocation Interface. Exemplo invocação DII em Java

COMPLEXIDADE DE ALGORITMOS

Introdução à Programação

Classificação e Pesquisa

AED2 - Aula 11 Problema da separação e quicksort

Ordenação: QuickSort. Prof. Túlio Toffolo BCC202 Aula 15 Algoritmos e Estruturas de Dados I

CIC 110 Análise e Projeto de Algoritmos I

OpenMP. Slides baseados em tutorial de Tim Mattson da Intel

Algoritmos. Estrutura de Repetição. enquanto. while. Grupos de Slides No 5. Prof. SIMÃO

QuickSort CI/2015. Análise e Projeto de Algoritmos. - Prof. Lucídio A. F. Cabral

Comparação com Divisão e Conquista

1. O número de bactérias numa cultura pode ser estimado pela expressão:

C alculo Num erico Integra c ao Num erica Ana Paula Ana Paula C alculo Num erico

O termo Programação Dinâmica é um bocado infeliz.

Estruturas de Dados Aula 14: Recursão

Estruturas de Dados Aula 14: Recursão 19/05/2011

Programação Concorrente e Paralela

Análise de Complexidade para algoritmos iterativos e recursivos

Algoritmos de Ordenação: MergeSort

Exercícios - Factorial

MAC 2166 Introdução à Computação para Engenharia

Programação I Aula 7 Resolução numérica de equações

Métodos Numéricos Zeros Posição Falsa e Ponto Fixo. Professor Volmir Eugênio Wilhelm Professora Mariana Kleina

Estrutura de Dados Conceitos Iniciais

, se x = y. , se x > y

Algoritmos. Estrutura de Repetição. para - passo. for. Grupos de Slides No 7. Prof. SIMÃO

Prova 1 PMR2300 / PMR3201 1o. semestre 2015 Prof. Thiago Martins

Lista de exercícios de Análise Numérica

Implementando uma demonstração

Análise e Síntese de Algoritmos. Programação Dinâmica CLRS, Cap. 15

C alculo Num erico Integra c ao Num erica Ana Paula Ana Paula C alculo Num erico

Variáveis e instruções de repetição

Programação I Aula 16 Mais exemplos de recursão Pedro Vasconcelos DCC/FCUP

Introdução à Programação Aula 7 Resolução numérica de equações

PLANO DE UNIDADE DIDÁTICA- PUD

Modelos de Execução Bolsas de Tarefas

Solução de Recorrências

Busca em Memória Primária Estrutura de Dados II

Busca em Memória Primária Estrutura de Dados II

Algoritmos de Ordenação

ALGORITMOS AVANÇADOS. UNIDADE III Algoritmo de Ordenação por Intercalação (Mergesort) Luiz Leão

OPTIMIZAÇÃO NÃO LINEAR

Modelagem Computacional. Parte 3 2

DGPAPP Tutorial. Introdução. Daniel Centeno Einloft Vinicius Meirelles Pereira. 20 May 2014

Algoritmos Paralelos usando CGM/MPI. Edson Norberto Cáceres e Siang Wun Song DCT/UFMS e DCC/IME/USP Aula 05

ESTRUTURA DE DADOS (TCC )

Algoritmos. Estrutura de decisão de múltipla escolha. escolha-caso. switch case. Grupos de Slides No 4. Prof. SIMÃO

É interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser

CAL ( ) - MIEIC/FEUP Programação Dinâmica ( )

Análise e Complexidade de Algoritmos

Recursividade. Prof. Jesus José de Oliveira Neto

Desafios de Programação

SCC Capítulo 3 Análise de Algoritmos - Parte 2

Estruturas de Controle

Sub-rotinas David Déharbe

Integral Definida. a b x. a=x 0 c 1 x 1 c 2 x 2. x n-1 c n x n =b x

Aditya Y. Bhargava. Novatec

ESTRUTURAS CONDICIONAIS. Baseado nos slides de autoria de Rosely Sanches e Simone Senger de Souza

Análise de Algoritmos Parte 4

Transcrição:

Técnicas de Paralelização 2 Particionar e dividir para conquistar Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd ed., by B. Wilkinson & M. Allen, @ 2004 Pearson Education Inc. All rights reserved.

Particionamento O problema é dividido em partes ou tarefas, cada uma processada individualmente. Dividir para conquistar O problema é dividido em subproblemas com a mesma forma que o problema principal. Geralmente prossegue recursivamente a dividir cada subproblema em subproblemas menores. Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd ed., by B. Wilkinson & M. Allen, @ 2004 Pearson Education Inc. All rights reserved. 4.1

Exemplos Operações em sequências de números Algoritmos de ordenação Integração numérica N-body problema Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd ed., by B. Wilkinson & M. Allen, @ 2004 Pearson Education Inc. All rights reserved. 4.2

Particionamento Pode ser aplicado aos dados (particionamento de dados) Pode ser aplicado às funcionalidades de um programa (decomposição funcional) Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd ed., by B. Wilkinson & M. Allen, @ 2004 Pearson Education Inc. All rights reserved. 4.3

Particionar uma sequência de valores em partes e adicionar as partes tamanho = n/p; scatter(valores, tamanho, root=master); Cacalulcar somas parcias reduce_add(parcialsum sum, root=master); Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd ed., by B. Wilkinson & M. Allen, @ 2004 Pearson Education Inc. All rights reserved. 4.4

Dividir para conquistar Somar recursivamente uma lista de números: (Versão sequencial) def soma( ar ): if (ar.size == 1): return ar[0] if (ar.size == 2): return ar[0]+ ar[1] s1 = ar[0:ar.size/2] s2 = ar[ar.size/2: ar.size] parcial1 = soma(s1) parcial2 = soma(s2) return parcial1 + parcial2 Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd ed., by B. Wilkinson & M. Allen, @ 2004 Pearson Education Inc. All rights reserved. 4.5

Construção de uma árvore Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd ed., by B. Wilkinson & M. Allen, @ 2004 Pearson Education Inc. All rights reserved. 4.6

Dividir a lista em partes: (reusar processos em todos os níveis da árvore) P processos log 2 P passos Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd ed., by B. Wilkinson & M. Allen, @ 2004 Pearson Education Inc. All rights reserved. 4.7

Resultados parciais Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd ed., by B. Wilkinson & M. Allen, @ 2004 Pearson Education Inc. All rights reserved. 4.8

Versão paralela Processo P0 dividir (s1, s1, s2) send (s2, P4) dividir (s1, s1,s2) send ( s2, P2) dividir (s1, s1,s2) send ( s2, P1) soma_parcial = soma(s1) recv ( soma_parcial1, P1) soma_parcial += soma_parcial1 recv ( soma_parcial1, P2) soma_parcial += soma_parcial1 recv ( soma_parcial1, P4) soma_parcial += soma_parcial1 Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd ed., by B. Wilkinson & M. Allen, @ 2004 Pearson Education Inc. All rights reserved. 4.9

Versão paralela Processo P4 recv ( s1, P0) dividir (s1, s1, s2) send (s2, P6) dividir (s1, s1,s2) send ( s2, P5) soma_parcial = soma(s1) recv ( soma_parcial1, P5) soma_parcial += soma_parcial1 recv ( soma_parcial1, P6) soma_parcial += soma_parcial1 send ( soma_parcial, P0) Código de P1, P2, P3, P5, P6, P7 Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd ed., by B. Wilkinson & M. Allen, @ 2004 Pearson Education Inc. All rights reserved. 4.10

Quadtree Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd ed., by B. Wilkinson & M. Allen, @ 2004 Pearson Education Inc. All rights reserved. 4.11

Dividir uma imagem Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd ed., by B. Wilkinson & M. Allen, @ 2004 Pearson Education Inc. All rights reserved. 4.12

Integração numérica Uma técnica geral de divisão e conquista consiste em dividir a região continuamente em partes e existe uma função de optimização que decide quando esta está suficientemente dividida Exemplo: Integração numérica: divide a área em várias partes e cada uma delas pode ser calculada por um processo separado Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd ed., by B. Wilkinson & M. Allen, @ 2004 Pearson Education Inc. All rights reserved. 4.13

Integração numérica usando rectângulos Cada região pode ser calculada por uma aproximação utilizando retângulos - fixados à esquerda f(x) f(p) a p q b x Area= f(p) Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd ed., by B. Wilkinson & M. Allen, @ 2004 Pearson Education Inc. All rights reserved. 4.14

Integração numérica usando rectângulos - Retângulo centrado f(x) f(p) f(q) a p q b x Area= f( (p+q)/2) Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd ed., by B. Wilkinson & M. Allen, @ 2004 Pearson Education Inc. All rights reserved. 4.15

Integração numérica usando rectângulos - Regra do trapézio f(x) f(p) f(q) a p q b x Area=0.5 ( f(p)+f(q) ) Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd ed., by B. Wilkinson & M. Allen, @ 2004 Pearson Education Inc. All rights reserved. 4.16

Integração numérica usando rectângulos - Decomposição Estática Pseudo código Pseudo código SPMD Processo P i Obter intervalo [a,b] e numero de intervalos Fazer Broadcast Dividir intervalo - particionamento de numero de intervalos. Cada processo calcula area atribuida Calcular área global usando operação de redução com operação de somar if (i == master) { printf ( Introduza o número intervalos ); scanf ( %d, &n); } bcast(&a,&b,n, P group ); region = (b-a)/p; start=a + region * i; end = start + region; d=(b-a)/n; area=0.0; for ( x = start; x <end; x = x+d) area = area +f(x) + f(x+d); area=0.5 * area * d; reduce_add(&integral, &area, P group ); Slides for Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd ed., by B. Wilkinson & M. Allen, @ 2004 Pearson Education Inc. All rights reserved. 4.17