SlideShare uma empresa Scribd logo
1 de 10
Baixar para ler offline
1                                                                                              2
                                                                                                                                                  REDES DE COMPUTADORES
                                                                                                                                                             Programação Paralela


                                      UNIVERSIDADE PARANAENSE – UNIPAR                                                        Normalmente arquiteturas MIMD com memória compartilhada ou distribuída são criadas
                                      Reconhecida pela Portaria - MEC N.º 1580, de 09/11/93 – D.O.U. 10/11/93
                                          Mantenedora: Associação Paranaense de Ensino e Cultura – APEC                       para computar programas das mais diversas áreas da ciência.

                                                                                                                              Tais programas necessitam ser muito bem elaborados para explorar ao máximo os
                                                                                                                              recursos de uma máquina paralela.

                 Tópicos Especiais em Sistemas de Informação                                                                  Um algoritmo paralelo pode ser definido como um conjunto de processos (partes de um
                                                                                                                              programa) que podem ser executados simultaneamente e tais processos podem se
                                    Sistemas de Informação -                   4.o   / 2005
                                                                                                                              comunicar uns com os outros, a fim de resolver um determinado problema.

                                      Prof. Luiz Arthur Feitosa dos Santos                                                    Já um algoritmo seqüencial que é executado passo a passo de forma serial ou seqüencial
                                                                                                                              como foi definido durante a sua programação




                                                                                                                  1                                                                                              2
                                                                                                                                                                                             e-mail: luiz_arthur@unipar.br

                                                                                                                      3                                                                                              4
                               REDES DE COMPUTADORES                                                                                              REDES DE COMPUTADORES
                                            Programação Paralela                                                                                             Programação Paralela

                                                                                                                              Uma prática constantemente utilizada por programadores é a reutilização de algoritmos,
          Um fato de extrema importância na maioria dos sistemas paralelos, principalmente os que
                                                                                                                              pois se um algoritmo realiza uma função de forma eficiente, porque não utilizá-lo em
          exploram o paralelismo explicito (não em nível de instrução), é que o sistema paralelo em
                                                                                                                              outro programa que irá necessitar das funcionalidades deste algoritmo.
          si é a combinação de um algoritmo paralelo e uma arquitetura paralela na qual o algoritmo
          é implementado.
                                                                                                                              Esta técnica de reutilização também é normalmente empregada na computação paralela,
                                                                                                                              entretanto, muitos pesquisadores consideram que a melhor forma de se obter o
          Ou seja, para que um sistema paralelo atinja o seu objetivo principal, que é a melhora de
                                                                                                                              paralelismo ideal é reconstruindo o algoritmo inteiro, modelando-o para a arquitetura na
          desempenho na resolução de determinados problemas, é necessário alem de uma
                                                                                                                              qual ele será executado.
          arquitetura física composta por vários processadores um algoritmo que explore todo este
          potencial de arquitetura.
                                                                                                                              Sobre este problema Patterson comentou:
                                                                                                                                        “O maior obstáculo ao sucesso dos sistemas multiprocessadores não é o custo
          Pois nada adianta ter os recursos necessários para melhorar o desempenho se estes não
                                                                                                                                        dos processadores usados em sua arquitetura, nem os problemas na topologia
          forem devidamente utilizados.
                                                                                                                                        para conexão de redes, muito menos a indisponibilidade de linguagens de
                                                                                                                                        programação adequadas a tais sistemas; mas a grande dificuldade é o fato de
          Entretanto a tarefa de construir algoritmos paralelos ótimos, que empreguem da melhor
                                                                                                                                        que poucos programas de aplicação importantes têm sido reescritos para
          maneira possível todos os subsídios oferecidos pela arquitetura paralela não é nada fácil, e
                                                                                                                                        executar suas tarefas em sistemas multiprocessadores”.
          seja talvez uma das tarefas mais difíceis na construção de um sistema paralelo.                                                                                                  (PATTERSON, 2000, p. 416).

                                                                                                                  3                                                                                              4
                                                                                              e-mail: luiz_arthur@unipar.br                                                                  e-mail: luiz_arthur@unipar.br

Printed with FinePrint - purchase at www.fineprint.com
5                                                                                              6
                               REDES DE COMPUTADORES                                                                             REDES DE COMPUTADORES
                                           Programação Paralela                                                                             Programação Paralela

          Assim reutilização de algoritmos não é recomendável nem para arquiteturas paralelas                Aplicações Paralelas
          semelhantes, por exemplo, não se pode afirmar que um algoritmo projetado para ser
          executado em um computador contendo 8 processadores vai ser executado mais                         Os sistemas computacionais, em geral, são projetados com o propósito de agilizar a
          rapidamente em um sistema semelhante com 64 processadores, a menos que esse                        execução de uma determinada tarefa. Entretanto algumas aplicações, principalmente
          programa seja remodelado para esta arquitetura.                                                    científicas, requerem grande poder computacional. Algumas dessas aplicações podem
                                                                                                             consumir muito tempo de processamento, e em casos extremos podem se tornar
          Isso ocorre porque quanto maior a quantidade de processadores, maior será o esforço                impraticáveis devido ao longo tempo de computação.
          computacional para sincronizar os processos, e maior ainda será a utilização da rede de
          interconexão que interliga os processadores.                                                       Uma técnica que vem tendo muito destaque para melhorar o desempenho de tais
                                                                                                             aplicações é a exploração do paralelismo apresentado por essas aplicações. Pois a maioria
          Por mais absurdo que possa parecer é bem provável que um programa especificamente                  das aplicações possui algum nível de paralelismo, que pode ser explorado de maneira que
          projetado para ser executado em um computador com 8 processadores faça melhor uso                  o programa possa ter seu tempo de execução reduzido.
          desta arquitetura, do que de uma arquitetura com 64 processadores.

          Portanto, é fácil concluir que o programador, neste caso, tem que ser um especialista em
          hardware e software para tentar fazer um bom uso dos recursos de cada máquina paralela.


                                                                                                  5                                                                                              6
                                                                             e-mail: luiz_arthur@unipar.br                                                                   e-mail: luiz_arthur@unipar.br

                                                                                                      7                                                                                              8
                               REDES DE COMPUTADORES                                                                             REDES DE COMPUTADORES
                                           Programação Paralela                                                                             Programação Paralela

          Então aplicações paralelas fazem uso de múltiplos processadores para resolver um                   Conforme Grama a construção de um algoritmo paralelo segue basicamente os seguintes
          determinado problema, e isso é possível através da execução simultânea de diversos                 passos:
          passos que compõem o problema e podem ser executados de forma simultânea.
                                                                                                               Identificar pontos do programa que podem ser executadas de forma paralela;
          Isso permite que uma aplicação paralela faça uso de vários processadores, o que não
          ocorre em programas seqüenciais, que essencialmente executam conjuntos básicos de                    Distribuir as entradas e saídas de dados pertinentes à aplicação, bem como os dados
          passos a serem executados de forma seqüencial, sem nenhum nível de paralelismo.                    intermediários gerados durante a execução das tarefas e que estão associados ao
                                                                                                             programa;
          Mesmo com o possível benefício de redução do tempo de execução da aplicação, o uso do
          paralelismo requer alguns cuidados que não são necessários em aplicações seqüências.                 Gerenciar da melhor forma possível o acesso aos dados compartilhados pelos
                                                                                                             processadores, para execução de um dado problema. Diminuindo a comunicação entre
          Por exemplo, a aplicação paralela apesar de possuir uma semântica parecida com a                   processos;
          aplicação seqüencial deve tratar de aspectos inerentes às suas características paralelas tais
          como: definir quais processos podem ser executados de forma paralela e gerenciar de                  Sincronizar eficientemente os processadores nos mais diversos estágios de execução
          forma eficiente a sincronização e comunicação entre tais processos.                                que um programa paralelo possa vir a possuir, de forma que os processadores não fiquem
                                                                                                             com uma carga de trabalho muito elevada ou muito baixa.


                                                                                                  7                                                                                              8
                                                                             e-mail: luiz_arthur@unipar.br                                                                   e-mail: luiz_arthur@unipar.br

Printed with FinePrint - purchase at www.fineprint.com
9                                                                                                10
                              REDES DE COMPUTADORES                                                                          REDES DE COMPUTADORES
                                         Programação Paralela                                                                            Programação Paralela
          Para a construção de aplicações paralelas podem ser utilizados basicamente três tipos de
          ferramentas de programação :                                                                   É obvio que todas as ferramentas apresentadas possuem seus prós e contras.

            Compiladores: Fazem a paralelização de forma automática. Neste tipo de ferramenta o          O compilador paralelo facilita a programação e agiliza o desenvolvimento da aplicação,
          programa normalmente é construído de forma seqüencial. Ficando a cargo do próprio              mas normalmente não consegue fazer o uso ideal dos recursos fornecidos por cada
          compilador explorar o paralelismo da aplicação. Normalmente consegue-se um ganho de            arquitetura paralela.
          desempenho pequeno se comparado à exploração explicita do paralelismo, mas a
          construção do aplicativo exige o mínimo esforço do programador, já que este ira                Por sua vez as linguagens de programação paralelas conseguem um ótimo desempenho
          programar normalmente (de forma seqüencial), sem se preocupar em descobrir qual                em arquiteturas paralelas, entretanto esse tipo de prática exige que o programador aprenda
          trecho de código deve ser paralelizado e como isso será realizado.                             uma nova linguagem de programação, o que pode levar um tempo considerável e
                                                                                                         consumir um tempo precioso na construção da aplicação paralela.
            Extensões de paralelização: São normalmente bibliotecas que possuem primitivas de
          comunicações, que facilitam o gerenciamento dos processos existentes em aplicações             Desta forma a ferramenta que atualmente merece maior atenção são as extensões
          paralelas. Essas bibliotecas podem ser utilizadas a partir de linguagens de programação        paralelas, que podem ser usadas pelo programador em uma linguagem de programação já
          normalmente seqüenciais (C++, Fortran, Pascal, etc).                                           conhecida por ele, ficando a cargo dele apenas aprender como usar de forma eficiente as
                                                                                                         rotinas que possibilitam a programação paralela. Além de que esse tipo de ferramenta
            Linguagens de Programação Paralelas: Especialmente projetadas para serem usadas              permite uma melhor adaptação de códigos seqüenciais para códigos paralelos, e
          em ambientes paralelos, tais linguagens possibilitam a construção de aplicações bem            finalmente consegue explorar de forma eficiente todos os recursos de uma arquitetura
          estruturadas e possuem rotinas de gerenciamento de processos paralelos muito eficientes,       paralela.
          dinamizando desta forma a comunicação, sincronização e gerenciamento da aplicação
          paralela.                                                                          9                                                                                               10
                                                                         e-mail: luiz_arthur@unipar.br                                                                   e-mail: luiz_arthur@unipar.br

                                                                                                 11                                                                                               12
                              REDES DE COMPUTADORES                                                                          REDES DE COMPUTADORES
                                         Programação Paralela                                                                            Programação Paralela

              No que se refere a programação paralela alguns aspectos devem ser tratados:                    Decomposição/Particionamento
              Tarefas
                                                                                                             A decomposição de problemas em tarefas envolve o particionamento da aplicação. O
              Para que um programa obtenha um bom desempenho em uma arquitetura paralela, ou                 Particionamento é definido como um conjunto especifico de tarefas que irá resolver um
              melhor, em varias arquiteturas é necessário decompô-lo em um conjunto tarefas                  dado problema em um computador paralelo da maneira mais eficiente possível.
              (também conhecido como processos), que são unidades de programas bem definidas
              que fazem parte da aplicação principal.                                                        Existem dois métodos para se particionar tarefas:
              A execução simultânea de múltiplas tarefas para resolver um dado problema pode
                                                                                                                  •Particionamento Estático: Neste método as tarefas são particionadas durante a
              reduzir o tempo de execução.
                                                                                                                  programação e não em tempo de execução, desta forma cada processador recebe
              As tarefas podem ser executadas todas juntas ou em qualquer seqüência.                              sua carga de trabalho antes de iniciar a computação.
              Tarefas também podem apresentar dependência, e desta forma necessitam esperar que
                                                                                                                  •Particionamento Dinâmico: Neste método o particionamento é feito durante a
              outras tarefas sejam executadas para terminar sua própria tarefa.
                                                                                                                  execução do programa.




                                                                                            11                                                                                               12
                                                                         e-mail: luiz_arthur@unipar.br                                                                   e-mail: luiz_arthur@unipar.br

