650 likes | 899 Views
Introdução à Computação Paralela e Ambientes de Grade. Inês de Castro Dutra. Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt. Grades Computacionais. Idéia é utilizar computadores independentes geograficamente distantes Diferenças: clusters x grids
E N D
Introdução à Computação Paralela e Ambientes de Grade Inês de Castro Dutra Departamento de Ciência de Computadores Universidade do Porto ines@dcc.fc.up.pt
Grades Computacionais • Idéia é utilizar computadores • independentes • geograficamente distantes • Diferenças: clusters x grids • heterogeneidade (nós muito diferentes) • alta dispersão geográfica (escala mundial) • compartilhamento (inexistente) • múltiplos domínios administrativos • controle totalmente distribuído
Grades Computacionais • Componentes • PCs, SMPs, MPPs, clusters • controlados por diferentes entidades diversos domínios administrativos • Não têm uma imagem única do sistema • Sistema não dedicado • Aplicação deve estar preparada para: • dinamismo • variedade de plataformas
GradesComputacionais • Escalonamento de aplicação • recursos controlados por vários escalonadores distintos que devem decidir: • quais recursos serão utilizados pela aplicação • quais tarefas cada um destes recursos realizará • submeter solicitações aos escalonadores apropriados tarefa do escalonador de aplicações • Grids: duas camadas de escalonamento
Escalonador de Aplicação Escalonador de Aplicação Escalonador de Recursos Escalonador de Recursos Escalonador de Recursos Grades Computacionais usuário usuário usuário SMP Cluster SMP MPP
Grades Computacionais Computador convencional Workstation MPP Cluster Workstation Internet SMP Servidor Cluster SMP MPP Servidor
Grades Computacionais • Middleware: Globus, Condor, OurGrid, gLite • usuário pode obter poder computacional de forma transparente • sob demanda • Soluções: • evitam problemas no nível do usuário • introduzem novas abstrações que facilitam o uso da grade
Top500 Supercomputer Rmax Maximal LINPACK performance achieved Rpeak Theoretical peak performance GFlopss
Resumindo... • Plataformas de Execução Paralela
Programação Paralela • Paralelismo explícito • Linguagens (SR) • Bibliotecas (OpenMP, MPI) • Suporte de Sistema (lib do SO) • Paralelismo implícito • Compiladores paralelizadores (F90, HPF) • Linguagens declarativas (Prolog) • Sistemas híbridos (Concurrent Logic)
Modelos de Programação Paralela • Modelos • Memória Compartilhada • Passagem de Mensagem • Paradigmas • SPMD (Single Program Multiple Data) • MPDM (Multiple Program Multiple Data)
Ambientes de Programação Paralela • Clusters • Memória Compartilhada • Software DSM (Click, HLRC, TreadMarks) • Passagem de Mensagens • PVM • MPI • OpenMP
Ambiente: PVM • Modelo de programação • passagem de mensagem • software: • biblioteca no nível do usuário (C/Fortran) • protocolo TCP ou UDP • Modelos de paralelismo: SPMD ou MPDM
Ambiente: PVM • Primitivas para: • criação e gerenciamento de processos • troca explícita de mensagens • primitivas de PVM possuem o prefixo PVM_ • Sistemas computacionais: • homogêneos ou heterogêneos
Ambiente: MPI • Padronização a partir do PVM • Modelo de programação: • passagem de mensagem • software: • biblioteca no nível do usuário (C/Fortran) • protocolo TCP ou UDP • Modelos de paralelismo: SPMD ou MPDM
Ambiente: MPI • Primitivas para: • criação e gerenciamento de processos • troca explícita de mensagens • primitivas de MPI possuem o prefixo MPI_ • Sistemas computacionais: • homogêneos ou heterogêneos • Corrige algumas deficiências técnicas do PVM
Ambiente: OpenMP • Busca por uma padronização de facto • Organização independente envolvendo • fabricantes de computadores (SGI, Compaq, Hewllet-Packard, Intel, IBM, Kuck & Associates, Sun , U.S. Department of Energy ASCI Program) • desenvolvedores de aplicações e vendedores
Ambiente: OpenMP • Modelo de programação: • semelhante ao modelo seqüencial • desenvolvido para dar suporte ao passo final da implementação de um algoritmo paralelo • linguagens: C, C++ e Fortran • expressão do paralelismo • diretivas incluídas no código fonte (comentários em Fortran e #pragmas em C ou C ++) • em conjunto com rotinas de bibliotecas
Programação Paralela • Grades Computacionais • Globus Toolkit • Condor • OurGrid • gLite
Globus Toolkit Globus Toolkit v4 www.globus.org Data Replication CredentialMgmt Replica Location Grid Telecontrol Protocol Delegation Data Access & Integration Community Scheduling Framework WebMDS Python Runtime Reliable File Transfer CommunityAuthorization Workspace Management Trigger C Runtime Authentication Authorization GridFTP Grid Resource Allocation & Management Index Java Runtime Security Data Mgmt Execution Mgmt Info Services CommonRuntime
Sistema Condor Resource Sistema Condor www.wisc.edu/condor Access Control Resource Owner Match-Making SystemAdministrator Condor Request Agent Customer/User Application RM Distributed Scalable Adaptable Customizable Application
Cluster Node Cluster Node Desktop Desktop Central Manager (Frieda’s) = Process Spawned negotiator collector schedd schedd schedd master master master master master startd startd startd startd startd Sistema Condor = ClassAd Communication Pathway Sistema Condor www.wisc.edu/condor
Sistema Condor-G • Globus • middleware deployed across entire Grid • remote access to computational resources • dependable, robust data transfer • Condor • job scheduling across multiple resources • strong fault tolerance with checkpointing and migration • layered over Globus as “personal batch system” for the Grid www.wisc.edu/condor
Sistema Condor-G www.wisc.edu/condor
Sistema OurGrid • Aplicações Bag-of-Tasks (BoT) • Compartilhamento de recursos peer-to-peer • Principais componentes • OurGrid peer: • Network of Favors • mecanismo de alocação autônomo e totalmente descentralizado • MyGrid broker:escalonamento • SWAN security service:máquina virtual de proteção www.ourgrid.org
Sistema OurGrid Ourgrid www.ourgrid.org
gLite • Utiliza funções do Globus • Estrutura: BDII, UI, RB, WN, CE, SE, IE • Aplicações definidas utilizando JDL • Middleware adotado pelo projeto de grid europeu (EGEE) • Outros componentes: • AMGA • LFC • API semelhante a de outros RMSs www.ourgrid.org
Metodologia para Programação Paralela • Metodologia é (quase) independente da máquina • Estágios: • particionamento • comunicação • aglomeração • mapeamento
Particionamento • Divisão da aplicação em tarefas em menores • Decomposição do domínio da aplicação • Objetivos aumentar: • concorrência • localidade de referência
Comunicação • Troca de informações entre processos • Sincronização entre processos • Definir: • estruturas de dados e • algoritmos apropriados
Aglomeração • Avaliação de requisitos de desempenho e custo • Objetivos se necessário: • combinar tarefas para reduzir custos de comunicação • tarefas maiores podem melhorar o desempenho, mesmo que diminua a concorrência
Mapeamento • Cada tarefa é atribuída a um processador • Estático ou dinâmico • Objetivos: • maximizar a utilização dos processadores • minimizar os custos de comunicação • balanceamento de carga
Metodologia para Programação Paralela Particionamento Problema Comunicação Aglomeração Mapeamento
Métricas de Desempenho Speedup = grau de melhora de desempenho Eficiência = porção utilizada da capacidade Redundância = aumento da carga qdo em p processadores Utilização = utilização dos recursos durante computação Qualidade = importância de utilizar processamento paralelo
Métricas de Desempenho Speedups(p) = T(1) / T(p), onde T(1) = tempo do melhor algoritmo sequencial possível e p = número de processadores Eficiênciae(p) = s / p = T(1) / (p T(p)) Redundânciar(p) = O(p) / O(1), onde O(p) = número total de ops em máquina com p processadores Utilizaçãou(p) = r(p) e(p) = O(p) / (p T(p)) Qualidadeq(p) = (s(p) e(p)) / r(n) = T3(1) / (p T2(p) O(p))
Escalabilidade • Modelos de aplicações • Limites algorítmicos • Limites arquiteturais Métricas de Desempenho
Modelos de Aplicações • Carga fixa = máquinas maiores para • computar + rápido • Tempo fixo = máquinas maiores para • problemas maiores • Memória fixa = máquinas maiores para • problemas que precisam de + memória
Limites Algorítmicos • Falta de paralelismo • Freqüência de sincronização • Padrão de comunicação/acesso • Escalonamento deficiente
Limites Arquiteturais • Latência/banda de comunicação • Latência/banda de E/S • Overhead de sincronização • Overhead de coerência • Capacidade de memória
Métricas de Desempenho • Lei de Amdahl: • Speedup: s = T(1)/T(p) • Trabalho total: c = Ts + Tp = T(1) • T(p) = Ts + Tp/p • s = (Ts + Tp) / (Ts + Tp/p) = c / (Ts + Tp/p) • s = c/Ts qdo p tende a infinito
Métricas de Desempenho • Lei de Gustafson: • Tempo total: c = Ts + Tp • Trabalho total: t = Ts + Tp • Scaled Speedup ss = t / c • ss = (Ts + p * Tp) / (Ts + Tp) • = (Ts + p * Tp) / c = (Ts + p * (c - Ts)) / c • = p + (Ts * (1-p)) / c, linear em Ts
Métricas de Desempenho • Speedup superlinear: • Overhead reduzido (escalonamento, por exemplo) • Mais memória/cache • Tolerância a latência • Randomização (problemas de otimização) • Problemas que possuem múltiplas soluções
Modelo de Programação Seqüencial Modelo mais simples Paralelismo implementado pelo compilador ou software + básico for i = 1 to N a[i] = 1 Paralelismo explorado pelo compilador (p.e.: F90, HPF ou runtime paralelo)
Modelo de Programação Paralelo baseado em Memória Compartilhada doall i = 1 to N a[i] = 1 for j = 1 to NPROCS-1 fork(compute,j) compute(0) lock(mutex) x = x + 1 unlock(mutex)
Modelo de Programação Paralelo baseado em Troca de Mensagens Proc pid: (N é o tamanho do problema) chunk = N/NPROCS for j = pid*chunk to (pid+1)*chunk-1 a[i] = 1 send(dest,&a[pid*chunk],chunk*sizeof(int))