A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Sistemas Distribuídos Introdução a Sistemas Distribuídos São Paulo, 2011 Universidade Paulista (UNIP) Programação.

Apresentações semelhantes


Apresentação em tema: "Sistemas Distribuídos Introdução a Sistemas Distribuídos São Paulo, 2011 Universidade Paulista (UNIP) Programação."— Transcrição da apresentação:

1 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com1 São Paulo, 2011 Universidade Paulista (UNIP) Programação Paralela Prof. Msc. Vladimir Camelo vladimir.professor@gmail.com

2 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com2 O que é pipeline? O que é pipeline? Técnica inicialmente utilizada em processadores com arquitetura RISC (Reduced Instruction Set Computer); Técnica inicialmente utilizada em processadores com arquitetura RISC (Reduced Instruction Set Computer); É um recurso de hardware utilizado para dividir o processador em vários estágios no processo de execução, de forma simultânea, dividindo o trabalho de processar as instruções. É um recurso de hardware utilizado para dividir o processador em vários estágios no processo de execução, de forma simultânea, dividindo o trabalho de processar as instruções. É como uma linha de produção com vários operários, em que cada um monta uma peça, até que seja entregue um produto completo ao final do processo de produção. É como uma linha de produção com vários operários, em que cada um monta uma peça, até que seja entregue um produto completo ao final do processo de produção. Algumas definições

3 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com3 O que é pipeline? O que é pipeline? A vantagem desta técnica, é que o primeiro estágio não precisa ficar esperando a instrução passar por todos os demais para carregar a próxima, e sim carregar uma nova instrução assim que se livra da primeira, ou seja, depois do primeiro pulso de clock. Algumas definições

4 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com4 Algumas definições

5 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com5 Crescimento nos últimos anos na demanda por computação de alto desempenho em áreas diversas, tais como: Crescimento nos últimos anos na demanda por computação de alto desempenho em áreas diversas, tais como: Biomecânica; Biomecânica; Meteorologia; e Meteorologia; e Engenharia. Engenharia. Introdução

6 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com6 Existem limites físicos para o aumento da velocidade de um único processador, como por exemplo: Existem limites físicos para o aumento da velocidade de um único processador, como por exemplo: Alto custo associado ao desenvolvimento de novas tecnologias de processamento para aumentar a velocidade (memória, processador, barramento, outros); Alto custo associado ao desenvolvimento de novas tecnologias de processamento para aumentar a velocidade (memória, processador, barramento, outros); Introdução

7 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com7 InícioFim Programação não paralela T1 T2 T3 T4 T5T6T7T8T9 Visão geral da programação paralela

8 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com8 InícioFim Tarefa 2 Tarefa 1 Tarefa 3 Tarefa 4 Tarefa 5 Programação paralela Visão geral da programação paralela

9 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com9 Estas novas arquiteturas integram vários processadores (dezenas a milhares), razoavelmente rápidos, para compor uma máquina de alto desempenho. Estas novas arquiteturas integram vários processadores (dezenas a milhares), razoavelmente rápidos, para compor uma máquina de alto desempenho. Estas máquinas podem ser classificadas em três tipos: Estas máquinas podem ser classificadas em três tipos: Multiprocessadores vetoriais: Multiprocessadores vetoriais: possuem um pequeno número de processadores vetoriais de alta performance. possuem um pequeno número de processadores vetoriais de alta performance. Introdução

10 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com10 Estas máquinas podem ser classificadas em três tipos: Estas máquinas podem ser classificadas em três tipos: Sistemas MPP (Massively Parallel Processors): Sistemas MPP (Massively Parallel Processors): possuem de centenas a milhares de processadores, com memória distribuída ou compartilhada. possuem de centenas a milhares de processadores, com memória distribuída ou compartilhada. Rede de estações de trabalho: Rede de estações de trabalho: máquinas interligadas por redes que podem trabalhar como uma única máquina virtual paralela. máquinas interligadas por redes que podem trabalhar como uma única máquina virtual paralela. Introdução