Printed with FinePrint - purchase at www.fineprint.com
13                                                                                          14
                             REDES DE COMPUTADORES                                                                       REDES DE COMPUTADORES
                                        Programação Paralela                                                                        Programação Paralela
                                                                                                       Escalonamento
           Escalonamento
                                                                                                       Sendo que no estático os processos e a ordem em que eles serão executados são
           Uma vez que o programa foi dividido em processos, cada processo pode ser executado          conhecidos antes da execução do programa, para se realizar um bom escalonamento
           em um processador diferente.                                                                estático é necessário conhecer o tempo de execução de cada tarefa bem como o tempo
                                                                                                       que cada unidade de processamento e seus recursos levaram para executar tal tarefa o
           A esse mapeamento entre processos e processadores dá se o nome de escalonamento, o          que não é nada fácil, outra dificuldade neste modelo, é que se uma unidade de
           qual tem por objetivo o aumento da utilização de recursos computacionais fornecidos         processamento parar de funcionar, o programa ira ser abortado, já que não há como
           pela arquitetura paralela.                                                                  fazer o re-escalonamento das tarefas, pois esse é estático.

           O escalonamento é comumente observado em Sistemas Operacionais, porem este é                No dinâmico os processos são atribuídos aos seus processadores durante a execução.
           conhecido como escalonamento local, e refere-se ao problema de atribuição das fatias        Neste ambiente não se faz necessário conhecer totalmente o ambiente no qual o
           de tempo (time-slices) de um processador aos processos.                                     programa paralelo ira ser executado, já que normalmente o programa ira se adaptar e
                                                                                                       moldar a arquitetura paralela, o que oferece uma melhor utilização dos processadores
           O escalonamento citado aqui faz referência a um escalonamento global aplicável              disponíveis, incrementando desta forma a flexibilidade quanto ao aproveitamento do
           geralmente em Sistemas Distribuídos ou Paralelos.                                           número de processadores que compõem a arquitetura.

           O escalonamento da mesma forma que o particionamento, também pode ser estático ou           Se o problema se adapta a qualquer número de processadores (1-n) então o algoritmo é
           dinâmico                                                                                    chamado de escalável.
                                                                                          13                                                                                          14
                                                                       e-mail: luiz_arthur@unipar.br                                                               e-mail: luiz_arthur@unipar.br

                                                                                                  15                                                                                          16
                             REDES DE COMPUTADORES                                                                       REDES DE COMPUTADORES
                                        Programação Paralela                                                                        Programação Paralela
           Granularidade                                                                               Tamanho do Problema

           O número e o tamanho das tarefas decompostas em uma dada aplicação determinam a             Outro aspecto que deve ser observado é a relação entre o número de processadores e o
           granularidade do problema. Desta forma, granularidade refere-se ao tamanho de uma           tamanho do problemae o programador deve estar atento a esse fator.
           tarefa em um processador e a performance de um algoritmo paralelo depende da
           granularidade do programa.                                                                  Na verdade o tamanho do problema já foi um dos maiores empecilhos enfrentados por
                                                                                                       sistemas computacionais, já que em 1967 Amdahl’s definiu que em um dado problema
           Se um programa for dividido em um pequeno número de grandes tarefas (chamada de             de tamanho fixo, o paralelismo não teria grandes ganhos de desempenho, pois logo
           granularidade-grossa) a tendência é que esse algoritmo seja mais adequado para              atingiria o pico de ganho de desempenho e não continuaria a aumentar o desempenho
           arquiteturas com um número pequeno de processadores e desta forma se torne uma              conforme fosse crescendo o número de processadores.
           aplicação com um nível de paralelização muito baixo.
                                                                                                       A esta afirmação se deu o nome de lei de Amdahl’s, tal lei causou certo marasmo
           Já se um programa for dividido em um grande número de pequenas tarefas                      dentre as pesquisas de sistemas paralelos, até que em 1988 Gustafson, observou que
           (granularidade-fina), o programa terá um nível de paralelização maior, entretanto é         Amdahl’s assume que o número de processador é independente do tamanho do
           bem provável que neste caso o programa faça maior uso da rede interconexão, podendo         problema, o que normalmente nunca é o caso. Na prática o tamanho do problema e
           desta forma perder desempenho devido ao alto grau de comunicação requerido entre as         escalar ao número de processadores. Quando é dado mais poder computacional, o
           tarefas. O programador de aplicações paralelas deve balancear a granularidade da            problema geralmente se expande para fazer uso das facilidades da arquitetura tal
           aplicação tentando manter um alto coeficiente de paralelização e da mesma forma             descoberta permitiu que os estudos sobre sistemas paralelos tomassem novos rumos.
           tentando reduzir a necessidade de comunicação entre as tarefas.
                                                                                          15                                                                                          16
                                                                       e-mail: luiz_arthur@unipar.br                                                               e-mail: luiz_arthur@unipar.br

Printed with FinePrint - purchase at www.fineprint.com
17                                                                                        18
                             REDES DE COMPUTADORES                                                                        REDES DE COMPUTADORES
                                        Programação Paralela                                                                         Programação Paralela
           Modelos de algoritmos paralelos
                                                                                                         Data Parallelism
           Além de escolher alguma ferramenta de programação, é necessário ter-se em mente               Explora os dados a serem processados pelo programa paralelo.
           como o algoritmo será paralelizado, principalmente se o desenvolvedor do aplicativo
           escolher uma ferramenta na qual necessite paralelizar a aplicação de forma direta como        Cada tarefa executa operações semelhantes sobre dados diferentes. Este modelo
           ferramentas de extensão e linguagens paralelas.                                               emprega balanceamento de carga de trabalho estático o que normalmente garante um
                                                                                                         bom balanceamento de carga.
           Modelos de algoritmos paralelos são formas de estruturar algoritmos paralelos através         O paralelismo de dados apresenta ótimos resultados, pois geralmente não requer muita
           de técnicas de decomposição, mapeamento e estratégias de minimização das interações           comunicação o que diminui o overhead e o tempo gasto com a comunicação, portanto
           entre as tarefas.                                                                             este modelo apresenta ganhos de desempenho exponenciais (quanto mais
                                                                                                         processadores melhor), e quanto maior a entrada de dados melhor é seu desempenho.
                                                                                                          Um exemplo desta prática é um algoritmo de multiplicação de matrizes no qual as
                                                                                                         colunas e as linhas das matrizes a serem multiplicadas são distribuídas entre os
                                                                                                         diversos processadores que compõem a arquitetura paralela, e cada processador
                                                                                                         executa o mesmo código para multiplicar essas linhas e colunas, completando desta
                                                                                                         forma a aplicação.


                                                                                            17                                                                                           18
                                                                         e-mail: luiz_arthur@unipar.br                                                               e-mail: luiz_arthur@unipar.br

                                                                                                    19                                                                                        20
                             REDES DE COMPUTADORES                                                                        REDES DE COMPUTADORES
                                        Programação Paralela                                                                         Programação Paralela

            Task Graph                                                                                   Work Pool
            Neste modelo o inter-relacionamento entre as tarefas do problema é utilizado para            Também conhecido como Task Pool, é caracterizado por um mapeamento dinâmico
            agrupar os dados relacionados.                                                               entre tarefas e processadores visando desta forma um alto grau de balanceamento de
                                                                                                         carga entre os processadores.
            Procurando-se deixar os dados que se inter-relacionam sempre onde possam ser
            acessados de forma mais rápida (por exemplo, na memória local), facilitando a                Tal mapeamento pode ser centralizado ou descentralizado. As tarefas podem ser
            comunicação ou pelo menos reduzindo o custo da comunicação entre os processos.               armazenadas em listas de prioridade, tabelas hash, ou em árvores. As tarefas podem ser
                                                                                                         estáticas ou dinâmicas, desta forma um processo pode gerar uma tarefa e coloca-la
            O modelo Task Graph é utilizado para resolver problemas nos quais vários dados estão
                                                                                                         numa lista global (work pool) para ser executada.
            associados e as tarefas necessitam interagir entre elas, fazendo uso desses dados.
                                                                                                         Em arquiteturas de passagem de mensagem esse modelo é normalmente usado quando
            Este tipo de modelo é mais facilmente implementado em arquiteturas de memória
                                                                                                         a quantia de dados associados à tarefa é relativamente pequena se comparada com a
            compartilhada, mas pode ser implementado em arquiteturas de memória distribuída
                                                                                                         computação associada com as tarefas.
            também. Desta forma um programa paralelo pode ser representado por um grafo de
            tarefas (task graph) nos quais os nós representam módulos e arestas indicam a                O mesmo exemplo da multiplicação de matriz pode ser utilizado aqui, mas neste caso
            necessidade de comunicação entre esses nós.                                                  os processadores irão buscar as tarefas a serem executadas (as linhas e colunas) em
                                                                                                         uma lista.
            Um exemplo de aplicação que utiliza este modelo é o método de ordenação quicksort.


                                                                                            19                                                                                           20
                                                                         e-mail: luiz_arthur@unipar.br                                                               e-mail: luiz_arthur@unipar.br

