Академический Документы
Профессиональный Документы
Культура Документы
Mario J. Jnior
Gabriel P. Silva
Ementa
Paradigma de Troca de Mensagens
PVM MPI
OpenMP PThreads
Ementa
Conceitos Bsicos de concorrncia e paralelismo. Conceitos de avaliao de desempenho. Modelos de programao paralela. Modelos de programao por troca de mensagens. Programao utilizando PVM e MPI. Exemplos. Modelos de programao com Memria Compartilhada. Conceitos de Thread e Processos. Primitivas de Sincronizao em memria compartilhada. Algoritmos paralelos com memria compartilhada. Programao utilizando bibliotecas OpenMP e Pthreads. Exemplos. Ferramentas de avaliao e depurao de programas paralelos.
Processo
Um processo criado para execuo de um programa pelo sistema operacional. A criao de um processo envolve os seguintes passos:
Preparar o descritor de processo; Reservar um espao de endereamento; Carregar um programa no espao reservado; Passar o descritor de processo para o escalonador.
Nos sistemas operacionais modernos, um processo pode gerar cpias, chamadas de processos filhos.
Processo
Os processos filhos compartilham do mesmo cdigo que os processos pais, contudo no compartilham o mesmo espao de endereamento. A troca de contexto entre processos normalmente um processo lento, que exige uma chamada ao sistema operacional, com salvamento dos registradores e tabelas de gerncia na memria, alm da restaurao dos mesmos para o processo que vai ser executado.
Threads
Muitos dos sistemas operacionais modernos suportam o conceito de threads, ou seja, tarefas independentes dentro de um mesmo processo que podem ser executadas em paralelo ou de forma intercalada no tempo, concorrentemente. Nesses sistemas, uma aplicao descrita por um processo composto de vrias threads. As threads de um mesmo processo compartilham o espao de endereamento de memria, arquivos abertos e outros recursos que caracterizam o contexto global de um processo como um todo.
Threads
Cada thread, no entanto, tem seu prprio contexto especfico, normalmente caracterizado pelo conjunto de registradores em uso, contador de programas e palavra de status do processador. O contexto especfico de uma thread semelhante ao contexto de uma funo e, conseqentemente, a troca de contexto entre threads implica no salvamento e recuperao de contextos relativamente leves, a exemplo do que ocorre numa chamada de funo dentro de um programa.
Threads
Este fato o principal atrativo em favor do uso de threads para se implementar um dado conjunto de tarefas em contraposio ao uso de mltiplos processos. A comunicao entre tarefas grandemente simplificada numa implementao baseada em threads, uma vez que neste caso as tarefas compartilham o espao de endereamento de memria do processo como um todo que engloba as threads, eliminando a necessidade do uso de esquemas especiais, mais restritos e, usualmente, mais lentos de comunicao entre processos providos pelos sistemas operacionais.
Threads
Thread 1
PC
Thread 2
PC
Thread 3
PC
Dados Privados
Dados Privados
Dados Privados
Dados Compartilhados
Paralelismo x Concorrncia
Execuo concorrente est associada ao modelo de um servidor atendendo a vrios clientes atravs de uma poltica de escalonamento no tempo. Execuo paralela est associada ao modelo de vrios servidores atendendo a vrios clientes simultaneamente no tempo. As linguagens de programao podem ento ser classificadas como seqenciais, concorrentes e paralelas. Estudaremos diversos padres de bibliotecas de funes que permitem a codificao de programas paralelos utilizando linguagens convencionais (C, FORTRAN, JAVA, etc.).
Memria Compartilhada
Comunicao atravs de variveis em memria compartilhada. Uso de threads e/ou processos para mapeamento de tarefas. Threads ou processos podem ser criados de forma dinmica ou esttica. Sincronizao
Modelos de Programao
Arquitetura de Comunicao
Troca de Mensagens
Comunicao atravs do envio explcito de mensagens. Tarefas so mapeadas em processos, cada um com sua memria privada. Processos podem ser criados de forma esttica ou dinmica. Sincronizao feita de forma implcita pela troca de mensagens ou por operaes coletivas de sincronizao (barreiras).
send(&x, 2);
Comunicao Sncrona
O processo que deseja enviar uma mensagem faz uma requisio inicial de autorizao para enviar a mensagem ao processo destinatrio. Depois de receber essa autorizao, a operao de envio ("send") realizada. A operao de envio s se completa quando a operao de recepo (receive) correspondente retorna uma mensagem de acknowlegement. Portanto, ao se concluir a operao de envio, os buffers e estruturas de dados utilizados na comunicao podem ser reutilizados.
Comunicao Sncrona
Este modo de comunicao simples e seguro, contudo elimina a possibilidade de haver superposio entre o processamento da aplicao e o processamento da transmisso das mensagens. Requer um protocolo de quatro fases para a sua implementao do lado do transmissor: pedido de autorizao para transmitir; recebimento da autorizao; transmisso propriamente dita da mensagem; e recebimento da mensagem de acknowledgement.
Comunicao Sncrona
Processo 1 Processo 2
Processo Suspenso
send();
recv();
Comunicao Sncrona
Processo 1 Processo 2
send();
recv();
Processo Suspenso
Comunicao Assncrona
Necessita de um buffer para guardar a mensagem
Processo 1 Processo 2
Buffer de mensagens
tempo
send();
recv();
Continua o processo
L buffer de mensagen
Comunicao Assncrona
Processo 1 Processo 2
Buffer de mensagens
tempo
send();
recv();
Continua o processo
Continua o processo
Alocao de Tarefas
As tarefas devem ser alocadas a processos ou threads de modo que:
Haja um balanceamento de carga adequado e a reduo do tempo de espera por conta da sincronizao; Possa haver uma reduo da comunicao entre processos ou threads; A sobrecarga do gerenciamento dessa alocao, em tempo de execuo, seja a mais reduzida possvel (esttica x dinmica).
Implementao da Funcionalidade
A implementao da funcionalidade dos processos ou threads:
Depende do modelo de programao adotado e da eficincia com que as primitivas deste modelo so suportadas pela plataforma; Explora a localidade dos dados; Reduo da serializao no acesso a recursos compartilhados; Reduo do custo de comunicao e da sincronizao visto pelos processadores; Escalonar as tarefas de modo que aquelas que tenham uma maior cadeia de dependncia sejam executadas mais cedo.
Avaliao de Desempenho
Medidas de Desempenho
Speed-up (Acelerao):
Mede a razo entre o tempo gasto para execuo de um algoritmo ou aplicao em um nico processador e o tempo gasto na execuo com n processadores:
Speedup
Lei de Amdahl
ts fts Seo Serial (a) Um processador (b) Mltiplos Processadores (1- f)ts Sees Paralelizveis
p processadores
tp
(1 - f)ts/p
Lei de Amdahl
O fator de acelerao dado por:
ts p S(p) fts (1 f )ts /p 1 (p 1)f
Speedup x Processadores
20 f = 0%
16 12 f = 5% 8 4 f = 10% f = 20%
12
16
20
Nmero de processadores p
Speedup x Processadores
Mesmo com um nmero infinito de processadores, o speedup mximo est limitado a 1/f , onde f a frao serial do programa. Exemplo: Com apenas 5% da computao sendo serial, o speedup mximo 20, no interessando o nmero de processadores em uso.
Escalibidade
Um sistema dito escalvel quando sua eficincia se mantm constante medida que o nmero de processadores (n) aplicado soluo do problema cresce. Se o tamanho do problema mantido constante e o nmero de processadores aumenta, o overhead de comunicao tende a crescer e a eficincia a diminuir. A anlise da escalabilidade considera a possibilidade de se aumentar proporcionalmente o tamanho do problema a ser resolvido medida que n cresce, de forma a contrabalanar o natural aumento do overhead de comunicao quando n cresce.
Escalibidade
A anlise da escalabilidade considera a possibilidade de se aumentar proporcionalmente o tamanho do problema a ser resolvido medida que n cresce de forma a contrabalanar o natural aumento do overhead de comunicao quando n cresce. Um problema de tamanho P usando N processadores leva um tempo T para ser executado. O sistema dito escalvel se um problema de tamanho 2P em 2N processadores leva o mesmo tempo T. Escalabilidade uma propriedade mais desejvel que o speed-up.
Granulosidade
Granulosidade a relao entre o quantidade de computao e a quantidade de comunicao. uma medida de quanto trabalho realizado antes dos processos se comunicarem. A granulosidade deve estar de acordo com o tipo de arquitetura:
Bibliografia
PVM: Parallel Virtual Machine A Users Guide and Tutorial for Network Parallel Computing
Geist, A.; Beguelin, A.;Dongarra, J.; Jiang, W.; Mancheck, B.; Sunderam, V. The MIT Press, 1994 Pacheco, P.S., Morgan Kaufmann Publishers, 1997.
Gropp, W.; Lusk, E.; Thakur, R. The MIT Press, 1999. Quinn, Michael J. McGraw-Hill, 1994.
Bibliografia
Parallel Programming in OpenMP
Chandra, R. et alli; Morgan Kaufman Publishers, 2001 Nicholas, D.; Butlar, J.; Farell, P. O`Reilly and Associates Inc., 1999 Kleiman, S.; Shah, D.; Smaalders, B. Sun Soft Press, Prentice-Hall, 1996
Pthreads Programming
Andrews, Gregory R. Addison-Wesley, 2000 Foster, Ian Addison-Wesley Pub. Co, 1994
Avaliao
Quatro trabalhos (Individual, prazo de 15 dias)
Quatro Provas