11 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com11 Reduzir tempo total de processamento (wall clock time); Reduzir tempo total de processamento (wall clock time); Reduzir o custo de processamento: Reduzir o custo de processamento: execução em paralelo utilizando um grande número de estações de trabalho pode ser menor (custo) que utilizar um supercomputador; execução em paralelo utilizando um grande número de estações de trabalho pode ser menor (custo) que utilizar um supercomputador; Recursos locais versus não locais: Recursos locais versus não locais: Pode-se utilizar arquiteturas e equipamentos de tipos diversos e agregar sempre mais poder de processamento sempre que necessário; Pode-se utilizar arquiteturas e equipamentos de tipos diversos e agregar sempre mais poder de processamento sempre que necessário; Objetivos

12 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com12 Alguns termos utilizados em processamento paralelo (Elias, 1995): Alguns termos utilizados em processamento paralelo (Elias, 1995): Tarefas (ou processos): programas executados concorrentemente, disparados por um programa mestre. São as principais unidades do processamento paralelo em um ambiente de computação distribuída; comunicam-se por meio de troca de mensagens. Tarefas (ou processos): programas executados concorrentemente, disparados por um programa mestre. São as principais unidades do processamento paralelo em um ambiente de computação distribuída; comunicam-se por meio de troca de mensagens. [Elias,95] Elias, D., "Introduction to Parallel Programming Concepts", Workshop on Parallel Programming on the IBM SP, Cornell Theory Center, 1995. Disponível através da WWW no endereço http://www.tc.cornell.edu/Edu/Workshop. Terminologia

13 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com13 Alguns termos utilizados em processamento paralelo (Elias, 1995): Alguns termos utilizados em processamento paralelo (Elias, 1995): Execução seqüencial: execução de um programa em um único processador, com as instruções sendo processadas uma de cada vez. Execução seqüencial: execução de um programa em um único processador, com as instruções sendo processadas uma de cada vez. Terminologia [Elias,95] Elias, D., "Introduction to Parallel Programming Concepts", Workshop on Parallel Programming on the IBM SP, Cornell Theory Center, 1995. Disponível através da WWW no endereço http://www.tc.cornell.edu/Edu/Workshop.

14 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com14 Alguns termos utilizados em processamento paralelo (Elias, 1995): Alguns termos utilizados em processamento paralelo (Elias, 1995): Paralelização de código: consiste na transformação de um programa seqüencial em paralelo, com a identificação de porções de código que podem ser executadas independentemente. Exige mudanças no código do programa e, caso necessário, no algoritmo utilizado no programa seqüencial. Paralelização de código: consiste na transformação de um programa seqüencial em paralelo, com a identificação de porções de código que podem ser executadas independentemente. Exige mudanças no código do programa e, caso necessário, no algoritmo utilizado no programa seqüencial. Terminologia [Elias,95] Elias, D., "Introduction to Parallel Programming Concepts", Workshop on Parallel Programming on the IBM SP, Cornell Theory Center, 1995. Disponível através da WWW no endereço http://www.tc.cornell.edu/Edu/Workshop.

15 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com15 Alguns termos utilizados em processamento paralelo (Elias, 1995): Alguns termos utilizados em processamento paralelo (Elias, 1995): Aceleração (speed-up): consiste na comparação entre o tempo de execução do programa em um único processador e o tempo de execução utilizando vários processadores. Aceleração (speed-up): consiste na comparação entre o tempo de execução do programa em um único processador e o tempo de execução utilizando vários processadores. Terminologia [Elias,95] Elias, D., "Introduction to Parallel Programming Concepts", Workshop on Parallel Programming on the IBM SP, Cornell Theory Center, 1995. Disponível através da WWW no endereço http://www.tc.cornell.edu/Edu/Workshop.

16 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com16 Alguns termos utilizados em processamento paralelo (Elias, 1995): Alguns termos utilizados em processamento paralelo (Elias, 1995): Sincronização: coordenação entre processos para a troca de informações. Sincronização: coordenação entre processos para a troca de informações. É um fator de decréscimo da eficiência do programa, uma vez que alguns processadores podem ficar inativos, esperando pelo término de outros processos. É um fator de decréscimo da eficiência do programa, uma vez que alguns processadores podem ficar inativos, esperando pelo término de outros processos. [Elias,95] Elias, D., "Introduction to Parallel Programming Concepts", Workshop on Parallel Programming on the IBM SP, Cornell Theory Center, 1995. Disponível através da WWW no endereço http://www.tc.cornell.edu/Edu/Workshop. Terminologia