Printed with FinePrint - purchase at www.fineprint.com
21                                                                                          22
                             REDES DE COMPUTADORES                                                                         REDES DE COMPUTADORES
                                         Programação Paralela                                                                         Programação Paralela

            Processor Farm                                                                                Pipeline ou Produtor-Consumidor
            Neste modelo existe um processador principal (também chamado de “mestre”) que é               Este modelo segue o modelo de pipeline empregado pelos processadores, ou seja, um
            responsável por gerenciar um grupo de processadores (chamados de “escravos”), no              fluxo de dados é passado através de uma sucessão estágios.
            qual cada escravo processa assincronamente tarefas submetidas pelo mestre. O mestre
                                                                                                          Cada estágio executa uma tarefa diferente sobre este fluxo de dados. Essa execução
            gerencia o trabalho dos escravos e faz o balanceamento de carga.
                                                                                                          simultânea de diferentes tarefas sobre um fluxo de dados também é chamado de stream
            Este modelo é muito utilizado tanto por arquiteturas de memória compartilhada quanto          parallelism.
            por memória distribuída, entretanto é necessário ter-se cuidado para que o processador
                                                                                                          Cada processo no pipeline pode ser visto como o consumidor de uma seqüência de
            mestre não se torne um gargalo neste modelo.
                                                                                                          dados do processo que o precede e um produtor de dados para o processo seguinte do
            Utilizando a mesma aplicação de multiplicação de matrizes, neste método um                    pipeline, daí o nome Produtor-Consumidor.
            processador ficará responsável por distribuir as colunas e linhas a serem multiplicadas.
                                                                                                          Utilizando mais uma vez o exemplo da multiplicação de matriz, neste método cada
                                                                                                          estágio seria responsável por uma operação, sendo, o primeiro estágio responsável pela
                                                                                                          entrada de dados, o segundo pela multiplicação, o seguinte pela soma e o último pela
                                                                                                          saída, terminando desta forma todos os estágios do pipeline necessários por essa
                                                                                                          aplicação.


                                                                                              21                                                                                          22
                                                                          e-mail: luiz_arthur@unipar.br                                                               e-mail: luiz_arthur@unipar.br

                                                                                                   23                                                                                          24
                             REDES DE COMPUTADORES                                                                         REDES DE COMPUTADORES
                                         Programação Paralela                                                                         Programação Paralela

            Em alguns casos mais de um modelo de programação paralela pode ser aplicado para a            Em comparação com algoritmos síncronos, os assíncronos requerem menos acesso à
            resolução de um problema. Um modelo híbrido pode ser construído aplicando vários              memória compartilhada, o que reduz a disputa por memória.
            modelos de forma hierárquica ou aplicando-se múltiplos modelos de forma seqüencial
            para diferentes fases do algoritmo.                                                           Em geral, algoritmos assíncronos são mais eficientes devido aos processos nunca
                                                                                                          esperam outro processo.
            Ainda no que se refere a modelos de programação introduz mais dois modelos que
            podem ser considerados como modelos básicos para os modelos discutidos
                                                                                                          Isso normalmente diminui o tempo de execução o resultado dos processos que são
            anteriormente: Síncrona e Asincrona.
                                                                                                          executados mais rapidamente pode ser usado para eliminar processos mais lentos;
            -Na estrutura síncrona (Partitioning Algorithms) dois ou mais processos estão ligados         menos competição por memória.
            por um ponto comum de execução usado com propósitos de sincronização. Um
            processo irá atingir um ponto de no qual terá de esperar por outros (um ou mais)              Entretanto algoritmos assíncronos são difíceis de programar. Sua análise é mais
            processos. Após os processos terem alcançado o ponto de sincronização, eles podem             complexa que a de um algoritmo síncrono.
            continuar a execução do programa até o próximo ponto de sincronização.
                                                                                                          Sendo ainda às vezes até mesmo impossível de resolver um dado problema de maneira
            -A estrutura assíncrona permite que os processos pertencentes ao algoritmo trabalhem
                                                                                                          assíncrona.
            com o dado mais recente fornecido pela execução de outros processos (um ou mais).
            Quando um processo termina um estágio este atualiza as informações necessárias e
            inicia o próximo estágio.

                                                                                              23                                                                                          24
                                                                          e-mail: luiz_arthur@unipar.br                                                               e-mail: luiz_arthur@unipar.br

Printed with FinePrint - purchase at www.fineprint.com
25                                                                                           26
                             REDES DE COMPUTADORES                                                                        REDES DE COMPUTADORES
                                        Programação Paralela                                                                           Programação Paralela

            AVALIAÇÃO DE DESEMPENHO                                                                      AVALIAÇÃO DE DESEMPENHO

            Quando um sistema paralelo utiliza dois processadores, logo se cria a expectativa de         Uma questão muito importante a ser abordada por qualquer pesquisador de sistemas
            que qualquer programa executado nesta máquina será processado duas vezes mais                paralelos, é o de como verificar e explorar o ganho de performance em um sistema
            rápido do que numa máquina monoprocessada.                                                   paralelo, já que a performance em sistemas paralelos é o resultado de interações
                                                                                                         complexas entre recursos de hardware e software.
            Porém, isso não é verdade. Para que a execução paralela atinja o máximo de
            desempenho, o código do programa originalmente desenvolvido de forma seqüencial              Envolvendo características de aplicações, tal como, estrutura do algoritmo, parâmetros
            deve, de alguma maneira, ser 100% paralelizado.                                              de entrada, tamanho do problema e físicas, como, número de processador, taxas de
                                                                                                         transferência da rede de interconexão, etc.
            A lei de Amdahl sugere que é muito difícil alcançar uma performance de pico esperada
            para as arquiteturas paralelas mas, ainda que não se consiga paralelizar totalmente um       Todos esses aspectos determinam como a aplicação explora os recursos disponíveis em
            algoritmo e alcançar sempre a performance ideal em sistemas paralelos, é possível            arquiteturas paralelas e consequentemente como influenciam na performance.
            atingir ganhos de desempenhos consideráveis paralelizando os núcleos de programas
            (parte principal do programa na qual se concentra a maior parte do esforço
            computacional) de forma que o programa paralelo obtenha ganhos de desempenho
            consideráveis.

                                                                                             25                                                                                           26
                                                                         e-mail: luiz_arthur@unipar.br                                                                 e-mail: luiz_arthur@unipar.br

                                                                                                  27                                                                                           28
                             REDES DE COMPUTADORES                                                                        REDES DE COMPUTADORES
                                        Programação Paralela                                                                           Programação Paralela

            AVALIAÇÃO DE DESEMPENHO                                                                      Medidas em computação paralela faz referência à execução de uma aplicação paralela
                                                                                                         com P processadores, onde K diferentes atividades e N regiões de códigos podem estar
            Uma boa maneira de se conseguir uma ótima interação entre hardware e software e              sendo monitoradas.
            atingir um bom desempenho usando sistemas paralelos é analisando o comportamento
            de cada atributo da arquitetura frente a um conjunto de algoritmos (tais algoritmos são      Esses parâmetros podem ser medidos analisando diferentes parâmetros, por exemplo,
            denominados Benchmarks) que teste tal arquitetura da maneira mais completa possível.         medir atividades de computação, comunicação, aceso a memória, I/O (Input/Output –
                                                                                                         entrada/saída) ou regiões do código como loops, rotinas, etc.
            Desta forma faz-se necessárias ferramentas para analisar de forma concisa como um
            algoritmo faz uso da arquitetura paralela. Softwares de analise e métricas de                Vários parâmetros podem ser medidos em arquiteturas paralelas:
            performance são divididos em estáticos e dinâmicos.                                           Parâmetros de tempo;
                                                                                                          Parâmetros quantitativos como:
            Medidas estáticas incluem: número de nós, grau de sincronização, tamanho do caminho                Número de operações de entrada e saída (I/O);
                                                                                                               Número de bytes lidos e escritos (read/written);
            a ser percorrido, caminho máximo que um nó de entrada tem de fazer a um nó de saída,
                                                                                                               Número de acessos à memória;
            tamanho do problema, etc.                                                                          Número de perdas de cache (cache misses);
                                                                                                               Número de bytes enviados e recebidos (sent/received);
            Métricas dinâmicas são: tempo de computação total entre os processadores, tempo de
            comunicação, tempo de execução, volume de comunicação, volume de entrada/saída,              Então as propriedades de métricas de sistemas paralelos devem ser extensamente
            entre outros.                                                                                estudadas, pois elas influenciam diretamente no desempenho de uma aplicação
                                                                                             27                                                                                           28
                                                                         e-mail: luiz_arthur@unipar.br                                                                 e-mail: luiz_arthur@unipar.br

Printed with FinePrint - purchase at www.fineprint.com
29                                                                                         30
                            REDES DE COMPUTADORES                                                                     REDES DE COMPUTADORES
                                       Programação Paralela                                                                      Programação Paralela

            O tamanho do problema já foi um dos maiores empecilhos enfrentados por sistemas           Elapsed Time
            computacionais, já que em 1967 Amdahl’s definiu que em um dado problema de
            tamanho fixo, o paralelismo não teria grandes ganhos de desempenho, pois logo             Existem diversas medidas para a caracterização de performance de um sistema
            atingiria o pico de ganho de desempenho e não continuaria a aumentar o desempenho         paralelo, mas as que mais se destacam são: tempo de execução, speedup e eficiência.
            conforme fosse crescendo o número de processadores.
                                                                                                      Historicamente o tempo de execução ou o tempo decorrido (elapsed time) é uma das
            A esta afirmação se deu o nome de lei de Amdahl’s, tal lei causou certo marasmo           métricas mais populares para verificar a performance em um dado sistema.
            dentre as pesquisas de sistemas paralelos, até que em 1988 Gustafson, observou que
            Amdahl’s assume que o número de processador é independente do tamanho do                  O tempo de execução serial é o tempo decorrido do inicio da execução do programa até
            problema, o que normalmente nunca é o caso.                                               o seu termino em um computador seqüencial.

            Na prática o tamanho do problema e escalar ao número de processadores. Quando é           Já o tempo de execução paralelo é o tempo decorrente do momento em que o programa
            dado mais poder computacional, o problema geralmente se expande para fazer uso das        inicialmente é executado na arquitetura paralela até o momento que o ultimo
            facilidades da arquitetura, tal descoberta permitiu que os estudos sobre sistemas         processador empregado para a resolução do problema termina a execução.
            paralelos tomassem novos rumos.




                                                                                         29                                                                                         30
                                                                      e-mail: luiz_arthur@unipar.br                                                              e-mail: luiz_arthur@unipar.br

                                                                                              31                                                                                         32
                            REDES DE COMPUTADORES                                                                     REDES DE COMPUTADORES
                                       Programação Paralela                                                                      Programação Paralela

            Speedup                                                                                   Speedup

            Em conjunto com o tempo decorrido existe uma métrica denominada speedup                   O speedup absoluto é definido como o tempo decorrido na execução seqüencial do
            (aceleração ou ganho de desempenho) que é extremamente utilizada em bibliografias         melhor algoritmo dividido pelo tempo de execução decorrente no algoritmo paralelo.
            sobre arquitetura paralela.
                                                                                                      Já speedup relativo é definido como o tempo decorrente de um algoritmo paralelo em
            O speedup é o produto do tempo decorrido de uma arquitetura pela outra, um bom            um processador e o tempo decorrente do mesmo algoritmo paralelo em N
            motivo para se utilizar o speedup é que ele combina todos os efeitos típicos da           processadores.
            computação paralela e apresenta resultados gráficos
                                                                                                      A razão para se usar speedup relativo é que a performance de algoritmos paralelos
            Existem duas modalidades bem definidas para se medir o speedup, que são:                  varia de acordo com o número de processadores disponíveis em uma arquitetura e
                                                                                                      comparando o mesmo algoritmo com vários números de processadores é possível
            •Speedup absoluto;                                                                        verificar de forma mais sincera a degradação do uso do paralelismo, do que se usando
            •Speedup Relativo.                                                                        o speedup absoluto que faz a comparação com um algoritmo serial, o que pode não ser
                                                                                                      tão imparcial.



                                                                                         31                                                                                         32
                                                                      e-mail: luiz_arthur@unipar.br                                                              e-mail: luiz_arthur@unipar.br

