Sistemas Distribuídos - Computação Paralela - Introdução

2,888 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,888
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
151
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Sistemas Distribuídos - Computação Paralela - Introdução

  1. 1. Computação ParalelaProf. Adriano Teixeira de Souza
  2. 2. ◦ Como ganhar desempenho em programas?  3 opções Prof. Adriano Teixeira de Souza
  3. 3. 1. Melhorar o ambiente de execução  Ex: Comprar um processador melhor2. Melhorar o algoritmo  Ex: substituir um algoritmo de ordenação Bubble por Quicksort3. 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. 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. 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. 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. 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
  8. 8. Prof. Adriano Teixeira de Souza
  9. 9.  Classificação de Flynn (1970) SISD SIMD MISD MIMD Prof. Adriano Teixeira de Souza
  10. 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. 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. 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. 13. IBM – RoadRunner Los Alamos National LaboratoryClusterPowerXCell 8i 3.2 Ghz / Opteron DC 1.8 GHz129.600 cores98TB de memóriaSO Linux (Fedora and Red Hat enterprise editions)Interconexão: Infiniband Prof. Adriano Teixeira de Souza
  14. 14. MPP Cray – JaguarAMD x86_64 Opteron Quad Core 2300 MHz Oak Ridge National Laboratory181.504 cores362TB de memóriaInterconexão: Cray SeaStar / InfinibandSO CNL (adaptação do Suse) Prof. Adriano Teixeira de Souza
  15. 15. Cluster Krusty – LCAD Unioeste18 nós – Pentium IV 3.2 HT GHz1 GB RAMRede Gigabit EthernetSO Linux Fedora Prof. Adriano Teixeira de Souza
  16. 16.  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
  17. 17. #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

×