17 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com17 Alguns termos utilizados em processamento paralelo (Elias, 1995): Alguns termos utilizados em processamento paralelo (Elias, 1995): Granularidade: quantidade de processamento realizado por cada processo, em relação à quantidade de comunicação entre processos. Granularidade: quantidade de processamento realizado por cada processo, em relação à quantidade de comunicação entre processos. Muito granular: processos executam poucas instruções e se comunicar muito. Muito granular: processos executam poucas instruções e se comunicar muito. Pouco granular: processos executam muitas instruções, com pouca troca de informação. Pouco granular: processos executam muitas instruções, com pouca troca de informação. Terminologia [Elias,95] Elias, D., "Introduction to Parallel Programming Concepts", Workshop on Parallel Programming on the IBM SP, Cornell Theory Center, 1995. Disponível através da WWW no endereço http://www.tc.cornell.edu/Edu/Workshop.

18 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com18 Alguns termos utilizados em processamento paralelo (Elias, 1995): Alguns termos utilizados em processamento paralelo (Elias, 1995): Um programa com granularidade alta necessita de maior sincronização que um programa com menor granularidade, o que afeta o tempo de execução do programa. Um programa com granularidade alta necessita de maior sincronização que um programa com menor granularidade, o que afeta o tempo de execução do programa. Terminologia [Elias,95] Elias, D., "Introduction to Parallel Programming Concepts", Workshop on Parallel Programming on the IBM SP, Cornell Theory Center, 1995. Disponível através da WWW no endereço http://www.tc.cornell.edu/Edu/Workshop.

19 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com19 Alguns termos utilizados em processamento paralelo (Elias, 1995): Alguns termos utilizados em processamento paralelo (Elias, 1995): Escalabilidade: um sistema computacional paralelo é dito escalável se a aceleração atingida cresce proporcionalmente ao número de processadores utilizados. Escalabilidade: um sistema computacional paralelo é dito escalável se a aceleração atingida cresce proporcionalmente ao número de processadores utilizados. Terminologia [Elias,95] Elias, D., "Introduction to Parallel Programming Concepts", Workshop on Parallel Programming on the IBM SP, Cornell Theory Center, 1995. Disponível através da WWW no endereço http://www.tc.cornell.edu/Edu/Workshop.

20 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com20 Alguns termos utilizados em processamento paralelo (Elias, 1995): Alguns termos utilizados em processamento paralelo (Elias, 1995): Balanceamento de carga: consiste na distribuição equilibrada de tarefas entre os processadores, de forma a garantir uma execução eficiente do programa paralelo. Balanceamento de carga: consiste na distribuição equilibrada de tarefas entre os processadores, de forma a garantir uma execução eficiente do programa paralelo. Terminologia [Elias,95] Elias, D., "Introduction to Parallel Programming Concepts", Workshop on Parallel Programming on the IBM SP, Cornell Theory Center, 1995. Disponível através da WWW no endereço http://www.tc.cornell.edu/Edu/Workshop.

21 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com21 Alguns termos utilizados em processamento paralelo (Elias, 1995): Alguns termos utilizados em processamento paralelo (Elias, 1995): SPMD (Single Program - Multiple Data): modelo de programação onde todos os processadores executam o mesmo programa sobre diferentes conjuntos de dados. SPMD (Single Program - Multiple Data): modelo de programação onde todos os processadores executam o mesmo programa sobre diferentes conjuntos de dados. Terminologia