Printed with FinePrint - purchase at www.fineprint.com
33                                                                                           34
                                   REDES DE COMPUTADORES                                                                                                           REDES DE COMPUTADORES
            Speedup                                       Programação Paralela                                                                                                Programação Paralela

            Existem vários parâmetros que podem ser expressos através do speedup, os mais                                                         Speedup
            significantes são o speedup de tamanho de problema fixo (fixed-size speedup) que foi
            descrito por Amdahl’s, e o speedup de tempo fixo (fixed-time speedup), descrito por                                                   Na pratica pode-se definir a aceleração (speedup) ou ganho que sofre cada arquitetura,
            Gustafson’s que é o mais usado atualmente.                                                                                            medindo-se o tempo de execução na arquitetura seqüencial dividido pelo tempo
                                                                                                                                                  consumido pela execução na arquitetura paralela, para executar o mesmo problema,
                      Tamanho do
                                   W1   W1    W1    W1
                                                                              Tempo de
                                                                                          TW1                                                     isso para o speedup absoluto. No caso do speedup relativo é só colocar no lugar do
                       Problema                                               Execução
                                                                                                TW1
                                                                                                                                                  tempo de execução do programa seqüencial o tempo do algoritmo paralelo executado
                                                                                                      TW1                                         com apenas um processador.
                                                                                                            TW1
                                   WN   WN    WN    WN
                                                                                          TWN WTN WTN WTN

                                   1    2     3     4                                     1     2     3     4
                                                                                                                                                                                   TempoExecuçãoSeqüencial
                                   Número processadores                                   Número processadores
                                                                                                                                                                   Aceleração =
                                                          Amdahl’s - fixed-size speedup                                                                                             TempoExecuçãoParalelo
                                                                                                                                                                                  SPEEDUP Absoluto
                                                    W1


                      Tamanho do
                                              W1
                                                                              Tempo de
                                                                                                                                                                                TempoExecuçãoParalelo1
                       Problema
                                        W1
                                                                              Execução
                                                                                                                                                                Aceleração =
                                   W1                                                     TW1 TW1 WT1 WT1
                                                                                                                                                                                TempoExecuçãoParalelo N
                                   WN   WN    WN    WN
                                                                                          WTN TWN WTN WTN                                                                           SPEEDUP Relativo
                                   1    2     3     4                                     1     2     3     4
                                                                                                                                     33                                                                                           34
                                   Número processadores                                   Número processadores

                                                            Gustafson - fixed-time speedup                        e-mail: luiz_arthur@unipar.br                                                               e-mail: luiz_arthur@unipar.br

                                                                                                                                          35                                                                                           36
                                   REDES DE COMPUTADORES                                                                                                           REDES DE COMPUTADORES
                                                          Programação Paralela                                                                                                Programação Paralela

            Eficiência                                                                                                                            Eficiência

            Outra medida que pode ser empregada no estudo de arquiteturas paralelas e é derivada                                                  Uma pergunta natural então é: qual é o limite para se aumentar o número de
            do speedup é a eficiência. Eficiência é uma medida da fração de tempo para o qual um                                                  processadores proporcionalmente ao tamanho do problema?
            processador é realmente usado. Em sistemas paralelos ideais o speedup é igual ao
            número de processadores e a eficiência é igual a um. Na pratica o speedup é menor que                                                 Isso depende da arquitetura, mas se o tamanho do problema é constante enquanto o
            o número de processadores e a eficiência fica entre zero e um.                                                                        número de processadores aumenta a eficiência apresenta quedas, por causa do
                                                                                                                                                  acréscimo de overhead (controle de comunicação entre os processadores) causado pelo
            A analise de eficiência permite determinar a melhor combinação de algoritmo e                                                         número de processadores.
            arquitetura para um problema.
                                                                                                                                                  Já se o tamanho do problema aumenta enquanto o número de processadores é constante
            A eficiência relata o tamanho do problema e o número de processadores requeridos                                                      então a eficiência aumenta (no caso sistemas paralelos escalares) devido ao baixo
            para manter o sistema eficiente, e isso ira ajudar a determinar a escalabilidade do                                                   overhead é insignificante perto da computação do problema.
            sistema, sua velocidade e largura de banda da rede de comunicação.
                                                                                                                                                  Desta forma pode-se manter a eficiência desde que se aumente de forma proporcional o
            Existe um referencia direta entre o número de processadores, tamanho do problema e a                                                  tamanho do problema. É claro que é muito difícil encontrar a relação exata entre o
            eficiência, de forma que se for aumentado o número de processadores a eficiência será                                                 tamanho do problema ideal para cada arquitetura, já que o problema pode estar
            reduzida, e aumentando o tamanho do problema é aumentada à eficiência, desta forma                                                    associado a inúmeros aspectos de hardware e software.
            se for aumentado ambos a eficiência será constante.                            35                                                                                                                                     36
                                                                                                                  e-mail: luiz_arthur@unipar.br                                                               e-mail: luiz_arthur@unipar.br

Printed with FinePrint - purchase at www.fineprint.com
37
                             REDES DE COMPUTADORES
                                        Programação Paralela

            Eficiência

            A eficiência é considerada um método analítico que investiga a escalabilidade dos
            algoritmos.

            Tal métrica é obtida pela formula E = S/p, sendo S o speedup e p o número de
            processadores.

            Portanto o número processadores deve se escolhido de forma a maximizar a eficiência
            e o speedup da arquitetura.

            Cada algoritmo paralelo tem um inerente aumento de concorrência entre os
            processadores que determina o número máximo de processadores que podem ser
            simultaneamente usado durante a resolução de um dado tamanho do problema.




                                                                                            37
                                                                         e-mail: luiz_arthur@unipar.br




Printed with FinePrint - purchase at www.fineprint.com

Mais conteúdo relacionado

Mais procurados

Algoritmos - Aula 03 - Necessidade Do Uso da Logica
Algoritmos - Aula 03 - Necessidade Do Uso da LogicaAlgoritmos - Aula 03 - Necessidade Do Uso da Logica
Algoritmos - Aula 03 - Necessidade Do Uso da LogicaRodrigo Kiyoshi Saito
 
Projetos de algoritmos com implementações em pascal e c (nivio ziviani, 4ed)
Projetos de algoritmos com implementações em pascal e c (nivio ziviani, 4ed)Projetos de algoritmos com implementações em pascal e c (nivio ziviani, 4ed)
Projetos de algoritmos com implementações em pascal e c (nivio ziviani, 4ed)CriatividadeZeroDocs
 
Atps paradigmas da linguagem
Atps paradigmas da linguagemAtps paradigmas da linguagem
Atps paradigmas da linguagemRafael Cianci
 
Linguagem c wellington telles - aula 01
Linguagem c   wellington telles - aula 01Linguagem c   wellington telles - aula 01
Linguagem c wellington telles - aula 01profwtelles
 

Mais procurados (6)

Cap02
Cap02Cap02
Cap02
 
Algoritmos - Aula 03 - Necessidade Do Uso da Logica
Algoritmos - Aula 03 - Necessidade Do Uso da LogicaAlgoritmos - Aula 03 - Necessidade Do Uso da Logica
Algoritmos - Aula 03 - Necessidade Do Uso da Logica
 
Logica usando c_-_aula_1
Logica usando c_-_aula_1Logica usando c_-_aula_1
Logica usando c_-_aula_1
 
Projetos de algoritmos com implementações em pascal e c (nivio ziviani, 4ed)
Projetos de algoritmos com implementações em pascal e c (nivio ziviani, 4ed)Projetos de algoritmos com implementações em pascal e c (nivio ziviani, 4ed)
Projetos de algoritmos com implementações em pascal e c (nivio ziviani, 4ed)
 
Atps paradigmas da linguagem
Atps paradigmas da linguagemAtps paradigmas da linguagem
Atps paradigmas da linguagem
 
Linguagem c wellington telles - aula 01
Linguagem c   wellington telles - aula 01Linguagem c   wellington telles - aula 01
Linguagem c wellington telles - aula 01
 

Semelhante a Tópicos - Computacao Paralela Programacao 2 (Visão geral)

Tópicos - Computacao Paralela Introdução
Tópicos - Computacao Paralela IntroduçãoTópicos - Computacao Paralela Introdução
Tópicos - Computacao Paralela IntroduçãoLuiz Arthur
 
Gerencia memoria simulador
Gerencia memoria simuladorGerencia memoria simulador
Gerencia memoria simuladormarcosfon
 
Aula - SISTEMAS OPERACIONAIS - Prof. Gabriel.pptx
Aula - SISTEMAS OPERACIONAIS - Prof. Gabriel.pptxAula - SISTEMAS OPERACIONAIS - Prof. Gabriel.pptx
Aula - SISTEMAS OPERACIONAIS - Prof. Gabriel.pptxgabrieloliveiramarti3
 
Plano de projeto cafis
Plano de projeto cafisPlano de projeto cafis
Plano de projeto cafisJonathas Silva
 
Ementa informática 2011
Ementa informática 2011Ementa informática 2011
Ementa informática 2011Willian Ribeiro
 
Map reduce novas abordagens para o processo de datamining em grandes volumn...
Map reduce   novas abordagens para o processo de datamining em grandes volumn...Map reduce   novas abordagens para o processo de datamining em grandes volumn...
Map reduce novas abordagens para o processo de datamining em grandes volumn...João Gabriel Lima
 
Lista exercicios algoritmos
Lista exercicios algoritmosLista exercicios algoritmos
Lista exercicios algoritmosslashmelhor
 
Apresentação final
Apresentação finalApresentação final
Apresentação finalvalmon
 
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosSistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosCharles Fortes
 
Caracterizacao de sistemas distribuidos
Caracterizacao de sistemas distribuidosCaracterizacao de sistemas distribuidos
Caracterizacao de sistemas distribuidosPortal_do_Estudante_SD
 
Relatório final so
Relatório final soRelatório final so
Relatório final soAmedy Caisse
 
Sistemas Operacionais - Introducao
Sistemas Operacionais - IntroducaoSistemas Operacionais - Introducao
Sistemas Operacionais - IntroducaoLuiz Arthur
 
Algoritmo estruturado
Algoritmo estruturadoAlgoritmo estruturado
Algoritmo estruturadodasko
 

Semelhante a Tópicos - Computacao Paralela Programacao 2 (Visão geral) (20)

Tópicos - Computacao Paralela Introdução
Tópicos - Computacao Paralela IntroduçãoTópicos - Computacao Paralela Introdução
Tópicos - Computacao Paralela Introdução
 
