sistemas distribuídos - computação paralela

18
Computação Paralela Prof. Adriano Teixeira de Souza

Upload: adriano-teixeira-de-souza

Post on 05-Jul-2015

1.277 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Sistemas Distribuídos - Computação Paralela

Computação Paralela

Prof. Adriano Teixeira de Souza

Page 2: Sistemas Distribuídos - Computação Paralela

◦ Como ganhar desempenho em programas?

3 opções

Prof. Adriano Teixeira de Souza

Page 3: Sistemas Distribuídos - Computação Paralela

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

Page 4: Sistemas Distribuídos - Computação Paralela

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

Page 5: Sistemas Distribuídos - Computação Paralela

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

Page 6: Sistemas Distribuídos - Computação Paralela

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

Page 7: Sistemas Distribuídos - Computação Paralela

Paralelismo no nível de instruções ◦ Pipeline, superescalar

◦ Implícito para o programador

Várias linhas de execução: threads ◦ Suporte do sistema operacional

Vários núcleos

Vários processadores

7

Programador é responsável pela exploração do paralelismo

Prof. Adriano Teixeira de Souza

Page 8: Sistemas Distribuídos - Computação Paralela

Prof. Adriano Teixeira de Souza

Page 9: Sistemas Distribuídos - Computação Paralela

Classificação de Flynn (1970)

SISD SIMD

MISD MIMD

Prof. Adriano Teixeira de Souza

Page 10: Sistemas Distribuídos - Computação Paralela

SISD (Single Instruction Single Data)

◦ Computadores com um único processador

◦ Instruções executadas em seqüência

◦ Placas gráficas

Prof. Adriano Teixeira de Souza

Page 11: Sistemas Distribuídos - Computação Paralela

SIMD (Single Instruction Multiple Data) ◦ Cada processador executa a mesma instrução

em sincronia, mas usando dados diferentes

Prof. Adriano Teixeira de Souza

Page 12: Sistemas Distribuídos - Computação Paralela

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

Page 13: Sistemas Distribuídos - Computação Paralela

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

IBM – RoadRunner

Los Alamos National Laboratory

Prof. Adriano Teixeira de Souza

Page 14: Sistemas Distribuídos - Computação Paralela

MPP

AMD x86_64 Opteron Quad Core 2300 MHz

181.504 cores

362TB de memória

Interconexão: Cray SeaStar / Infiniband

SO CNL (adaptação do Suse)

Cray – Jaguar

Oak Ridge National Laboratory

Prof. Adriano Teixeira de Souza

Page 15: Sistemas Distribuídos - Computação Paralela

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

Page 16: Sistemas Distribuídos - Computação Paralela
Page 17: Sistemas Distribuídos - Computação Paralela

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

Page 18: Sistemas Distribuídos - Computação Paralela

#include <omp.h>

#include <stdio.h>

#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 = %d\n", tid);

/* Only master thread does this */

if (tid == 0)

{

nthreads = omp_get_num_threads();

printf("Number of threads = %d\n", nthreads);

}

} /* All threads join master thread and disband */

Exemplo OpenMP

Prof. Adriano Teixeira de Souza