SlideShare uma empresa Scribd logo
1 de 18
Baixar para ler offline
Computação Paralela
Prof. Adriano Teixeira de Souza
◦   Como ganhar desempenho em
    programas?
     3 opções




                     Prof. Adriano Teixeira de Souza
1.   Melhorar o ambiente de execução
        Ex: Comprar um processador melhor

2.   Melhorar o algoritmo
        Ex: substituir um algoritmo de ordenação
         Bubble por Quicksort

3.   Paralelização
        Não é a solução para todos os problemas do
         mundo
        Alguns problemas não são paralelizáveis (ou
         muito difíceis de se ganhar desempenho)
                              Prof. Adriano Teixeira de Souza
   Programa executa em uma única CPU
    ◦ Dividido em uma série de instruções
    ◦ Executadas uma após a outra*
    ◦ Apenas uma instrução é executada por vez*




                           Prof. Adriano Teixeira de Souza
   Utilização de múltiplos recursos computacionais
    para resolver um determinado problema
    ◦ Múltiplas CPUs
    ◦ Problemas são divididos para serem executados
      simultaneamente




                               Prof. Adriano Teixeira de Souza
   Tempo/Dinheiro
   Limite da computação sequencial
   Solução de grandes problemas
   Alocação de recursos
    ◦ Cluster
    ◦ Grids
   Arquiteturas estão mudando!!!




                               Prof. Adriano Teixeira de Souza
   Paralelismo no nível de instruções
    ◦ Pipeline, superescalar
    ◦ Implícito para o programador
   Várias linhas de execução: threads
                                                         Programador é
    ◦ Suporte do sistema operacional
                                                         responsável pela
   Vários núcleos                                       exploração do
   Vários processadores                                 paralelismo




                                                                      7


                            Prof. Adriano Teixeira de Souza
Prof. Adriano Teixeira de Souza
   Classificação de Flynn (1970)


                SISD         SIMD



                MISD        MIMD




                         Prof. Adriano Teixeira de Souza
   SISD (Single Instruction Single Data)

    ◦ Computadores com um único processador
    ◦ Instruções executadas em seqüência
    ◦ Placas gráficas




                          Prof. Adriano Teixeira de Souza
   SIMD (Single Instruction Multiple Data)
    ◦ Cada processador executa a mesma instrução
      em sincronia, mas usando dados diferentes




                           Prof. Adriano Teixeira de Souza
MIMD (Multiple Instructions Multiple Data)
  Classe dos computadores paralelos
  Não determinismo:
   Várias coisas ocorrendo ao mesmo tempo

  Memória Compartilhada
   Multicore
   SMP (Symmetric Multi-Processing)

  Memória Distribuída
   Cluster
   MPP (Massively Parallel Processors)

  Híbridos

                             Prof. Adriano Teixeira de Souza
IBM – RoadRunner
                                                    Los Alamos National Laboratory




Cluster
PowerXCell 8i 3.2 Ghz / Opteron DC 1.8 GHz
129.600 cores
98TB de memória
SO Linux (Fedora and Red Hat enterprise editions)
Interconexão: Infiniband



                                                Prof. Adriano Teixeira de Souza
MPP                                            Cray – Jaguar
AMD x86_64 Opteron Quad Core 2300 MHz          Oak Ridge National Laboratory
181.504 cores
362TB de memória
Interconexão: Cray SeaStar / Infiniband
SO CNL (adaptação do Suse)



                                          Prof. Adriano Teixeira de Souza
Cluster Krusty – LCAD Unioeste




