Definindo melhor alguns conceitos Processamento Paralelo: processamento de informação concorrente que pertencem a um ou mais processos que resolvem um único problema. Processamento Distribuído: processamento de informações em um sistema cujos recursos estão sendo compartilhados por vários programas Computador Paralelo: computador de múltiplos processadores capaz de realizar processamento paralelo Supercomputador: computador de propósito geral capaz de resolver problemas em alta velocidade, comparando com outras máquinas da mesma época. Terminologia A vazão de um dispositivo é o número de resultados produzidos por unidade de tempo. (throughtput) Speedup (aceleração): razão entre o tempo de execução necessário para o algoritmo seqüencial mais eficiente e o tempo necessário para se realizar a mesma computação numa máquina paralela Existem diversas definições de speedup: – speedup absoluto(n)= T(melhor alg. seq. )/ T( prog // c/ n proc.) – speedup aproximado(n)= T(prog.// c/1 proc.)/T( prog // c/ n proc.) – speedup relativo (n)= T(prog. // c/(n-1) proc.)/T(prog.// c/ n proc.) Computação concorrente Duas formas de se explorar a concorrência em computação em computação – Paralelismo de controle e de dados tempo t 77 ++ 33 stri1n0g + = 2=0“0c asa”? 3323 *+ 1342 9 Paralelismo de Controle aplicando-se operações diferentes a diferentes dados simultaneamente. – fluxo de dados entre processos pode ser arbitrariamente complexo Exemplo: – Pipelining: cada estágio trabalha em velocidade plena sobre uma parte particular da computação. A saída de um estágio é a entrada do estágio seguinte Paralelismo de Controle E1 E2 E3 E4 tempo info 1 info 2 info 1 info 3 info 2 info 1 info 4 info 1 info 3 info 2 Paralelismo de Dados uso de vários processadores para executar a mesma operação ao mesmo tempo sobre elementos distintos de dados Um aumento de k vezes no número de unidades funcionais levaria a um aumento de k vezes a vazão do sistema 7 + 3 10 + 200 33 + 329 Aplicações Aplicações ou programas podem ser executados mais rapidamente, considerando duas formas de paralelismo – tratar o programa seqüencial como uma série de tarefas – cada tarefa = uma instrução ou blocos de instruções OU – especificar um programa paralelo, que resolve o problema através da especificação de tarefas ou processos concorrentes Exploração de paralelismo Particionamento – identificar em um programa, as tarefas que possam ser executadas em paralelo (simultaneamente em mais de um processador) • caso extremo: cada linha do programa correspondendo a uma tarefa um bom desempenho só é alcançado se um número máximo de comandos são executados simultaneamente É preciso considerar dependências de dados problema: se quase todos os comandos são dependentes Exemplo: programa seqüencial paralelismo de instruções program nothing(){ input (A,B,C); if A>B then { C=A-B; output (C); } else { C = B-A; output (A,B,C) } A=0; B=1; for i=1 to 3 { input(C); A=A+C; B=B*C; } output (A,B,C); } Exemplo Tarefa T1 Tarefa T2 input (A,B,C); A = 0; if A>B then{ C=A-B; Tarefa T3 output (C); B=1; }else{ C = B-A; Tarefa T4 output (A,B,C) for i=1 to 3 { input(C); } A=A+C; B=B*C; } output (A,B,C)
Description: