SlideShare ist ein Scribd-Unternehmen logo
1 von 18
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

Processadores
ProcessadoresProcessadores
Processadores
dsde
 
Aula 02-processos-e-threads-tanenbaum-parte-1
Aula 02-processos-e-threads-tanenbaum-parte-1Aula 02-processos-e-threads-tanenbaum-parte-1
Aula 02-processos-e-threads-tanenbaum-parte-1
Cristiano Pires Martins
 
Aula07 - Arquitetura e Manutenção de Computadores
Aula07 - Arquitetura e Manutenção de ComputadoresAula07 - Arquitetura e Manutenção de Computadores
Aula07 - Arquitetura e Manutenção de Computadores
Jorge Ávila Miranda
 

Was ist angesagt? (20)

Processador Intel Core i7
Processador Intel Core i7Processador Intel Core i7
Processador Intel Core i7
 
Visão Geral: Introdução
Visão Geral: IntroduçãoVisão Geral: Introdução
Visão Geral: Introdução
 
Processamento paralelo
Processamento paraleloProcessamento paralelo
Processamento paralelo
 
Gerências de Processos: Threads
Gerências de Processos: ThreadsGerências de Processos: Threads
Gerências de Processos: Threads
 
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
 
Processadores
ProcessadoresProcessadores
Processadores
 
Trabalho sobre processadores
Trabalho sobre processadoresTrabalho sobre processadores
Trabalho sobre processadores
 
Pocessador intel 80286, vantagens e desvantagens
Pocessador intel 80286, vantagens e desvantagensPocessador intel 80286, vantagens e desvantagens
Pocessador intel 80286, vantagens e desvantagens
 
Processadores
ProcessadoresProcessadores
Processadores
 
Aula04 - Arquitetura e manutanção de Computadores
Aula04 - Arquitetura e manutanção de ComputadoresAula04 - Arquitetura e manutanção de Computadores
Aula04 - Arquitetura e manutanção de Computadores
 
Impressoes apos 2 dias utilizando o ubuntu io t com raspberry pi
Impressoes apos 2 dias utilizando o ubuntu io t com raspberry piImpressoes apos 2 dias utilizando o ubuntu io t com raspberry pi
Impressoes apos 2 dias utilizando o ubuntu io t com raspberry pi
 
F oc aula_04
F oc aula_04F oc aula_04
F oc aula_04
 
4 cpu
4 cpu4 cpu
4 cpu
 
Sistemas operacionais 04
Sistemas operacionais   04Sistemas operacionais   04
Sistemas operacionais 04
 
Gerência de Armazenamento: Sistemas de Armazenamento em Massa
Gerência de Armazenamento: Sistemas de Armazenamento em MassaGerência de Armazenamento: Sistemas de Armazenamento em Massa
Gerência de Armazenamento: Sistemas de Armazenamento em Massa
 
Lab so-abertos-unidade3
Lab so-abertos-unidade3Lab so-abertos-unidade3
Lab so-abertos-unidade3
 
Apostila 5 processos e threads
Apostila 5   processos e threadsApostila 5   processos e threads
Apostila 5 processos e threads
 
Mmm aula 05
Mmm   aula 05Mmm   aula 05
Mmm aula 05
 
Aula 02-processos-e-threads-tanenbaum-parte-1
Aula 02-processos-e-threads-tanenbaum-parte-1Aula 02-processos-e-threads-tanenbaum-parte-1
Aula 02-processos-e-threads-tanenbaum-parte-1
 
Aula07 - Arquitetura e Manutenção de Computadores
Aula07 - Arquitetura e Manutenção de ComputadoresAula07 - Arquitetura e Manutenção de Computadores
Aula07 - Arquitetura e Manutenção de Computadores
 

Ähnlich wie Sistemas Distribuídos - Computação Paralela

Sistemas Distribuídos - Grids Computacionais
Sistemas Distribuídos - Grids ComputacionaisSistemas Distribuídos - Grids Computacionais
Sistemas Distribuídos - Grids Computacionais
Adriano Teixeira de Souza
 
Resumo de S.O.
Resumo de S.O.Resumo de S.O.
Resumo de S.O.
dannas_06
 
Programação Paralela - Threads
Programação Paralela - ThreadsProgramação Paralela - Threads
Programação Paralela - Threads
Glaucio Scheibel
 
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 04
Felipe Pereira
 

Ähnlich wie Sistemas Distribuídos - Computação Paralela (20)

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
 
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
 
Evolução das CPUs
Evolução das CPUsEvolução das CPUs
Evolução das CPUs
 
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
 
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
 

Mehr von 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árias
Adriano 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 - JMS
Adriano 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 Java
Adriano 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
 

Mehr von 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)
 

Sistemas Distribuídos - Computação Paralela

  • 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