18 nós – Pentium IV 3.2 HT GHz
1 GB RAM
Rede Gigabit Ethernet
SO Linux Fedora


                                 Prof. Adriano Teixeira de Souza
   Modelo de programação:
    ◦ Múltiplas threads compartilhando dados

   Aspecto crítico:
    ◦ sincronização quando diferentes tarefas acessam os
      mesmos dados


   Ferramentas para programação:
    ◦ linguagens concorrentes (C#, Java ...)
    ◦ linguagens seqüenciais + extensões/biliotecas (OpenMP,
      Pthreads)



                                Prof. Adriano Teixeira de Souza
#include <omp.h>
#include <stdio.h>                                          Exemplo OpenMP
#include <stdlib.h>

int main (int argc, char *argv[])
{
  int nthreads, tid;
  #pragma omp parallel private(nthreads, tid)
  {
    /* Obtain thread number */
    tid = omp_get_thread_num();
    printf("Hello World from thread = %dn", tid);

      /* Only master thread does this */
    if (tid == 0)
    {
          nthreads = omp_get_num_threads();
          printf("Number of threads = %dn", nthreads);
      }
}   /* All threads join master thread and disband */


                                    Prof. Adriano Teixeira de Souza

Mais conteúdo relacionado

Mais procurados

Arquitetura de Hardware
Arquitetura de HardwareArquitetura de Hardware
Arquitetura de HardwareMiguel Correia
 
Referencial De Competências Chave B3 TIC
Referencial De Competências Chave B3 TICReferencial De Competências Chave B3 TIC
Referencial De Competências Chave B3 TICnuno.jose.duarte
 
Aula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareAula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareCloves da Rocha
 
Aula02 - Componentes de um Computador
Aula02 - Componentes de um ComputadorAula02 - Componentes de um Computador
Aula02 - Componentes de um ComputadorSuzana Viana Mota
 
Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)Gercélia Ramos
 
Análise e Projeto de Sistemas com UML e Java
Análise e Projeto de Sistemas com UML e JavaAnálise e Projeto de Sistemas com UML e Java
Análise e Projeto de Sistemas com UML e Javaarmeniocardoso
 
Aula1 e aula2 - Analise e Projeto de Sistemas
Aula1 e aula2 - Analise e Projeto de SistemasAula1 e aula2 - Analise e Projeto de Sistemas
Aula1 e aula2 - Analise e Projeto de SistemasGustavo Gonzalez
 
Apresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - ConceitoApresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - ConceitoThiago Marinho
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPAricelio Souza
 
Questões de Sistemas Operacionais
Questões de Sistemas Operacionais Questões de Sistemas Operacionais
Questões de Sistemas Operacionais Joicy Souza
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-Mauro Pereira
 
Apresentação de Montagem e Manutenção
Apresentação de Montagem e ManutençãoApresentação de Montagem e Manutenção
Apresentação de Montagem e ManutençãoCDP_Online
 
Aula 5 - Redes de computadores
Aula 5 - Redes de computadoresAula 5 - Redes de computadores
Aula 5 - Redes de computadoresLucasMansueto
 
Apostila packet tracer 5.3
Apostila packet tracer 5.3Apostila packet tracer 5.3
Apostila packet tracer 5.3Jakson Silva
 
SLIDE SOBRE O LIBREOFFICE
SLIDE SOBRE O LIBREOFFICESLIDE SOBRE O LIBREOFFICE
SLIDE SOBRE O LIBREOFFICELiana Évily
 
Apresentação de Internet
Apresentação de InternetApresentação de Internet
Apresentação de InternetCDP_Online
 

Mais procurados (20)

Arquitetura de Hardware
Arquitetura de HardwareArquitetura de Hardware
Arquitetura de Hardware
 
Referencial De Competências Chave B3 TIC
Referencial De Competências Chave B3 TICReferencial De Competências Chave B3 TIC
Referencial De Competências Chave B3 TIC
 
Aula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de SoftwareAula - Introdução a Engenharia de Software
Aula - Introdução a Engenharia de Software
 
Aula02 - Componentes de um Computador
Aula02 - Componentes de um ComputadorAula02 - Componentes de um Computador
Aula02 - Componentes de um Computador
 
Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)Descritiva Narrativa (Lógica de Programação)
Descritiva Narrativa (Lógica de Programação)
 
1ª aula sistema operacional
1ª aula  sistema operacional1ª aula  sistema operacional
1ª aula sistema operacional
 
Análise e Projeto de Sistemas com UML e Java
Análise e Projeto de Sistemas com UML e JavaAnálise e Projeto de Sistemas com UML e Java
Análise e Projeto de Sistemas com UML e Java
 
Computação em nuvem
Computação em nuvemComputação em nuvem
Computação em nuvem
 
Aula1 e aula2 - Analise e Projeto de Sistemas
Aula1 e aula2 - Analise e Projeto de SistemasAula1 e aula2 - Analise e Projeto de Sistemas
Aula1 e aula2 - Analise e Projeto de Sistemas
 
Apresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - ConceitoApresentação Sistemas Distribuídos - Conceito
Apresentação Sistemas Distribuídos - Conceito
 
NoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAPNoSQL, Base VS ACID e Teorema CAP
NoSQL, Base VS ACID e Teorema CAP
 
Arquitetura de Redes de Computadores
 Arquitetura de Redes de Computadores Arquitetura de Redes de Computadores
Arquitetura de Redes de Computadores
 
Questões de Sistemas Operacionais
Questões de Sistemas Operacionais Questões de Sistemas Operacionais
Questões de Sistemas Operacionais
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-
 
Apresentação de Montagem e Manutenção
Apresentação de Montagem e ManutençãoApresentação de Montagem e Manutenção
Apresentação de Montagem e Manutenção
 
Aula 5 - Redes de computadores
Aula 5 - Redes de computadoresAula 5 - Redes de computadores
Aula 5 - Redes de computadores
 
Apostila packet tracer 5.3
Apostila packet tracer 5.3Apostila packet tracer 5.3
Apostila packet tracer 5.3
 
SLIDE SOBRE O LIBREOFFICE
SLIDE SOBRE O LIBREOFFICESLIDE SOBRE O LIBREOFFICE
SLIDE SOBRE O LIBREOFFICE
 
Apresentação de Internet
Apresentação de InternetApresentação de Internet
Apresentação de Internet
 
Bases De Dados
Bases De DadosBases De Dados
Bases De Dados
 

Semelhante a Computação Paralela em 3 passos

Sistemas Distribuídos - Grids Computacionais
Sistemas Distribuídos - Grids ComputacionaisSistemas Distribuídos - Grids Computacionais
Sistemas Distribuídos - Grids ComputacionaisAdriano Teixeira de Souza
 
Sistemas embarcados: motivação e primeiros passos
Sistemas embarcados: motivação e primeiros passosSistemas embarcados: motivação e primeiros passos
Sistemas embarcados: motivação e primeiros passosMarcelo Barros de Almeida
 
Aspectos do kernel Linux e Instalação
Aspectos do kernel Linux e InstalaçãoAspectos do kernel Linux e Instalação
Aspectos do kernel Linux e InstalaçãoMauro Tapajós
 
Resumo de S.O.
Resumo de S.O.Resumo de S.O.
Resumo de S.O.dannas_06
 
Microarquitetura Intel Core Duo
Microarquitetura Intel Core DuoMicroarquitetura Intel Core Duo
Microarquitetura Intel Core DuoSamuel Bié
 
Programação Paralela - Threads
Programação Paralela - ThreadsProgramação Paralela - Threads
Programação Paralela - ThreadsGlaucio Scheibel
 
Processadores - CPU
Processadores - CPUProcessadores - CPU
Processadores - CPURoney Sousa
 
Aula 01b - Conceitos de Hardware e Software.pdf
Aula 01b - Conceitos de Hardware e Software.pdfAula 01b - Conceitos de Hardware e Software.pdf
Aula 01b - Conceitos de Hardware e Software.pdfEMERSONMUNIZDECARVAL
 
Introdução a computação 04 (1)
Introdução a computação 04 (1)Introdução a computação 04 (1)
Introdução a computação 04 (1)Felipe Pereira
 
Introdução a computação 04
Introdução a computação 04Introdução a computação 04
Introdução a computação 04Felipe Pereira
 
Computação Manycore: Uma Arquitetura muito além do Multicore!
Computação Manycore: Uma Arquitetura muito além do Multicore!Computação Manycore: Uma Arquitetura muito além do Multicore!
Computação Manycore: Uma Arquitetura muito além do Multicore!Intel Software Brasil
 
Processadores core i3 e amd
Processadores core i3 e amdProcessadores core i3 e amd
Processadores core i3 e amdMario Kleber
 
Aula 5a - Sistemas Operacionais
Aula 5a - Sistemas OperacionaisAula 5a - Sistemas Operacionais
Aula 5a - Sistemas OperacionaisJocelma Rios
 
Resumo sistemas operativos - joao marques
Resumo   sistemas operativos - joao marquesResumo   sistemas operativos - joao marques
Resumo sistemas operativos - joao marquesdjoaquim7
 
Sismologia USP: Infra Estutura Computacional para Pesquisa
Sismologia USP: Infra Estutura Computacional para PesquisaSismologia USP: Infra Estutura Computacional para Pesquisa
Sismologia USP: Infra Estutura Computacional para PesquisaCentro de Sismologia - USP
 