Curso openmp
Curso openmpCurso openmp
Curso openmp
 
Progeto pim ii
Progeto pim iiProgeto pim ii
Progeto pim ii
 
Gerencia memoria simulador
Gerencia memoria simuladorGerencia memoria simulador
Gerencia memoria simulador
 
Aula - SISTEMAS OPERACIONAIS - Prof. Gabriel.pptx
Aula - SISTEMAS OPERACIONAIS - Prof. Gabriel.pptxAula - SISTEMAS OPERACIONAIS - Prof. Gabriel.pptx
Aula - SISTEMAS OPERACIONAIS - Prof. Gabriel.pptx
 
Plano de projeto cafis
Plano de projeto cafisPlano de projeto cafis
Plano de projeto cafis
 
Ementa informática 2011
Ementa informática 2011Ementa informática 2011
Ementa informática 2011
 
MapReduce
MapReduceMapReduce
MapReduce
 
Map reduce novas abordagens para o processo de datamining em grandes volumn...
Map reduce   novas abordagens para o processo de datamining em grandes volumn...Map reduce   novas abordagens para o processo de datamining em grandes volumn...
Map reduce novas abordagens para o processo de datamining em grandes volumn...
 
Lista exercicios algoritmos
Lista exercicios algoritmosLista exercicios algoritmos
Lista exercicios algoritmos
 
Cap02
Cap02Cap02
Cap02
 
Cap02
Cap02Cap02
Cap02
 
Apresentação final
Apresentação finalApresentação final
Apresentação final
 
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e ExercíciosSistemas Operacionais - Aula 4 - Revisão e Exercícios
Sistemas Operacionais - Aula 4 - Revisão e Exercícios
 
Programação de robo
Programação de roboProgramação de robo
Programação de robo
 
Caracterizacao de sistemas distribuidos
Caracterizacao de sistemas distribuidosCaracterizacao de sistemas distribuidos
Caracterizacao de sistemas distribuidos
 
Relatório final so
Relatório final soRelatório final so
Relatório final so
 
Lamport
LamportLamport
Lamport
 
Sistemas Operacionais - Introducao
Sistemas Operacionais - IntroducaoSistemas Operacionais - Introducao
Sistemas Operacionais - Introducao
 
Algoritmo estruturado
Algoritmo estruturadoAlgoritmo estruturado
Algoritmo estruturado
 

Mais de Luiz Arthur

Pint of Science - Cibersegurnça x ciberameaças: Até onde você está seguro?
Pint of Science - Cibersegurnça x ciberameaças: Até onde você está seguro?Pint of Science - Cibersegurnça x ciberameaças: Até onde você está seguro?
Pint of Science - Cibersegurnça x ciberameaças: Até onde você está seguro?Luiz Arthur
 
Desafios da cibersegurança - ontem, hoje e amanhã
Desafios da cibersegurança - ontem, hoje e amanhãDesafios da cibersegurança - ontem, hoje e amanhã
Desafios da cibersegurança - ontem, hoje e amanhãLuiz Arthur
 
Slides - Uma abordagem autonômica para mitigar ciberataques em redes de compu...
Slides - Uma abordagem autonômica para mitigar ciberataques em redes de compu...Slides - Uma abordagem autonômica para mitigar ciberataques em redes de compu...
Slides - Uma abordagem autonômica para mitigar ciberataques em redes de compu...Luiz Arthur
 
Uma Arquitetura Autonômica para Detecção e Reação a Ameaças de Segurança em R...
Uma Arquitetura Autonômica para Detecção e Reação a Ameaças de Segurança em R...Uma Arquitetura Autonômica para Detecção e Reação a Ameaças de Segurança em R...
Uma Arquitetura Autonômica para Detecção e Reação a Ameaças de Segurança em R...Luiz Arthur
 
Detecção de alertas de segurança em redes de computadores usando redes sociai...
Detecção de alertas de segurança em redes de computadores usando redes sociai...Detecção de alertas de segurança em redes de computadores usando redes sociai...
Detecção de alertas de segurança em redes de computadores usando redes sociai...Luiz Arthur
 
Evaluating the Utilization of Twitter Messages as a Source of Security Alerts
Evaluating the Utilization of Twitter Messages as a Source of Security AlertsEvaluating the Utilization of Twitter Messages as a Source of Security Alerts
Evaluating the Utilization of Twitter Messages as a Source of Security AlertsLuiz Arthur
 
Análise de Mensagens de Segurança Postadas no Twitter
Análise de Mensagens de Segurança Postadas no TwitterAnálise de Mensagens de Segurança Postadas no Twitter
Análise de Mensagens de Segurança Postadas no TwitterLuiz Arthur
 
match making e propaganda na web
match making e propaganda na webmatch making e propaganda na web
match making e propaganda na webLuiz Arthur
 
Mineração de dados no Gmail e Facebook
Mineração de dados no Gmail e FacebookMineração de dados no Gmail e Facebook
Mineração de dados no Gmail e FacebookLuiz Arthur
 
Invasao kernel.org
Invasao kernel.orgInvasao kernel.org
Invasao kernel.orgLuiz Arthur
 
Núcleo do Linux (Kernel Linux)
Núcleo do Linux (Kernel Linux)Núcleo do Linux (Kernel Linux)
Núcleo do Linux (Kernel Linux)Luiz Arthur
 
Palestra Ferramentas de Segurança Open Source v.2
Palestra Ferramentas de Segurança Open Source v.2Palestra Ferramentas de Segurança Open Source v.2
Palestra Ferramentas de Segurança Open Source v.2Luiz Arthur
 
Palestra mau uso da tecnologia
Palestra mau uso da tecnologiaPalestra mau uso da tecnologia
Palestra mau uso da tecnologiaLuiz Arthur
 
UTFPR-inventario-patrimonio-laboratorio-e105
UTFPR-inventario-patrimonio-laboratorio-e105UTFPR-inventario-patrimonio-laboratorio-e105
UTFPR-inventario-patrimonio-laboratorio-e105Luiz Arthur
 
01 programação - introdução computação
01 programação - introdução computação01 programação - introdução computação
01 programação - introdução computaçãoLuiz Arthur
 
Bibliografia recomendada - programação C
Bibliografia recomendada - programação CBibliografia recomendada - programação C
Bibliografia recomendada - programação CLuiz Arthur
 
Bibliografia recomendada-programacao-python
Bibliografia recomendada-programacao-pythonBibliografia recomendada-programacao-python
Bibliografia recomendada-programacao-pythonLuiz Arthur
 
Bibliografia recomendada-seguranca
Bibliografia recomendada-segurancaBibliografia recomendada-seguranca
Bibliografia recomendada-segurancaLuiz Arthur
 
Bibliografia recomendada-redes
Bibliografia recomendada-redesBibliografia recomendada-redes
Bibliografia recomendada-redesLuiz Arthur
 

Mais de Luiz Arthur (20)

Pint of Science - Cibersegurnça x ciberameaças: Até onde você está seguro?
Pint of Science - Cibersegurnça x ciberameaças: Até onde você está seguro?Pint of Science - Cibersegurnça x ciberameaças: Até onde você está seguro?
Pint of Science - Cibersegurnça x ciberameaças: Até onde você está seguro?
 
Desafios da cibersegurança - ontem, hoje e amanhã
Desafios da cibersegurança - ontem, hoje e amanhãDesafios da cibersegurança - ontem, hoje e amanhã
Desafios da cibersegurança - ontem, hoje e amanhã
 
Slides - Uma abordagem autonômica para mitigar ciberataques em redes de compu...
Slides - Uma abordagem autonômica para mitigar ciberataques em redes de compu...Slides - Uma abordagem autonômica para mitigar ciberataques em redes de compu...
Slides - Uma abordagem autonômica para mitigar ciberataques em redes de compu...
 
NAPSOL
NAPSOLNAPSOL
NAPSOL
 
Uma Arquitetura Autonômica para Detecção e Reação a Ameaças de Segurança em R...
Uma Arquitetura Autonômica para Detecção e Reação a Ameaças de Segurança em R...Uma Arquitetura Autonômica para Detecção e Reação a Ameaças de Segurança em R...
Uma Arquitetura Autonômica para Detecção e Reação a Ameaças de Segurança em R...
 
Detecção de alertas de segurança em redes de computadores usando redes sociai...
Detecção de alertas de segurança em redes de computadores usando redes sociai...Detecção de alertas de segurança em redes de computadores usando redes sociai...
Detecção de alertas de segurança em redes de computadores usando redes sociai...
 
Evaluating the Utilization of Twitter Messages as a Source of Security Alerts
Evaluating the Utilization of Twitter Messages as a Source of Security AlertsEvaluating the Utilization of Twitter Messages as a Source of Security Alerts
Evaluating the Utilization of Twitter Messages as a Source of Security Alerts
 
Análise de Mensagens de Segurança Postadas no Twitter
Análise de Mensagens de Segurança Postadas no TwitterAnálise de Mensagens de Segurança Postadas no Twitter
Análise de Mensagens de Segurança Postadas no Twitter
 
match making e propaganda na web
match making e propaganda na webmatch making e propaganda na web
match making e propaganda na web
 
Mineração de dados no Gmail e Facebook
Mineração de dados no Gmail e FacebookMineração de dados no Gmail e Facebook
Mineração de dados no Gmail e Facebook
 
Invasao kernel.org
Invasao kernel.orgInvasao kernel.org
Invasao kernel.org
 
Núcleo do Linux (Kernel Linux)
Núcleo do Linux (Kernel Linux)Núcleo do Linux (Kernel Linux)
Núcleo do Linux (Kernel Linux)
 
Palestra Ferramentas de Segurança Open Source v.2
Palestra Ferramentas de Segurança Open Source v.2Palestra Ferramentas de Segurança Open Source v.2
Palestra Ferramentas de Segurança Open Source v.2
 
Palestra mau uso da tecnologia
Palestra mau uso da tecnologiaPalestra mau uso da tecnologia
Palestra mau uso da tecnologia
 
UTFPR-inventario-patrimonio-laboratorio-e105
UTFPR-inventario-patrimonio-laboratorio-e105UTFPR-inventario-patrimonio-laboratorio-e105
UTFPR-inventario-patrimonio-laboratorio-e105
 
01 programação - introdução computação
01 programação - introdução computação01 programação - introdução computação
01 programação - introdução computação
 
Bibliografia recomendada - programação C
Bibliografia recomendada - programação CBibliografia recomendada - programação C
Bibliografia recomendada - programação C
 
Bibliografia recomendada-programacao-python
Bibliografia recomendada-programacao-pythonBibliografia recomendada-programacao-python
Bibliografia recomendada-programacao-python
 
Bibliografia recomendada-seguranca
Bibliografia recomendada-segurancaBibliografia recomendada-seguranca
Bibliografia recomendada-seguranca
 
Bibliografia recomendada-redes
Bibliografia recomendada-redesBibliografia recomendada-redes
Bibliografia recomendada-redes
 

Último

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 

Último (6)

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 

