Você está na página 1de 18

Computao Paralela

Prof. Adriano Teixeira de Souza


Como ganhar desempenho em
programas?
3 opes

Prof. Adriano Teixeira de Souza
1. Melhorar o ambiente de execuo
Ex: Comprar um processador melhor

2. Melhorar o algoritmo
Ex: substituir um algoritmo de ordenao
Bubble por Quicksort

3. Paralelizao
No a soluo para todos os problemas do
mundo
Alguns problemas no so paralelizveis (ou
muito difceis de se ganhar desempenho)
Prof. Adriano Teixeira de Souza
Programa executa em uma nica CPU
Dividido em uma srie de instrues
Executadas uma aps a outra*
Apenas uma instruo executada por vez*
Prof. Adriano Teixeira de Souza
Utilizao de mltiplos recursos computacionais
para resolver um determinado problema
Mltiplas CPUs
Problemas so divididos para serem executados
simultaneamente
Prof. Adriano Teixeira de Souza
Tempo/Dinheiro
Limite da computao sequencial
Soluo de grandes problemas
Alocao de recursos
Cluster
Grids
Arquiteturas esto mudando!!!

Prof. Adriano Teixeira de Souza
Paralelismo no nvel de instrues
Pipeline, superescalar
Implcito para o programador
Vrias linhas de execuo: threads
Suporte do sistema operacional
Vrios ncleos
Vrios processadores
7
Programador
responsvel pela
explorao do
paralelismo
Prof. Adriano Teixeira de Souza
Prof. Adriano Teixeira de Souza
Classificao de Flynn (1970)
SISD SIMD
MISD MIMD
Prof. Adriano Teixeira de Souza
SISD (Single Instruction Single Data)

Computadores com um nico processador
Instrues executadas em seqncia
Placas grficas
Prof. Adriano Teixeira de Souza
SIMD (Single Instruction Multiple Data)
Cada processador executa a mesma instruo
em sincronia, mas usando dados diferentes
Prof. Adriano Teixeira de Souza
MIMD (Multiple Instructions Multiple Data)
Classe dos computadores paralelos
No determinismo:
Vrias coisas ocorrendo ao mesmo tempo

Memria Compartilhada
Multicore
SMP (Symmetric Multi-Processing)

Memria Distribuda
Cluster
MPP (Massively Parallel Processors)

Hbridos

Prof. Adriano Teixeira de Souza
Cluster
PowerXCell 8i 3.2 Ghz / Opteron DC 1.8 GHz
129.600 cores
98TB de memria
SO Linux (Fedora and Red Hat enterprise editions)
Interconexo: 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 memria
Interconexo: Cray SeaStar / Infiniband
SO CNL (adaptao do Suse)
Cray Jaguar
Oak Ridge National Laboratory
Prof. Adriano Teixeira de Souza
Cluster Krusty LCAD Unioeste
18 ns Pentium IV 3.2 HT GHz
1 GB RAM
Rede Gigabit Ethernet
SO Linux Fedora
Prof. Adriano Teixeira de Souza
Modelo de programao:
Mltiplas threads compartilhando dados

Aspecto crtico:
sincronizao quando diferentes tarefas acessam os
mesmos dados

Ferramentas para programao:
linguagens concorrentes (C#, Java ...)
linguagens seqenciais + extenses/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

Você também pode gostar