Semelhante a Computação Paralela em 3 passos (20)

Processamento paralelo
Processamento paraleloProcessamento paralelo
Processamento paralelo
 
Mini-curso CUDA
Mini-curso CUDAMini-curso CUDA
Mini-curso CUDA
 
Processamento paralelo
Processamento paraleloProcessamento paralelo
Processamento paralelo
 
Sistemas Distribuídos - Grids Computacionais
Sistemas Distribuídos - Grids ComputacionaisSistemas Distribuídos - Grids Computacionais
Sistemas Distribuídos - Grids Computacionais
 
Sistemas embarcados: motivação e primeiros passos
Sistemas embarcados: motivação e primeiros passosSistemas embarcados: motivação e primeiros passos
Sistemas embarcados: motivação e primeiros passos
 
Aspectos do kernel Linux e Instalação
Aspectos do kernel Linux e InstalaçãoAspectos do kernel Linux e Instalação
Aspectos do kernel Linux e Instalação
 
F oc aula_04
F oc aula_04F oc aula_04
F oc aula_04
 
Resumo x86
Resumo x86Resumo x86
Resumo x86
 
Resumo de S.O.
Resumo de S.O.Resumo de S.O.
Resumo de S.O.
 
Microarquitetura Intel Core Duo
Microarquitetura Intel Core DuoMicroarquitetura Intel Core Duo
Microarquitetura Intel Core Duo
 
Programação Paralela - Threads
Programação Paralela - ThreadsProgramação Paralela - Threads
Programação Paralela - Threads
 
Processadores - CPU
Processadores - CPUProcessadores - CPU
Processadores - CPU
 
Aula 01b - Conceitos de Hardware e Software.pdf
Aula 01b - Conceitos de Hardware e Software.pdfAula 01b - Conceitos de Hardware e Software.pdf
Aula 01b - Conceitos de Hardware e Software.pdf
 
Introdução a computação 04 (1)
Introdução a computação 04 (1)Introdução a computação 04 (1)
Introdução a computação 04 (1)
 
Introdução a computação 04
Introdução a computação 04Introdução a computação 04
Introdução a computação 04
 
Computação Manycore: Uma Arquitetura muito além do Multicore!
Computação Manycore: Uma Arquitetura muito além do Multicore!Computação Manycore: Uma Arquitetura muito além do Multicore!
Computação Manycore: Uma Arquitetura muito além do Multicore!
 
Processadores core i3 e amd
Processadores core i3 e amdProcessadores core i3 e amd
Processadores core i3 e amd
 
Aula 5a - Sistemas Operacionais
Aula 5a - Sistemas OperacionaisAula 5a - Sistemas Operacionais
Aula 5a - Sistemas Operacionais
 
Resumo sistemas operativos - joao marques
Resumo   sistemas operativos - joao marquesResumo   sistemas operativos - joao marques
Resumo sistemas operativos - joao marques
 
Sismologia USP: Infra Estutura Computacional para Pesquisa
Sismologia USP: Infra Estutura Computacional para PesquisaSismologia USP: Infra Estutura Computacional para Pesquisa
Sismologia USP: Infra Estutura Computacional para Pesquisa
 

Mais de Adriano Teixeira de Souza

Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Adriano Teixeira de Souza
 
Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasAdriano Teixeira de Souza
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Adriano Teixeira de Souza
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Adriano Teixeira de Souza
 
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSSistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSAdriano Teixeira de Souza
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaAdriano Teixeira de Souza
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Adriano Teixeira de Souza
 
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)Adriano Teixeira de Souza
 

Mais de Adriano Teixeira de Souza (20)

Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
 
Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores Binárias
 
Estrutura de dados em Java - Pilhas
Estrutura de dados em Java - PilhasEstrutura de dados em Java - Pilhas
Estrutura de dados em Java - Pilhas
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - FilasEstrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória
 
Estrutura de dados em Java - Recursividade
Estrutura de dados em Java - RecursividadeEstrutura de dados em Java - Recursividade
Estrutura de dados em Java - Recursividade
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
 
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
 
Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)
 
Responsive web design
Responsive web designResponsive web design
Responsive web design
 
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSSistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
 
Estrutura de dados - Árvores Binárias
Estrutura de dados - Árvores BináriasEstrutura de dados - Árvores Binárias
Estrutura de dados - Árvores Binárias
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
 
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
 

