Escolar Documentos
Profissional Documentos
Cultura Documentos
Sumrio
Viso Geral Classificao das Arquiteturas Tipos de Paralelismo Programao Paralela Modelos de Computao Paralela Paradigmas da Computao Paralela Metricas de avaliao do desempenho Cluster de computadores Bibliotecas de passagem de mensagem MPI (Message Passing Interface) Prticas Bibliografia
Terminologias importantes
Tarefa
Tarefas paralelas
Tarefas cujo processamento independente um dos outros Execuo de um programa de forma seqencial, uma instruo de cada vez
Execuo serial
Melhorando o desempenho
Melhorando o desempenho
Melhorando o desempenho
Parad a
Melhorando o desempenho
Otimizar os algoritmos
Melhorando o desempenho
Melhorando o desempenho
Ciclo de busca (Fetch Cycle) Buscar instruo / Executar
instruo Existem 3 Prxima instruo para melhorar o maneiras Partid Ciclo de busca Parad desempenho: Cycle) a (Fetch a
Trabalhar
duro Executar Trabalhar inteligentemente Prxima instruo instruo Pedir ajuda Ciclo de instruo duplo
Buscar instruo /
Mltiplos computadores para resolver o problema: isto, aumenta o nmero de instrues executadas por ciclo de clock.
Taxonomia de Flynn
SISD: a clssica mquina seqencial de Von Neumann; SIMD: uma mquina que trabalha com uma unidade de controle nica, isto , resolve uma instruo por vez; MISD: Multiple Instruction Single Data; MIMD: Envolve a maior parte dos computadores paralelos. So mquinas construdas com CPUs mltiplas que resolvem muitas instrues e conjuntos de dados ao mesmo tempo.
Instrues so executadas uma aps outra Pode-se saber o que est ocorrendo exatamente em cada instante de tempo e reproduzir o processo passo a passo mais tarde Computadores pessoais, estaes de trabalho com uma nica CPU, minicomputadores e mainframes
Determinismo
Exemplos:
TEMPO:
t1
t2
MULT 4 Processador P
t3
STORE A(1)
Sncrono
Todas as unidades devem receber a mesma instruo no mesmo instante de tempo de modo que todas possam execut-la de forma simultnea Em cada instante de tempo s existe uma instruo sendo executada por vrias unidades, ento se o programa executado com os mesmos dados de entrada, utilizando o mesmo nmero de unidades de execuo, o resultado ser o mesmo
Determinismo
Apropriado para aplicaes que utilizam paralelismo orientado a instruo Hoje em dia existem poucos supercomputadores SIMD vetorizados pipelined
TEMPO:
P1 LOAD A(1) P1
t1
t2
MULT 4 P1
...
t3
STORE A(1)
Adequado
subrotinas
Requerimentos de comunicao menos restritos que paralelismo orientado a instruo (Ass) IBM SP - *NOW - Intel Paragon - Fujitsu VPP5000 (Sin) IBM RS/6000
Exemplos:
P2
P3
Inicializa Dispara tarefa A Dispara tarefa B Tarefa B Espera por processador Fim Dispara tarefa C Espera por processador Dispara tarefa D Espera fim de todas as tarefas Junta resultados Fim Fim Tarefa C
Tarefa A
Fim
Tarefa D Fim
SISD
SIMD
MIMD
Vectorprocessors
Arrayprocessors
Multiprocessors
Multicomputers
Von Neumann
UMA*
COMA*
NUMA*
MPP
COW
NOW
* Uniform Memory Access Cache-only Memory Architecture Non-Uniform Memory Access
HNOW
CoHNOW
Tipos de paralelismo
Paralelismo de dados
Cada
tarefa executa uma mesma srie de clculos sobre diferentes dados Localidade dos dados parte essencial do algoritmo Exemplos:
clculo da mdia de temperatura em um estado, procura de pessoas com mais de 65 anos em uma populao Jogo de xadrez:
Tipos de paralelismo
Paralelismo funcional
Cada
tarefa executa clculos diferentes para resolver um problema Tarefas podem ser executadas sobre mesmos dados ou dados diferentes
Exemplo:
Modelagem de um ecossistema, onde cada programa calcula a populao de um determinado grupo que depende dos vizinhos
Programacao Paralela
Um sistema paralelo e distribudo consiste de colees de processadores, dos mesmos tipos ou no, interconectados de acordo com uma determinada topologia, possibilitando assim a realizao de atividades e troca de informaes entre os mesmos
Cceres, SBC 2001.
Objetivos
Reduzir o tempo total do processamento Aumentar o desempenho de um sistema
Problemas
Problemas especificos podem ser executados em modelos paralelos a um custo menor que em um super computador dedicado.
2100
2100
2100
2100
P E R F O R M A N C E
?
2100 2100 2100 2100
2100
Administrative Barriers
Individual Group Department Campus State National Globe Inter Planet Universe
Desktop
(Single Processor?)
Local Cluster
Enterprise Cluster/Grid
Global Cluster/Grid
Memoria Compartilhada
global aos dados. Controle de acesso a memria complexo. Evitar que dois processadores acessem a memria simultaneamente. Este tipo de controle (acesso a memria) torna-se o grande "gargalo" com uma grande quantidade de processadores.
Memoria Compartilhada
Proc
Proc
Proc
Proc
Memoria Distribuida
Memoria Distribuida
Proc
Proc
Proc
Proc
Tcnicas eficientes para simular memria compartilhada em mquinas inicialmente com memria distribuda. Consiste em ligar-se vrios processadores atravs de uma rede de alta velocidade e simular memria compartilhada atravs de troca de mensagens. Cada processador determina uma rea da sua memria que ser compartilhada Necessita gerenciador de memria.
Proc
Proc
Proc
Proc
Interconexo
Dois ou mais programas podem ser executados de forma coordenada, em uma determinada ordenao, de forma que o output de cada um redirecionado como input do prximo.
Master / Worker
A
ideia consiste em ter um processo master, que divide uma certa tarefa em n partes independentes. Cada uma dessas partes vai sendo atribuda a um worker que a realiza. Sempre que um worker termina a sua tarefa envia o resultado para o master, que se ainda tiver tarefas a realizar, lhe envia uma nova tarefa.
Master / Worker
Executa
Speedup
S ( n) = tempo de execuo serial t = s tempo de execuo paralela t p
Eficincia
E= tempo de execuo serial t = s tempo de execuo paralela nmero de processado res t p n
Gera a frao de tempo que os processadores esto sendo utilizados para processamento
Cluster de computadores
uma coleo de maquinas que se utilizam das redes de computadores comerciais, locais e / ou remotas para paralelizar suas transaes; Utiliza um software de passagem de mensagem que permite que um conjunto heterogneo ou homogneo de computadores (srie, paralelo ou vetorial) seja visto como uma nica mquina.
Cluster de computadores
Vantagens
Cluster de computadores
Computador
Problema
Cluster de computadores
Problema / n Problema / n
Problema / n
As pesquisas mostram que a utilizao de ciclos da CPU de estaes de trabalho so tipicamentes < 10%;
Normalmente uma estao de trabalho utilizada por um individuo, grupo ou departamento. - elas so dedicadas para o uso exclusivo pelos "donos".
O desempenho de estaes de trabalho vem crescendo rapidamente; As organizaes relutam para comprar grandes supercomputadores , devido aos altos custos e perodo de vida til pequeno; As ferramentas de desenvolvimento para estaes de trabalho esto mais maduras que as solues proprietrias para computadores paralelos - principalmente devido natureza no normal de muitos sistemas paralelos
Clusters de estaes de trabalho so uma alternativa barata e disponvel para computadores de alto desempenho especializado (HPC); A largura de banda para comunicao entre workstations cresceu muito nas novas tecnologias de rede e os protocolos podem ser implementados em LANs e LDNs; Cluster de Workstation so fceis de serem integrados dentro de redes existentes.
Arquitetura de clusters
Os clusters podem ser ampliados: com o aumento da escalabilidade (up, down, and across):
O desempenho de ns individuais podem ser melhorados adicionando recursos adicionais (memria, disco) Novos ns podem ser adicionados ou podem ser removidos Clusters de clusters e Metacomputing Threads, PVM, MPI, C, C++, Java, Parallel C++, Compiladores, Debuggers, OS, etc Para resolver os "principais desafios" ("grand challenge")
Aplicaes de Clusters
Aplicaes Internet
Web server / searching ASPs (application service providers) eMail, eChat, ePhone, eBook, eCommerce, eBank, eSociety, eAnything! Portais
sistemas de controle de processo, bancos, controle de reatores nucleares, guerra nas estrelas, e muitas outras situaes.
Beowulf (CalTech and NASA) - USA CCS (Computing Centre Software) - Paderborn, Germany CEBACAD Centro de Computao de Alto Desempenho. Salvador, Ba, Br. Condor - Wisconsin State University, USA DQS (Distributed Queuing System) - Florida State University, US. EASY - Argonne National Lab, USA HPVM -(High Performance Virtual Machine),UIUC&now UCSB,US far - University of Liverpool, UK Gardens - Queensland University of Technology, Australia MOSIX - Hebrew University of Jerusalem, Israel MPI (MPI Forum, MPICH is one of the popular implementations) NOW (Network of Workstations) - Berkeley, USA NIMROD - Monash University, Australia NetSolve - University of Tennessee, USA PBS (Portable Batch System) - NASA Ames and LLNL, USA PVM - Oak Ridge National Lab./UTK/Emory, USA
Quem j chegou!
Myrinet SAN Fast comm. Ether/ATM switched external net Global OS Self Config
Basic unit:
2
Pentium 133 12 Pentium 166 03 Pentium 500 - 01 Cluster remoto na UAB Conexo 512 Kbps Conexo 25 Mbps
Criada em 1989, no Oak Ridge National Laboratory. Vaidy Sunderam e Al Geist desenvolveram a primeira verso (PVM 1.0.), que foi usada internamente (no saiu comercialmente). A Verso 2 do PVM foi escrita na Universidade de Tennessee e lanada em Maro de 1991.
O PVM composto de uma biblioteca de programao e um conjunto de programas que constituem a mquina virtual.
Tem verses para trabalhar com C, C++ e Fortran. Trabalha com o conceito de mquina virtual. Possui um programa daemon (pvmd3 ou pvmd), que responsvel por constituir e gerenciar a mquina virtual. uma capa a mais sobre o sistema operacional da mquina.
Principais problemas:
Capa extra de software sobre o S.O > Overhead No suporta CoHNOWs
Foi desenvolvido pelo MPI FORUM e lanado em Junho de 1995. O MPI Forum foi um consrcio que reuniu laboratrios de pesquisa governamentais, universidades e empresas. A idia era lanar um padro.
O MPI no uma nova linguagem de programao, sim uma biblioteca que pode ser chamada em programas escritos em C e Fortran.
Usa rsh (ou ssh) para fazer a conexo entre as mquinas pertencentes a mquina paralela virtual Rsh Remote Shell SSh Secure Shell Possui diversas implementaes. Por ser um padro, qualquer um pode desenvolver sua verso do MPI
MPICH mais usada e documentada.
O MPI no uma nova linguagem de programao, sim uma biblioteca que pode ser chamada em programas escritos em C e Fortran.
http://www-unix.mcs.anl.gov/~gropp/
Principais problemas: Pouca documentao de como funciona de fato as comunicaes Suporte deficiente a CoHNOWS
Balanceamento de carga
Quanto cada processador poder assumir de trabalho sem que fique sobrecarregado enquanto outro fique ocioso. Influncia do tempo de resposta dos diferentes tipos de registradores microinstrues etc. Tipo de rede que interliga os computadores certamente influenciar na transmisso de mensagens entre as mesmas.
Inicializa o MPI. Primeira linha de qualquer programa com MPI. argc e argv - argumentos
MPI_Send (pa1,pa2,pa3,pa4,pa5,pa6) :
Pa1 = Dados da mensagem que se deseja passar; Pa2 = Numero de dados dentro da mensagem; Pa3 = Tipo de dado a ser transmitido; Pa4 = Id de destino; Pa5 = Tag; Pa6 = Comunicador. Um comunicador um dado objeto que especifica o escopo de uma operao de comunicao que contem grupos de processos envolvidos na aplicao. No Caso deste projeto, o grupo de comunicao definido fora o MPI_COMM_WORLD.
MPI_Recv(pa1,pa2,pa3,pa4,pa5,pa6,pa7) :
Pa1 = Dados da mensagem que se deseja receptar; Pa2 = Numero de dados dentro da mensagem. Pa3 = Tipo de dado a ser receptado; Pa4 = Id de origem; Pa5 = Tag; Pa6 = Comunicador ; Pa7 = Status. Status. MPI_SOURCE, Id de quem enviou, MPI_TAG, identificador do Tag da mensagem e MPI_ERROR, cdigo de erro da mensagem.
mpicc Compila e "linka" programas MPI escritos em C Exemplo: mpicc o programaXPTO programaXPTO.c mpirun O "mpirun" um script de shell, usado para executar programas MPI escritos em C Exemplo: mpirun np 4 programaXPTO
Nmero de processadores
MPI_Comm_rank()
Determina o rank do processo no communicador Determina o tamanho do grupo associado com um comunicador (nmero de processos que esto executando o programa. Captura o tempo em segundos Sincroniza os processos
MPI_Comm_size()
MPI_Wtime()
MPI_Barrier()
Cluster MPI:
Machines.LINUX
Exemplo:
# Change this file to contain the machines that you want to use to run MPI jobs on. The # format is one host name per line, with either hostname or hostname:n where n is the # number of processors in an SMP. The hostname should be the same as the result # from the command "hostname # Cluster cebacad.net cebacad1.cebacad.net # Master cebacad2.cebacad.net # Trabalhador cebacad3.cebacad.net # Trabalhador cebacadn.cebacad.net # Trabalhador
Prtica 1 Recebe.c
Algoritmo que utiliza a rotina MPI_Recv (recebe). Ao ser compilado (mpicc o 2_recebe_1p 2_recebe_1p.c e ser executado (mpirun np <nmero de processadores> 2_recebe_1p). Os trabalhadores retornam as mensagens: Nomes dos trabalhadores; O resultado do clculo da raiz quadrada de um nmero pr-definido(16); O tempo de processamento dos trabalhadores; O tempo de processamento total do cluster (computo + comunicao.
Prtica 2 EnviaRecebe.c
Algoritmo que utilizam as rotinas MPI_Send (envia) e MPI_Recv (recebe). Ao ser compilado (mpicc o 3_envia_recebe_1c 3_envia_recebe_1c.c e ser executado (mpirun np <nmero de processadores> 3_envia_recebe_1c). O mestre envia um nmero para que os trabalhadores calculem a raiz quadrada. Os trabalhadores calculam a raiz do nmero recebido e retornam as mensagens: Nomes dos trabalhadores; Resultado do processamento (clculo da raiz quadrada do nmero recebido); O tempo de processamento dos trabalhadores; O tempo de processamento total do cluster (computo + comunicao).
Prtica 3 Funcao.c
Algoritmo que utiliza as rotinas MPI_Send (envia) e MPI_Recv (recebe). Ao ser compilado (mpicc o 4_funcao_1b 4_funcao_1b.c e ser executado (mpirun np 4 <este algoritmo foi desenvolvido para rodar com 4 hosts> 4_funcao_1b) . O mestre: Cria os processos; Mostra o formato da funo(y = a*x^3 + b*x^2 + c*x + d); Pede os valores de a, b, c e d da funo; Pede o valor de x; Envia os valores de a, b, c e de x, para os trabalhadores. Trabalhadores: Calculam a funo e retornam valor para o mestre. O mestre: Mostra o resultado da funo
Prtica 4 Matriz.c
Algoritmo que utiliza as rotinas MPI_Send (envia) e MPI_Recv (recebe). Ao ser compilado (mpicc o matriz matriz.c e ser executado (mpirun np 4 <numero de computadores> matriz) . O mestre: Seleciona as posies das linhas e colunas; Envia as linhas e colunas correspondentes para um trabalhador; Trabalhadores: Calculam a multiplicao e retornam um valor O mestre: Recebe um valor e armazena na matriz resultado.
Bibliografia bsica
BUYYA R. High Performance Cluster Computing: Architectures and Systems, v. 1. Prentice Hall PTR. 1999. BUYYA R. High Performance Cluster Computing: Architectures and Systems, v. 2. Prentice Hall PTR. 1999. CEBACAD. Centro Baiano de Computao de Alto Desempenho, Universidad Catlica do Salvador - UCSAL, Curso de Bacharelado em Informtica, Departamento de informtica. Instalao e configurao do MPICH Verso 1.2.5., 2003. Guia 2003.s GROPP, W.; LUX, E.; THAKUR, R. Using MPI-2: Advanced Features of the Message-Passing Interface. Scientific and Engineering Computation Series, Massachusetts Intitute of Technology. 1999a. MPIS. The Message Passing Interface (MPI) Standard. Disponvel em: <http://www-unix.mcs.anl.gov/mpi/>. Acessado en: 19 novembro 2002). 2002. SOUZA, Josemar; FURTADO, Adhvan; REBOUCAS, Andr; REXACHS, Dolores; LUQUE, Emilio; Efficient Algorithm Execution in a Collection of HNOWs. In: International Conference on Computer Science, Software Engineering, Information Technology, e-business, and Application (CSITeA'02), 1., 2002. Proceeding... Brasil: [s.n.], 2002a.
Bibliografia bsica
SOUZA, Josemar; FURTADO, Adhvan; REBOUAS, Andr; REXACHS, Dolores; LUQUE, Emilio. Architectures for an Efficient Application Execution in a Collection of HNOWs. In: D. Kranzlmller et al. (Eds.): Euro PVM/MPI 2002, LNCS 2474, pp.450460, 2002. Springer-Verlag Berlin Heidelberg 2002. Linz, Austria. 2002. SOUZA, Josemar; FURTADO, Adhvan; REBOUAS, Andr; REXACHS, Dolores; LUQUE, Emilio; ARGOLLO, Eduardo. Application Execution Over a CoHNOWS. In: International Conference on Computer Science, Software Engineering, Information Technology, e-business, and Application (CSITeA'03), 1., 2003. Proceeding... Brasil: ISBN: 0-9742059-0-7, 2003a. SOUZA, Josemar; LUQUE, Emlio; REXACHS, Dolores. Anlise da distribuio de carga em cluster heterogneo. In: Congreso Argentino de Ciencias de la Computacin (CACIC00), 6., 2000. Proceeding... Argentina: [s.n.], 2000b. SOUZA, Marcelo; SOUZA, Josemar; MICHELI, Milena. Influncia da comunicao no rendimento de uma mquina paralela virtual baseada em Redes Atm. In: Workshop de Porto Alegre Internet 2 e Redes de Alta Velocidade, 1., 2000. Proceeding... Brasil: [s.n.], 2000. Sterling, Thomas L., etal. How to Build a Beowulf A guide to the implementation and Application of PC Clusters, MIT Press.
Programao Paralela
Prof. Leandro Coelho