Tópicos - Computacao Paralela Programacao 2 (Visão geral)

  • 1. 1 2 REDES DE COMPUTADORES Programação Paralela UNIVERSIDADE PARANAENSE – UNIPAR Normalmente arquiteturas MIMD com memória compartilhada ou distribuída são criadas Reconhecida pela Portaria - MEC N.º 1580, de 09/11/93 – D.O.U. 10/11/93 Mantenedora: Associação Paranaense de Ensino e Cultura – APEC para computar programas das mais diversas áreas da ciência. Tais programas necessitam ser muito bem elaborados para explorar ao máximo os recursos de uma máquina paralela. Tópicos Especiais em Sistemas de Informação Um algoritmo paralelo pode ser definido como um conjunto de processos (partes de um programa) que podem ser executados simultaneamente e tais processos podem se Sistemas de Informação - 4.o / 2005 comunicar uns com os outros, a fim de resolver um determinado problema. Prof. Luiz Arthur Feitosa dos Santos Já um algoritmo seqüencial que é executado passo a passo de forma serial ou seqüencial como foi definido durante a sua programação 1 2 e-mail: luiz_arthur@unipar.br 3 4 REDES DE COMPUTADORES REDES DE COMPUTADORES Programação Paralela Programação Paralela Uma prática constantemente utilizada por programadores é a reutilização de algoritmos, Um fato de extrema importância na maioria dos sistemas paralelos, principalmente os que pois se um algoritmo realiza uma função de forma eficiente, porque não utilizá-lo em exploram o paralelismo explicito (não em nível de instrução), é que o sistema paralelo em outro programa que irá necessitar das funcionalidades deste algoritmo. si é a combinação de um algoritmo paralelo e uma arquitetura paralela na qual o algoritmo é implementado. Esta técnica de reutilização também é normalmente empregada na computação paralela, entretanto, muitos pesquisadores consideram que a melhor forma de se obter o Ou seja, para que um sistema paralelo atinja o seu objetivo principal, que é a melhora de paralelismo ideal é reconstruindo o algoritmo inteiro, modelando-o para a arquitetura na desempenho na resolução de determinados problemas, é necessário alem de uma qual ele será executado. arquitetura física composta por vários processadores um algoritmo que explore todo este potencial de arquitetura. Sobre este problema Patterson comentou: “O maior obstáculo ao sucesso dos sistemas multiprocessadores não é o custo Pois nada adianta ter os recursos necessários para melhorar o desempenho se estes não dos processadores usados em sua arquitetura, nem os problemas na topologia forem devidamente utilizados. para conexão de redes, muito menos a indisponibilidade de linguagens de programação adequadas a tais sistemas; mas a grande dificuldade é o fato de Entretanto a tarefa de construir algoritmos paralelos ótimos, que empreguem da melhor que poucos programas de aplicação importantes têm sido reescritos para maneira possível todos os subsídios oferecidos pela arquitetura paralela não é nada fácil, e executar suas tarefas em sistemas multiprocessadores”. seja talvez uma das tarefas mais difíceis na construção de um sistema paralelo. (PATTERSON, 2000, p. 416). 3 4 e-mail: luiz_arthur@unipar.br e-mail: luiz_arthur@unipar.br Printed with FinePrint - purchase at www.fineprint.com
  • 2. 5 6 REDES DE COMPUTADORES REDES DE COMPUTADORES Programação Paralela Programação Paralela Assim reutilização de algoritmos não é recomendável nem para arquiteturas paralelas Aplicações Paralelas semelhantes, por exemplo, não se pode afirmar que um algoritmo projetado para ser executado em um computador contendo 8 processadores vai ser executado mais Os sistemas computacionais, em geral, são projetados com o propósito de agilizar a rapidamente em um sistema semelhante com 64 processadores, a menos que esse execução de uma determinada tarefa. Entretanto algumas aplicações, principalmente programa seja remodelado para esta arquitetura. científicas, requerem grande poder computacional. Algumas dessas aplicações podem consumir muito tempo de processamento, e em casos extremos podem se tornar Isso ocorre porque quanto maior a quantidade de processadores, maior será o esforço impraticáveis devido ao longo tempo de computação. computacional para sincronizar os processos, e maior ainda será a utilização da rede de interconexão que interliga os processadores. Uma técnica que vem tendo muito destaque para melhorar o desempenho de tais aplicações é a exploração do paralelismo apresentado por essas aplicações. Pois a maioria Por mais absurdo que possa parecer é bem provável que um programa especificamente das aplicações possui algum nível de paralelismo, que pode ser explorado de maneira que projetado para ser executado em um computador com 8 processadores faça melhor uso o programa possa ter seu tempo de execução reduzido. desta arquitetura, do que de uma arquitetura com 64 processadores. Portanto, é fácil concluir que o programador, neste caso, tem que ser um especialista em hardware e software para tentar fazer um bom uso dos recursos de cada máquina paralela. 5 6 e-mail: luiz_arthur@unipar.br e-mail: luiz_arthur@unipar.br 7 8 REDES DE COMPUTADORES REDES DE COMPUTADORES Programação Paralela Programação Paralela Então aplicações paralelas fazem uso de múltiplos processadores para resolver um Conforme Grama a construção de um algoritmo paralelo segue basicamente os seguintes determinado problema, e isso é possível através da execução simultânea de diversos passos: passos que compõem o problema e podem ser executados de forma simultânea. Identificar pontos do programa que podem ser executadas de forma paralela; Isso permite que uma aplicação paralela faça uso de vários processadores, o que não ocorre em programas seqüenciais, que essencialmente executam conjuntos básicos de Distribuir as entradas e saídas de dados pertinentes à aplicação, bem como os dados passos a serem executados de forma seqüencial, sem nenhum nível de paralelismo. intermediários gerados durante a execução das tarefas e que estão associados ao programa; Mesmo com o possível benefício de redução do tempo de execução da aplicação, o uso do paralelismo requer alguns cuidados que não são necessários em aplicações seqüências. Gerenciar da melhor forma possível o acesso aos dados compartilhados pelos processadores, para execução de um dado problema. Diminuindo a comunicação entre Por exemplo, a aplicação paralela apesar de possuir uma semântica parecida com a processos; aplicação seqüencial deve tratar de aspectos inerentes às suas características paralelas tais como: definir quais processos podem ser executados de forma paralela e gerenciar de Sincronizar eficientemente os processadores nos mais diversos estágios de execução forma eficiente a sincronização e comunicação entre tais processos. que um programa paralelo possa vir a possuir, de forma que os processadores não fiquem com uma carga de trabalho muito elevada ou muito baixa. 7 8 e-mail: luiz_arthur@unipar.br e-mail: luiz_arthur@unipar.br Printed with FinePrint - purchase at www.fineprint.com
  • 3. 9 10 REDES DE COMPUTADORES REDES DE COMPUTADORES Programação Paralela Programação Paralela Para a construção de aplicações paralelas podem ser utilizados basicamente três tipos de ferramentas de programação : É obvio que todas as ferramentas apresentadas possuem seus prós e contras. Compiladores: Fazem a paralelização de forma automática. Neste tipo de ferramenta o O compilador paralelo facilita a programação e agiliza o desenvolvimento da aplicação, programa normalmente é construído de forma seqüencial. Ficando a cargo do próprio mas normalmente não consegue fazer o uso ideal dos recursos fornecidos por cada compilador explorar o paralelismo da aplicação. Normalmente consegue-se um ganho de arquitetura paralela. desempenho pequeno se comparado à exploração explicita do paralelismo, mas a construção do aplicativo exige o mínimo esforço do programador, já que este ira Por sua vez as linguagens de programação paralelas conseguem um ótimo desempenho programar normalmente (de forma seqüencial), sem se preocupar em descobrir qual em arquiteturas paralelas, entretanto esse tipo de prática exige que o programador aprenda trecho de código deve ser paralelizado e como isso será realizado. uma nova linguagem de programação, o que pode levar um tempo considerável e consumir um tempo precioso na construção da aplicação paralela. Extensões de paralelização: São normalmente bibliotecas que possuem primitivas de comunicações, que facilitam o gerenciamento dos processos existentes em aplicações Desta forma a ferramenta que atualmente merece maior atenção são as extensões paralelas. Essas bibliotecas podem ser utilizadas a partir de linguagens de programação paralelas, que podem ser usadas pelo programador em uma linguagem de programação já normalmente seqüenciais (C++, Fortran, Pascal, etc). conhecida por ele, ficando a cargo dele apenas aprender como usar de forma eficiente as rotinas que possibilitam a programação paralela. Além de que esse tipo de ferramenta Linguagens de Programação Paralelas: Especialmente projetadas para serem usadas permite uma melhor adaptação de códigos seqüenciais para códigos paralelos, e em ambientes paralelos, tais linguagens possibilitam a construção de aplicações bem finalmente consegue explorar de forma eficiente todos os recursos de uma arquitetura estruturadas e possuem rotinas de gerenciamento de processos paralelos muito eficientes, paralela. dinamizando desta forma a comunicação, sincronização e gerenciamento da aplicação paralela. 9 10 e-mail: luiz_arthur@unipar.br e-mail: luiz_arthur@unipar.br 11 12 REDES DE COMPUTADORES REDES DE COMPUTADORES Programação Paralela Programação Paralela No que se refere a programação paralela alguns aspectos devem ser tratados: Decomposição/Particionamento Tarefas A decomposição de problemas em tarefas envolve o particionamento da aplicação. O Para que um programa obtenha um bom desempenho em uma arquitetura paralela, ou Particionamento é definido como um conjunto especifico de tarefas que irá resolver um melhor, em varias arquiteturas é necessário decompô-lo em um conjunto tarefas dado problema em um computador paralelo da maneira mais eficiente possível. (também conhecido como processos), que são unidades de programas bem definidas que fazem parte da aplicação principal. Existem dois métodos para se particionar tarefas: A execução simultânea de múltiplas tarefas para resolver um dado problema pode •Particionamento Estático: Neste método as tarefas são particionadas durante a reduzir o tempo de execução. programação e não em tempo de execução, desta forma cada processador recebe As tarefas podem ser executadas todas juntas ou em qualquer seqüência. sua carga de trabalho antes de iniciar a computação. Tarefas também podem apresentar dependência, e desta forma necessitam esperar que •Particionamento Dinâmico: Neste método o particionamento é feito durante a outras tarefas sejam executadas para terminar sua própria tarefa. execução do programa. 11 12 e-mail: luiz_arthur@unipar.br e-mail: luiz_arthur@unipar.br Printed with FinePrint - purchase at www.fineprint.com
  • 4. 13 14 REDES DE COMPUTADORES REDES DE COMPUTADORES Programação Paralela Programação Paralela Escalonamento Escalonamento Sendo que no estático os processos e a ordem em que eles serão executados são Uma vez que o programa foi dividido em processos, cada processo pode ser executado conhecidos antes da execução do programa, para se realizar um bom escalonamento em um processador diferente. estático é necessário conhecer o tempo de execução de cada tarefa bem como o tempo que cada unidade de processamento e seus recursos levaram para executar tal tarefa o A esse mapeamento entre processos e processadores dá se o nome de escalonamento, o que não é nada fácil, outra dificuldade neste modelo, é que se uma unidade de qual tem por objetivo o aumento da utilização de recursos computacionais fornecidos processamento parar de funcionar, o programa ira ser abortado, já que não há como pela arquitetura paralela. fazer o re-escalonamento das tarefas, pois esse é estático. O escalonamento é comumente observado em Sistemas Operacionais, porem este é No dinâmico os processos são atribuídos aos seus processadores durante a execução. conhecido como escalonamento local, e refere-se ao problema de atribuição das fatias Neste ambiente não se faz necessário conhecer totalmente o ambiente no qual o de tempo (time-slices) de um processador aos processos. programa paralelo ira ser executado, já que normalmente o programa ira se adaptar e moldar a arquitetura paralela, o que oferece uma melhor utilização dos processadores O escalonamento citado aqui faz referência a um escalonamento global aplicável disponíveis, incrementando desta forma a flexibilidade quanto ao aproveitamento do geralmente em Sistemas Distribuídos ou Paralelos. número de processadores que compõem a arquitetura. O escalonamento da mesma forma que o particionamento, também pode ser estático ou Se o problema se adapta a qualquer número de processadores (1-n) então o algoritmo é dinâmico chamado de escalável. 13 14 e-mail: luiz_arthur@unipar.br e-mail: luiz_arthur@unipar.br 15 16 REDES DE COMPUTADORES REDES DE COMPUTADORES Programação Paralela Programação Paralela Granularidade Tamanho do Problema O número e o tamanho das tarefas decompostas em uma dada aplicação determinam a Outro aspecto que deve ser observado é a relação entre o número de processadores e o granularidade do problema. Desta forma, granularidade refere-se ao tamanho de uma tamanho do problemae o programador deve estar atento a esse fator. tarefa em um processador e a performance de um algoritmo paralelo depende da granularidade do programa. Na verdade o tamanho do problema já foi um dos maiores empecilhos enfrentados por sistemas computacionais, já que em 1967 Amdahl’s definiu que em um dado problema Se um programa for dividido em um pequeno número de grandes tarefas (chamada de de tamanho fixo, o paralelismo não teria grandes ganhos de desempenho, pois logo granularidade-grossa) a tendência é que esse algoritmo seja mais adequado para atingiria o pico de ganho de desempenho e não continuaria a aumentar o desempenho arquiteturas com um número pequeno de processadores e desta forma se torne uma conforme fosse crescendo o número de processadores. aplicação com um nível de paralelização muito baixo. A esta afirmação se deu o nome de lei de Amdahl’s, tal lei causou certo marasmo Já se um programa for dividido em um grande número de pequenas tarefas dentre as pesquisas de sistemas paralelos, até que em 1988 Gustafson, observou que (granularidade-fina), o programa terá um nível de paralelização maior, entretanto é Amdahl’s assume que o número de processador é independente do tamanho do bem provável que neste caso o programa faça maior uso da rede interconexão, podendo problema, o que normalmente nunca é o caso. Na prática o tamanho do problema e desta forma perder desempenho devido ao alto grau de comunicação requerido entre as escalar ao número de processadores. Quando é dado mais poder computacional, o tarefas. O programador de aplicações paralelas deve balancear a granularidade da problema geralmente se expande para fazer uso das facilidades da arquitetura tal aplicação tentando manter um alto coeficiente de paralelização e da mesma forma descoberta permitiu que os estudos sobre sistemas paralelos tomassem novos rumos. tentando reduzir a necessidade de comunicação entre as tarefas. 15 16 e-mail: luiz_arthur@unipar.br e-mail: luiz_arthur@unipar.br Printed with FinePrint - purchase at www.fineprint.com
  • 5. 17 18 REDES DE COMPUTADORES REDES DE COMPUTADORES Programação Paralela Programação Paralela Modelos de algoritmos paralelos Data Parallelism Além de escolher alguma ferramenta de programação, é necessário ter-se em mente Explora os dados a serem processados pelo programa paralelo. como o algoritmo será paralelizado, principalmente se o desenvolvedor do aplicativo escolher uma ferramenta na qual necessite paralelizar a aplicação de forma direta como Cada tarefa executa operações semelhantes sobre dados diferentes. Este modelo ferramentas de extensão e linguagens paralelas. emprega balanceamento de carga de trabalho estático o que normalmente garante um bom balanceamento de carga. Modelos de algoritmos paralelos são formas de estruturar algoritmos paralelos através O paralelismo de dados apresenta ótimos resultados, pois geralmente não requer muita de técnicas de decomposição, mapeamento e estratégias de minimização das interações comunicação o que diminui o overhead e o tempo gasto com a comunicação, portanto entre as tarefas. este modelo apresenta ganhos de desempenho exponenciais (quanto mais processadores melhor), e quanto maior a entrada de dados melhor é seu desempenho. Um exemplo desta prática é um algoritmo de multiplicação de matrizes no qual as colunas e as linhas das matrizes a serem multiplicadas são distribuídas entre os diversos processadores que compõem a arquitetura paralela, e cada processador executa o mesmo código para multiplicar essas linhas e colunas, completando desta forma a aplicação. 17 18 e-mail: luiz_arthur@unipar.br e-mail: luiz_arthur@unipar.br 19 20 REDES DE COMPUTADORES REDES DE COMPUTADORES Programação Paralela Programação Paralela Task Graph Work Pool Neste modelo o inter-relacionamento entre as tarefas do problema é utilizado para Também conhecido como Task Pool, é caracterizado por um mapeamento dinâmico agrupar os dados relacionados. entre tarefas e processadores visando desta forma um alto grau de balanceamento de carga entre os processadores. Procurando-se deixar os dados que se inter-relacionam sempre onde possam ser acessados de forma mais rápida (por exemplo, na memória local), facilitando a Tal mapeamento pode ser centralizado ou descentralizado. As tarefas podem ser comunicação ou pelo menos reduzindo o custo da comunicação entre os processos. armazenadas em listas de prioridade, tabelas hash, ou em árvores. As tarefas podem ser estáticas ou dinâmicas, desta forma um processo pode gerar uma tarefa e coloca-la O modelo Task Graph é utilizado para resolver problemas nos quais vários dados estão numa lista global (work pool) para ser executada. associados e as tarefas necessitam interagir entre elas, fazendo uso desses dados. Em arquiteturas de passagem de mensagem esse modelo é normalmente usado quando Este tipo de modelo é mais facilmente implementado em arquiteturas de memória a quantia de dados associados à tarefa é relativamente pequena se comparada com a compartilhada, mas pode ser implementado em arquiteturas de memória distribuída computação associada com as tarefas. também. Desta forma um programa paralelo pode ser representado por um grafo de tarefas (task graph) nos quais os nós representam módulos e arestas indicam a O mesmo exemplo da multiplicação de matriz pode ser utilizado aqui, mas neste caso necessidade de comunicação entre esses nós. os processadores irão buscar as tarefas a serem executadas (as linhas e colunas) em uma lista. Um exemplo de aplicação que utiliza este modelo é o método de ordenação quicksort. 19 20 e-mail: luiz_arthur@unipar.br e-mail: luiz_arthur@unipar.br Printed with FinePrint - purchase at www.fineprint.com
  • 6. 21 22 REDES DE COMPUTADORES REDES DE COMPUTADORES Programação Paralela Programação Paralela Processor Farm Pipeline ou Produtor-Consumidor Neste modelo existe um processador principal (também chamado de “mestre”) que é Este modelo segue o modelo de pipeline empregado pelos processadores, ou seja, um responsável por gerenciar um grupo de processadores (chamados de “escravos”), no fluxo de dados é passado através de uma sucessão estágios. qual cada escravo processa assincronamente tarefas submetidas pelo mestre. O mestre Cada estágio executa uma tarefa diferente sobre este fluxo de dados. Essa execução gerencia o trabalho dos escravos e faz o balanceamento de carga. simultânea de diferentes tarefas sobre um fluxo de dados também é chamado de stream Este modelo é muito utilizado tanto por arquiteturas de memória compartilhada quanto parallelism. por memória distribuída, entretanto é necessário ter-se cuidado para que o processador Cada processo no pipeline pode ser visto como o consumidor de uma seqüência de mestre não se torne um gargalo neste modelo. dados do processo que o precede e um produtor de dados para o processo seguinte do Utilizando a mesma aplicação de multiplicação de matrizes, neste método um pipeline, daí o nome Produtor-Consumidor. processador ficará responsável por distribuir as colunas e linhas a serem multiplicadas. Utilizando mais uma vez o exemplo da multiplicação de matriz, neste método cada estágio seria responsável por uma operação, sendo, o primeiro estágio responsável pela entrada de dados, o segundo pela multiplicação, o seguinte pela soma e o último pela saída, terminando desta forma todos os estágios do pipeline necessários por essa aplicação. 21 22 e-mail: luiz_arthur@unipar.br e-mail: luiz_arthur@unipar.br 23 24 REDES DE COMPUTADORES REDES DE COMPUTADORES Programação Paralela Programação Paralela Em alguns casos mais de um modelo de programação paralela pode ser aplicado para a Em comparação com algoritmos síncronos, os assíncronos requerem menos acesso à resolução de um problema. Um modelo híbrido pode ser construído aplicando vários memória compartilhada, o que reduz a disputa por memória. modelos de forma hierárquica ou aplicando-se múltiplos modelos de forma seqüencial para diferentes fases do algoritmo. Em geral, algoritmos assíncronos são mais eficientes devido aos processos nunca esperam outro processo. Ainda no que se refere a modelos de programação introduz mais dois modelos que podem ser considerados como modelos básicos para os modelos discutidos Isso normalmente diminui o tempo de execução o resultado dos processos que são anteriormente: Síncrona e Asincrona. executados mais rapidamente pode ser usado para eliminar processos mais lentos; -Na estrutura síncrona (Partitioning Algorithms) dois ou mais processos estão ligados menos competição por memória. por um ponto comum de execução usado com propósitos de sincronização. Um processo irá atingir um ponto de no qual terá de esperar por outros (um ou mais) Entretanto algoritmos assíncronos são difíceis de programar. Sua análise é mais processos. Após os processos terem alcançado o ponto de sincronização, eles podem complexa que a de um algoritmo síncrono. continuar a execução do programa até o próximo ponto de sincronização. Sendo ainda às vezes até mesmo impossível de resolver um dado problema de maneira -A estrutura assíncrona permite que os processos pertencentes ao algoritmo trabalhem assíncrona. com o dado mais recente fornecido pela execução de outros processos (um ou mais). Quando um processo termina um estágio este atualiza as informações necessárias e inicia o próximo estágio. 23 24 e-mail: luiz_arthur@unipar.br e-mail: luiz_arthur@unipar.br Printed with FinePrint - purchase at www.fineprint.com
  • 7. 25 26 REDES DE COMPUTADORES REDES DE COMPUTADORES Programação Paralela Programação Paralela AVALIAÇÃO DE DESEMPENHO AVALIAÇÃO DE DESEMPENHO Quando um sistema paralelo utiliza dois processadores, logo se cria a expectativa de Uma questão muito importante a ser abordada por qualquer pesquisador de sistemas que qualquer programa executado nesta máquina será processado duas vezes mais paralelos, é o de como verificar e explorar o ganho de performance em um sistema rápido do que numa máquina monoprocessada. paralelo, já que a performance em sistemas paralelos é o resultado de interações complexas entre recursos de hardware e software. Porém, isso não é verdade. Para que a execução paralela atinja o máximo de desempenho, o código do programa originalmente desenvolvido de forma seqüencial Envolvendo características de aplicações, tal como, estrutura do algoritmo, parâmetros deve, de alguma maneira, ser 100% paralelizado. de entrada, tamanho do problema e físicas, como, número de processador, taxas de transferência da rede de interconexão, etc. A lei de Amdahl sugere que é muito difícil alcançar uma performance de pico esperada para as arquiteturas paralelas mas, ainda que não se consiga paralelizar totalmente um Todos esses aspectos determinam como a aplicação explora os recursos disponíveis em algoritmo e alcançar sempre a performance ideal em sistemas paralelos, é possível arquiteturas paralelas e consequentemente como influenciam na performance. atingir ganhos de desempenhos consideráveis paralelizando os núcleos de programas (parte principal do programa na qual se concentra a maior parte do esforço computacional) de forma que o programa paralelo obtenha ganhos de desempenho consideráveis. 25 26 e-mail: luiz_arthur@unipar.br e-mail: luiz_arthur@unipar.br 27 28 REDES DE COMPUTADORES REDES DE COMPUTADORES Programação Paralela Programação Paralela AVALIAÇÃO DE DESEMPENHO Medidas em computação paralela faz referência à execução de uma aplicação paralela com P processadores, onde K diferentes atividades e N regiões de códigos podem estar Uma boa maneira de se conseguir uma ótima interação entre hardware e software e sendo monitoradas. atingir um bom desempenho usando sistemas paralelos é analisando o comportamento de cada atributo da arquitetura frente a um conjunto de algoritmos (tais algoritmos são Esses parâmetros podem ser medidos analisando diferentes parâmetros, por exemplo, denominados Benchmarks) que teste tal arquitetura da maneira mais completa possível. medir atividades de computação, comunicação, aceso a memória, I/O (Input/Output – entrada/saída) ou regiões do código como loops, rotinas, etc. Desta forma faz-se necessárias ferramentas para analisar de forma concisa como um algoritmo faz uso da arquitetura paralela. Softwares de analise e métricas de Vários parâmetros podem ser medidos em arquiteturas paralelas: performance são divididos em estáticos e dinâmicos. Parâmetros de tempo; Parâmetros quantitativos como: Medidas estáticas incluem: número de nós, grau de sincronização, tamanho do caminho Número de operações de entrada e saída (I/O); Número de bytes lidos e escritos (read/written); a ser percorrido, caminho máximo que um nó de entrada tem de fazer a um nó de saída, Número de acessos à memória; tamanho do problema, etc. Número de perdas de cache (cache misses); Número de bytes enviados e recebidos (sent/received); Métricas dinâmicas são: tempo de computação total entre os processadores, tempo de comunicação, tempo de execução, volume de comunicação, volume de entrada/saída, Então as propriedades de métricas de sistemas paralelos devem ser extensamente entre outros. estudadas, pois elas influenciam diretamente no desempenho de uma aplicação 27 28 e-mail: luiz_arthur@unipar.br e-mail: luiz_arthur@unipar.br Printed with FinePrint - purchase at www.fineprint.com
  • 8. 29 30 REDES DE COMPUTADORES REDES DE COMPUTADORES Programação Paralela Programação Paralela O tamanho do problema já foi um dos maiores empecilhos enfrentados por sistemas Elapsed Time computacionais, já que em 1967 Amdahl’s definiu que em um dado problema de tamanho fixo, o paralelismo não teria grandes ganhos de desempenho, pois logo Existem diversas medidas para a caracterização de performance de um sistema atingiria o pico de ganho de desempenho e não continuaria a aumentar o desempenho paralelo, mas as que mais se destacam são: tempo de execução, speedup e eficiência. conforme fosse crescendo o número de processadores. Historicamente o tempo de execução ou o tempo decorrido (elapsed time) é uma das A esta afirmação se deu o nome de lei de Amdahl’s, tal lei causou certo marasmo métricas mais populares para verificar a performance em um dado sistema. dentre as pesquisas de sistemas paralelos, até que em 1988 Gustafson, observou que Amdahl’s assume que o número de processador é independente do tamanho do O tempo de execução serial é o tempo decorrido do inicio da execução do programa até problema, o que normalmente nunca é o caso. o seu termino em um computador seqüencial. Na prática o tamanho do problema e escalar ao número de processadores. Quando é Já o tempo de execução paralelo é o tempo decorrente do momento em que o programa dado mais poder computacional, o problema geralmente se expande para fazer uso das inicialmente é executado na arquitetura paralela até o momento que o ultimo facilidades da arquitetura, tal descoberta permitiu que os estudos sobre sistemas processador empregado para a resolução do problema termina a execução. paralelos tomassem novos rumos. 29 30 e-mail: luiz_arthur@unipar.br e-mail: luiz_arthur@unipar.br 31 32 REDES DE COMPUTADORES REDES DE COMPUTADORES Programação Paralela Programação Paralela Speedup Speedup Em conjunto com o tempo decorrido existe uma métrica denominada speedup O speedup absoluto é definido como o tempo decorrido na execução seqüencial do (aceleração ou ganho de desempenho) que é extremamente utilizada em bibliografias melhor algoritmo dividido pelo tempo de execução decorrente no algoritmo paralelo. sobre arquitetura paralela. Já speedup relativo é definido como o tempo decorrente de um algoritmo paralelo em O speedup é o produto do tempo decorrido de uma arquitetura pela outra, um bom um processador e o tempo decorrente do mesmo algoritmo paralelo em N motivo para se utilizar o speedup é que ele combina todos os efeitos típicos da processadores. computação paralela e apresenta resultados gráficos A razão para se usar speedup relativo é que a performance de algoritmos paralelos Existem duas modalidades bem definidas para se medir o speedup, que são: varia de acordo com o número de processadores disponíveis em uma arquitetura e comparando o mesmo algoritmo com vários números de processadores é possível •Speedup absoluto; verificar de forma mais sincera a degradação do uso do paralelismo, do que se usando •Speedup Relativo. o speedup absoluto que faz a comparação com um algoritmo serial, o que pode não ser tão imparcial. 31 32 e-mail: luiz_arthur@unipar.br e-mail: luiz_arthur@unipar.br Printed with FinePrint - purchase at www.fineprint.com
  • 9. 33 34 REDES DE COMPUTADORES REDES DE COMPUTADORES Speedup Programação Paralela Programação Paralela Existem vários parâmetros que podem ser expressos através do speedup, os mais Speedup significantes são o speedup de tamanho de problema fixo (fixed-size speedup) que foi descrito por Amdahl’s, e o speedup de tempo fixo (fixed-time speedup), descrito por Na pratica pode-se definir a aceleração (speedup) ou ganho que sofre cada arquitetura, Gustafson’s que é o mais usado atualmente. medindo-se o tempo de execução na arquitetura seqüencial dividido pelo tempo consumido pela execução na arquitetura paralela, para executar o mesmo problema, Tamanho do W1 W1 W1 W1 Tempo de TW1 isso para o speedup absoluto. No caso do speedup relativo é só colocar no lugar do Problema Execução TW1 tempo de execução do programa seqüencial o tempo do algoritmo paralelo executado TW1 com apenas um processador. TW1 WN WN WN WN TWN WTN WTN WTN 1 2 3 4 1 2 3 4 TempoExecuçãoSeqüencial Número processadores Número processadores Aceleração = Amdahl’s - fixed-size speedup TempoExecuçãoParalelo SPEEDUP Absoluto W1 Tamanho do W1 Tempo de TempoExecuçãoParalelo1 Problema W1 Execução Aceleração = W1 TW1 TW1 WT1 WT1 TempoExecuçãoParalelo N WN WN WN WN WTN TWN WTN WTN SPEEDUP Relativo 1 2 3 4 1 2 3 4 33 34 Número processadores Número processadores Gustafson - fixed-time speedup e-mail: luiz_arthur@unipar.br e-mail: luiz_arthur@unipar.br 35 36 REDES DE COMPUTADORES REDES DE COMPUTADORES Programação Paralela Programação Paralela Eficiência Eficiência Outra medida que pode ser empregada no estudo de arquiteturas paralelas e é derivada Uma pergunta natural então é: qual é o limite para se aumentar o número de do speedup é a eficiência. Eficiência é uma medida da fração de tempo para o qual um processadores proporcionalmente ao tamanho do problema? processador é realmente usado. Em sistemas paralelos ideais o speedup é igual ao número de processadores e a eficiência é igual a um. Na pratica o speedup é menor que Isso depende da arquitetura, mas se o tamanho do problema é constante enquanto o o número de processadores e a eficiência fica entre zero e um. número de processadores aumenta a eficiência apresenta quedas, por causa do acréscimo de overhead (controle de comunicação entre os processadores) causado pelo A analise de eficiência permite determinar a melhor combinação de algoritmo e número de processadores. arquitetura para um problema. Já se o tamanho do problema aumenta enquanto o número de processadores é constante A eficiência relata o tamanho do problema e o número de processadores requeridos então a eficiência aumenta (no caso sistemas paralelos escalares) devido ao baixo para manter o sistema eficiente, e isso ira ajudar a determinar a escalabilidade do overhead é insignificante perto da computação do problema. sistema, sua velocidade e largura de banda da rede de comunicação. Desta forma pode-se manter a eficiência desde que se aumente de forma proporcional o Existe um referencia direta entre o número de processadores, tamanho do problema e a tamanho do problema. É claro que é muito difícil encontrar a relação exata entre o eficiência, de forma que se for aumentado o número de processadores a eficiência será tamanho do problema ideal para cada arquitetura, já que o problema pode estar reduzida, e aumentando o tamanho do problema é aumentada à eficiência, desta forma associado a inúmeros aspectos de hardware e software. se for aumentado ambos a eficiência será constante. 35 36 e-mail: luiz_arthur@unipar.br e-mail: luiz_arthur@unipar.br Printed with FinePrint - purchase at www.fineprint.com
  • 10. 37 REDES DE COMPUTADORES Programação Paralela Eficiência A eficiência é considerada um método analítico que investiga a escalabilidade dos algoritmos. Tal métrica é obtida pela formula E = S/p, sendo S o speedup e p o número de processadores. Portanto o número processadores deve se escolhido de forma a maximizar a eficiência e o speedup da arquitetura. Cada algoritmo paralelo tem um inerente aumento de concorrência entre os processadores que determina o número máximo de processadores que podem ser simultaneamente usado durante a resolução de um dado tamanho do problema. 37 e-mail: luiz_arthur@unipar.br Printed with FinePrint - purchase at www.fineprint.com