22 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com22 Organização de computadores paralelos Existem várias maneiras de se organizar computadores paralelos. Existem várias maneiras de se organizar computadores paralelos. Classificação de computadores paralelos segundo Ben-Dyke (1993) : Classificação de computadores paralelos segundo Ben-Dyke (1993) : Hierárquica: iniciando em um nível mais abstrato, a classificação deve ser refinada em subníveis à medida que se diferencie de maneira mais detalhada cada arquitetura; Hierárquica: iniciando em um nível mais abstrato, a classificação deve ser refinada em subníveis à medida que se diferencie de maneira mais detalhada cada arquitetura; Universal: um computador único, deve ter uma classificação única; Universal: um computador único, deve ter uma classificação única; BEN-DYKE, A. D., “Architectural taxonomy, A brief review”, University of Birmingham, 1993

23 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com23 Organização de computadores paralelos Classificação de computadores paralelos segundo Ben-Dyke (1993) : Classificação de computadores paralelos segundo Ben-Dyke (1993) : Extensível: futuras máquinas que surjam, devem ser incluídas sem que sejam necessárias modificações na classificação; Extensível: futuras máquinas que surjam, devem ser incluídas sem que sejam necessárias modificações na classificação; Concisa: os nomes que representam cada uma das classes devem ser pequenos para que a classificação seja de uso prático; Concisa: os nomes que representam cada uma das classes devem ser pequenos para que a classificação seja de uso prático; Abrangente: a classificação deve incluir todos os tipos de arquiteturas existentes Abrangente: a classificação deve incluir todos os tipos de arquiteturas existentes BEN-DYKE, A. D., “Architectural taxonomy, A brief review”, University of Birmingham, 1993

24 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com24 Há três modelos básicos de programação multiprocessada Há três modelos básicos de programação multiprocessada Tolerância a falhas: Tolerância a falhas: utilizada em servidores de banco de dados e servidores web. utilizada em servidores de banco de dados e servidores web. Replicação de dados. Replicação de dados. Delegação de servidores no caso de paradas. Delegação de servidores no caso de paradas. O que é programação paralela

25 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com25 Há três modelos básicos de programação multiprocessada Há três modelos básicos de programação multiprocessada Balanceamento de carga: Balanceamento de carga: Usado principalmente em servidores web. Usado principalmente em servidores web. Divisão de carga entre o servidor principal com outros computadores. Divisão de carga entre o servidor principal com outros computadores. O que é programação paralela

26 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com26 Os programas que rodam nos 2 primeiros casos não são feitos especialmente para rodarem em vários computadores ao mesmo tempo. Os programas que rodam nos 2 primeiros casos não são feitos especialmente para rodarem em vários computadores ao mesmo tempo. Programação paralela: Programação paralela: Modelo em que o mesmo programa é carregado e roda simultaneamente em vários computadores. Modelo em que o mesmo programa é carregado e roda simultaneamente em vários computadores. O programa construído para rodar especificamente em vários computadores e utiliza funções de comunicação entre os computadores (MPI). O programa construído para rodar especificamente em vários computadores e utiliza funções de comunicação entre os computadores (MPI). O que é programação paralela

27 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com27 Os programas que rodam nos 2 primeiros casos não são feitos especialmente para rodarem em vários computadores ao mesmo tempo. Os programas que rodam nos 2 primeiros casos não são feitos especialmente para rodarem em vários computadores ao mesmo tempo. Vantagens de algoritmos paralelos: menor tempo de execução. Vantagens de algoritmos paralelos: menor tempo de execução. O computador possui um número de identificação (id). O computador possui um número de identificação (id). O que é programação paralela

28 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com28 Aumento de desempenho: Aumento de desempenho: Capacidade de memória maior Capacidade de memória maior Desempenho: Desempenho: Aumento do tamanho da palavra e da precisão utilizada decorrente da quantidade de processadores que podem ser utilizados Aumento do tamanho da palavra e da precisão utilizada decorrente da quantidade de processadores que podem ser utilizados Por que utilizar programação paralela

29 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com29 Aumento de desempenho: Aumento de desempenho: Velocidade: Velocidade: Mais transistores em menor espaço Mais transistores em menor espaço Mais vias de comunicação Mais vias de comunicação Limites para esse aumento Limites para esse aumento Velocidade de transmissão faz com que módulos tenham que ser colocados relativamente perto um dos outros para não perder sincronização Velocidade de transmissão faz com que módulos tenham que ser colocados relativamente perto um dos outros para não perder sincronização Por que utilizar programação paralela

