sistemas distribuídos - computação paralela

Post on 05-Jul-2015

1.278 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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 ◦ 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

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

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

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

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>

#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

top related