Computação Paralela em 3 passos

  • 2. Como ganhar desempenho em programas?  3 opções Prof. Adriano Teixeira de Souza
  • 3. 1. Melhorar o ambiente de execução  Ex: Comprar um processador melhor 2. Melhorar o algoritmo  Ex: substituir um algoritmo de ordenação Bubble por Quicksort 3. Paralelização  Não é a solução para todos os problemas do mundo  Alguns problemas não são paralelizáveis (ou muito difíceis de se ganhar desempenho) Prof. Adriano Teixeira de Souza
  • 4. Programa executa em uma única CPU ◦ Dividido em uma série de instruções ◦ Executadas uma após a outra* ◦ Apenas uma instrução é executada por vez* Prof. Adriano Teixeira de Souza
  • 5. Utilização de múltiplos recursos computacionais para resolver um determinado problema ◦ Múltiplas CPUs ◦ Problemas são divididos para serem executados simultaneamente Prof. Adriano Teixeira de Souza
  • 6. Tempo/Dinheiro  Limite da computação sequencial  Solução de grandes problemas  Alocação de recursos ◦ Cluster ◦ Grids  Arquiteturas estão mudando!!! Prof. Adriano Teixeira de Souza
  • 7. Paralelismo no nível de instruções ◦ Pipeline, superescalar ◦ Implícito para o programador  Várias linhas de execução: threads Programador é ◦ Suporte do sistema operacional responsável pela  Vários núcleos exploração do  Vários processadores paralelismo 7 Prof. Adriano Teixeira de Souza
  • 9. Classificação de Flynn (1970) SISD SIMD MISD MIMD Prof. Adriano Teixeira de Souza
  • 10. SISD (Single Instruction Single Data) ◦ Computadores com um único processador ◦ Instruções executadas em seqüência ◦ Placas gráficas Prof. Adriano Teixeira de Souza
  • 11. SIMD (Single Instruction Multiple Data) ◦ Cada processador executa a mesma instrução em sincronia, mas usando dados diferentes Prof. Adriano Teixeira de Souza
  • 12. MIMD (Multiple Instructions Multiple Data)  Classe dos computadores paralelos  Não determinismo: Várias coisas ocorrendo ao mesmo tempo  Memória Compartilhada Multicore SMP (Symmetric Multi-Processing)  Memória Distribuída Cluster MPP (Massively Parallel Processors)  Híbridos Prof. Adriano Teixeira de Souza
  • 13. IBM – RoadRunner Los Alamos National Laboratory Cluster PowerXCell 8i 3.2 Ghz / Opteron DC 1.8 GHz 129.600 cores 98TB de memória SO Linux (Fedora and Red Hat enterprise editions) Interconexão: Infiniband Prof. Adriano Teixeira de Souza
  • 14. MPP Cray – Jaguar AMD x86_64 Opteron Quad Core 2300 MHz Oak Ridge National Laboratory 181.504 cores 362TB de memória Interconexão: Cray SeaStar / Infiniband SO CNL (adaptação do Suse) Prof. Adriano Teixeira de Souza
  • 15. Cluster Krusty – LCAD Unioeste 18 nós – Pentium IV 3.2 HT GHz 1 GB RAM Rede Gigabit Ethernet SO Linux Fedora Prof. Adriano Teixeira de Souza
  • 16.
  • 17. Modelo de programação: ◦ Múltiplas threads compartilhando dados  Aspecto crítico: ◦ sincronização quando diferentes tarefas acessam os mesmos dados  Ferramentas para programação: ◦ linguagens concorrentes (C#, Java ...) ◦ linguagens seqüenciais + extensões/biliotecas (OpenMP, Pthreads) Prof. Adriano Teixeira de Souza
  • 18. #include <omp.h> #include <stdio.h> Exemplo OpenMP #include <stdlib.h> int main (int argc, char *argv[]) { int nthreads, tid; #pragma omp parallel private(nthreads, tid) { /* Obtain thread number */ tid = omp_get_thread_num(); printf("Hello World from thread = %dn", tid); /* Only master thread does this */ if (tid == 0) { nthreads = omp_get_num_threads(); printf("Number of threads = %dn", nthreads); } } /* All threads join master thread and disband */ Prof. Adriano Teixeira de Souza