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
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 */