30 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com30 Limites para redução de componentes e aumento de capacidade de um computador; Limites para redução de componentes e aumento de capacidade de um computador; Investimento financeiro em supercomputadores; Investimento financeiro em supercomputadores; Problemas grandes pode ser subdividido e executados em paralelo por mais de um computador; Problemas grandes pode ser subdividido e executados em paralelo por mais de um computador; Disponibilidade de processadores (relativamente mais barato). Disponibilidade de processadores (relativamente mais barato). Por que utilizar programação paralela

31 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com31 Aspectos favoráveis a adoção da programação paralela Barreiras ao crescimento da freqüência (clock) dos processadores; Barreiras ao crescimento da freqüência (clock) dos processadores; Consumo de energia e a conseqüente dissipação térmica; Consumo de energia e a conseqüente dissipação térmica; Dimensão do processador e seus componentes acessórios; Dimensão do processador e seus componentes acessórios; Largura de banda no acesso a memória; Largura de banda no acesso a memória;

32 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com32 Aspectos favoráveis a adoção da programação paralela Paralelismo intrínseco do mundo real; Paralelismo intrínseco do mundo real; A relação custo-benefício dos processadores de última geração; A relação custo-benefício dos processadores de última geração; Aplicações extremamente complexas; Aplicações extremamente complexas; Suporte a tolerância de falhas; Suporte a tolerância de falhas; Crescimento modular; Crescimento modular;

33 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com33 Aspectos desfavoráveis a adoção da programação paralela Disponibilidade de software aplicativo; Disponibilidade de software aplicativo; Mercado de equipamentos paralelos ainda é pequeno; Mercado de equipamentos paralelos ainda é pequeno; Elevado custo de conversão; Elevado custo de conversão; Ausência de padrões; Ausência de padrões; Validação (testar exatidão de um software paralelo); Validação (testar exatidão de um software paralelo); Instabilidade no fornecimento; Instabilidade no fornecimento;

34 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com34 Aspectos desfavoráveis a adoção da programação paralela Padronização; Padronização; Relação entre a teoria e tecnologia; Relação entre a teoria e tecnologia; Instabilidade dos fornecedores; Instabilidade dos fornecedores;

35 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com35 Previsão do tempo; Previsão do tempo; Modelo de movimentação de corpos celestes; Modelo de movimentação de corpos celestes; Acelerador de partículas. Acelerador de partículas. Ex. de aplicações que utilizam programação paralela

36 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com36 Os tipos de paralelismos que podem ser aplicados são: Os tipos de paralelismos que podem ser aplicados são: Paralelismo de dados; Paralelismo de dados; Paralelismo funcional; Paralelismo funcional; Paralelismo temporal Paralelismo temporal Tipos de paralelismo

37 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com37 O volume de dados é dividido em sub-volumes e cada porção é enviada para uma unidade de processamento. O volume de dados é dividido em sub-volumes e cada porção é enviada para uma unidade de processamento. A maior limitação é a quantidade de processadores que podem ser incorporados em uma dada arquitetura bem como a velocidade de comunicação entre os processadores. A maior limitação é a quantidade de processadores que podem ser incorporados em uma dada arquitetura bem como a velocidade de comunicação entre os processadores. Cada tarefa executa uma mesma série de cálculos sobre diferentes dados; Cada tarefa executa uma mesma série de cálculos sobre diferentes dados; Paralelismo de dados

38 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com38 Localidade dos dados é parte essencial de um algoritmo paralelo; Localidade dos dados é parte essencial de um algoritmo paralelo; Exemplos: Exemplos: Cálculo da média de temperatura em um determinado estado; Cálculo da média de temperatura em um determinado estado; Procura de pessoas com mais de 65 anos em uma população; Procura de pessoas com mais de 65 anos em uma população; Jogo de xadrez. Jogo de xadrez. Paralelismo de dados

39 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com39 o algoritmo de renderização é dividido em vários passos ou funções. o algoritmo de renderização é dividido em vários passos ou funções. A cada função corresponderá um processo distinto o qual será executado em uma unidade de processamento específica (Correspondência bi-unívoca entre funções e unidades de processamento). A cada função corresponderá um processo distinto o qual será executado em uma unidade de processamento específica (Correspondência bi-unívoca entre funções e unidades de processamento). Uma vez terminado o processamento de uma unidade, o resultado é enviado para a próxima função no pipeline. Uma vez terminado o processamento de uma unidade, o resultado é enviado para a próxima função no pipeline. Paralelismo funcional

40 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com40 Cada tarefa executa cálculos diferentes para resolver um problema Cada tarefa executa cálculos diferentes para resolver um problema Tarefas podem ser executadas sobre mesmos dados ou dados diferentes Tarefas podem ser executadas sobre mesmos dados ou dados diferentes Exemplo: Exemplo: Modelagem de um ecossistema, onde cada programa calcula a população de um determinado grupo que depende dos vizinhos Modelagem de um ecossistema, onde cada programa calcula a população de um determinado grupo que depende dos vizinhos Paralelismo funcional

41 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com41 Ocorre no Pipeline, onde a tarefa é subdividida numa seqüência de subtarefas cada uma executada por um estágio de hardware específico, que trabalha concorrentemente com os outros estágios do pipeline, criando um paralelismo temporal na execução das subtarefas. Ocorre no Pipeline, onde a tarefa é subdividida numa seqüência de subtarefas cada uma executada por um estágio de hardware específico, que trabalha concorrentemente com os outros estágios do pipeline, criando um paralelismo temporal na execução das subtarefas. E1 E2 En Relógio Paralelismo temporal

42 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com42 Paralelismo temporal

43 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com43 Definição: Definição: É um programa em execução em uma máquina; É um programa em execução em uma máquina; Cada processo é identificado pelo seu PID (Process Identifier); Cada processo é identificado pelo seu PID (Process Identifier); Processos

44 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com44 Execução dos Processos: Execução dos Processos: Um processador pode executar somente um processo a cada instante; Um processador pode executar somente um processo a cada instante; Em um Sistema Operacional multitarefa, processos se alternam no uso do processador – cada processo é executado durante um quantum de tempo; Em um Sistema Operacional multitarefa, processos se alternam no uso do processador – cada processo é executado durante um quantum de tempo; Se houver N processadores, N processos podem ser executados simultaneamente. Se houver N processadores, N processos podem ser executados simultaneamente. Processos

45 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com45 Um computador convencional consiste de um processador executando um programa armazenado na memória; Um computador convencional consiste de um processador executando um programa armazenado na memória; Cada lugar da memória possui um endereço que inicia em 0 e vai até 2 n - 1, onde n é o número de bits do endereço. Cada lugar da memória possui um endereço que inicia em 0 e vai até 2 n - 1, onde n é o número de bits do endereço. Memória principal Processador Instruções para o processador Dados para ou do processador Modelo de acesso a memória

46 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com46 A mesma memória é acessada pelos múltiplos processadores; A mesma memória é acessada pelos múltiplos processadores; Sincronização entre tarefas é feita por escrita/leitura na/da memória compartilhada e usuário é responsável por sua especificação; Sincronização entre tarefas é feita por escrita/leitura na/da memória compartilhada e usuário é responsável por sua especificação; Uma posição de memória não pode ser modificado por uma tarefa enquanto outra o estiver acessando; Uma posição de memória não pode ser modificado por uma tarefa enquanto outra o estiver acessando; Comunicação entre tarefas é rápida; Comunicação entre tarefas é rápida; Escalabilidade limitada pelo número de caminhos entre memória e processadores. Escalabilidade limitada pelo número de caminhos entre memória e processadores. Memória compartilhada

47 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com47 Memória compartilhada

48 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com48 SMP (Symetric MultiProcessors) utiliza esse modelo; SMP (Symetric MultiProcessors) utiliza esse modelo; Programação: Programação: Linguagens de programação paralela: Linguagens de programação paralela: Construções e instruções paralelas permitem declarações de variáveis compartilhadas e seções paralelas de código; Construções e instruções paralelas permitem declarações de variáveis compartilhadas e seções paralelas de código; Compilador responsável pela geração do código final executável. Compilador responsável pela geração do código final executável. Memória compartilhada

49 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com49 SMP (Symetric MultiProcessors) utiliza esse modelo; SMP (Symetric MultiProcessors) utiliza esse modelo; Programação: Programação: Threads: Threads: Seqüências de código escritas em alto nível para processadores individuais que podem acessar localidades compartilhadas. Seqüências de código escritas em alto nível para processadores individuais que podem acessar localidades compartilhadas. Memória compartilhada

50 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com50 Fator de aceleração (speed-up)

51 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com51 O Speedup é a relação entre o tempo gasto para executar uma tarefa utilizando um único processador se comparado ao tempo gasto com N processadores, ou seja, Speedup é a mndida do ganho em tempo de execução da tarefa. O Speedup é a relação entre o tempo gasto para executar uma tarefa utilizando um único processador se comparado ao tempo gasto com N processadores, ou seja, Speedup é a mndida do ganho em tempo de execução da tarefa. S = speedup S = speedup T(N) = tempo gasto para N processadores T(N) = tempo gasto para N processadores Fator de aceleração (speed-up)

52 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com52 Fator de aceleração (speed-up) Equação conhecida com Lei de Amdahl Equação conhecida com Lei de Amdahl

53 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com53 Fator de aceleração (speed-up)

54 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com54 Eficiência fornece a fração de tempo que os processadores estão sendo utilizados para processamento Eficiência fornece a fração de tempo que os processadores estão sendo utilizados para processamento Eficiência

55 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com55 Custo de um processamento é definido como: Custo de um processamento é definido como: O custo de uma execução seqüencial é simplesmente o tempo de execução t s O custo de uma execução seqüencial é simplesmente o tempo de execução t s O custo de uma execução paralela é: O custo de uma execução paralela é: Custo

56 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com56 O custo é considerado ótimo para um determinado algoritmo paralelo quando o custo da execução paralela é proporcional ao custo da execução seqüencial; O custo é considerado ótimo para um determinado algoritmo paralelo quando o custo da execução paralela é proporcional ao custo da execução seqüencial; Custo

57 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com57 Necessária para coordenar troca de informações (mensagens) entre tarefas; Necessária para coordenar troca de informações (mensagens) entre tarefas; Pode consumir tempo de processamento, pois um processador pode ter que ficar esperando o término de tarefas em outros processadores; Pode consumir tempo de processamento, pois um processador pode ter que ficar esperando o término de tarefas em outros processadores; Fator de redução da aceleração (speed-up), porque o tempo utilizado para esperar uma outra tarefa poderia ser utilizado para processamento. Fator de redução da aceleração (speed-up), porque o tempo utilizado para esperar uma outra tarefa poderia ser utilizado para processamento. Sincronização

58 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com58 Tempo utilizado para coordenar as tarefas paralelas, por exemplo: Tempo utilizado para coordenar as tarefas paralelas, por exemplo: Tempo para iniciar uma tarefa: Tempo para iniciar uma tarefa: identificação da tarefa; identificação da tarefa; procura de um processador para executá-la; procura de um processador para executá-la; carregamento da tarefa no processador; carregamento da tarefa no processador; carregamento de dados necessários à execução da tarefa; carregamento de dados necessários à execução da tarefa; inicialização da tarefa. inicialização da tarefa. Tempo para terminar uma tarefa; Tempo para terminar uma tarefa; Sincronização; Sincronização; Overhead de paralelismo

59 Sistemas Distribuídos Introdução a Sistemas Distribuídos 11/3/2016vladimir.professor@gmail.com59 São Paulo, 2011 Universidade Paulista (UNIP) Programação Paralela Prof. Msc. Vladimir Camelo vladimir.professor@gmail.com


Carregar ppt "Sistemas Distribuídos Introdução a Sistemas Distribuídos São Paulo, 2011 Universidade Paulista (UNIP) Programação."

Apresentações semelhantes


Anúncios Google