MDX-cc: Ambiente de Programação Paralela Aplicado a Cluster de Clusters - PDF
Download "MDX-cc: Ambiente de Programação Paralela Aplicado a Cluster de Clusters"
Walter Caminha Valgueiro
1 Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Informática Pós-Graduação em Ciência da Computação MDX-cc: Ambiente de Programação Paralela Aplicado a Cluster de Clusters Cassiano Ricardo Hess Dissertação apresentada como requisito parcial à obtenção do grau de mestre em Ciência da Computação Orientador: César A. F. De Rose Porto Alegre, março de 2003
2 Aos meus pais, meus irmãos e minha esposa Samantha
3 Dados Internacionais de Catalogação na Publicação (CIP) H586m Hess, Cassiano Ricardo MDX-cc: ambiente de programação paralela aplicado a cluster de clusters / Cassiano Ricardo Hess. Porto Alegre, f. Diss. (Mestrado) Fac. de Informática, PUCRS. 1. Arquitetura de Computador. 2. Programação Paralela. 3. Cluster - Informática. 4. Análise de Desempenho de Computadores. I. Título. CDD Ficha Catalográfica elaborada pelo Setor de Processamento Técnico da BC-PUCRS
5 Agradecimentos Inicialmente, agradeço a minha esposa Samantha, que eu amo demais, que teve paciência e me deu a força necessária nesses dois últimos anos. Te amo sempre; Aos meus pais, que são os exemplos que eu levo sempre comigo, e meus irmãos Estevão e Bia. Todos, mesmo longe, sempre estiveram comigo quando eu precisei; Aos meus cães Mike, o mais velho, e Zeca, o caçula, que estão sempre dispostos a brincar e buscar a bolinha; À PUCRS pela oportunidade e pela infra-estrutura a mim oferecidos; À HP, pelo suporte financeiro que possibilitou este trabalho; Aos meus orientadores, Prof. Celso M. da Costa, pela oportunidade e pelo acompanhamento no primeiro ano, e Prof. César A. F. De Rose, pela força e pela compreensão, pelos convites para o futebol e pelos momentos de descontração, que melhoram o ambiente de trabalho; Aos colegas de mestrado, em especial Leonardo Sewald, Luciano Cassol e Eduardo Rödel, pela amizade e atenção nos momentos complicados; A todos os colegas do CPAD, pela atenção e ajuda; Aos meus amigos de graduação, Flávio, Leonardo, Sandro, Bento, Mille, etc., que sempre estão prontos para ajudar em qualquer circunstância. Ao glorioso Grêmio FBPA, que possibilitou tantas flautas (deveria agradecer também ao Inter, eu acho) e continua sempre dando muitas alegrias; A todos, muito obrigado.
6 Resumo Em razão do surgimento de redes de comunicação de alta velocidade, tais como Myrinet e SCI, a construção de arquiteturas baseadas em máquinas comuns (PCs e estações de trabalho) conectadas por esse tipo de rede - o que se denomina agregado (ou cluster) - tornou-se viável. Tais arquiteturas vêm se consolidando como plataformas alternativas para a execução de aplicações paralelas complexas, principalmente devido à relação custo/benefício que oferecem. Esse avanço das tecnologias de redes possibilita também a agregação de clusters, formando uma estrutura de cluster de clusters, como uma única máquina paralela. Um dos principais problemas no uso de cluster de clusters é o software utilizado para o desenvolvimento de aplicações paralelas, visto que cada agregado envolvido na estrutura possui certas características que precisam ser tratadas pela linguagem ou ambiente de programação, visando o alcance de alto desempenho. Esta dissertação tem como objetivo apresentar uma ferramenta de programação paralela por troca de mensagens que executa sobre uma estrutura de cluster de clusters: o MDX-cc. A ferramenta foi concebida tendo como base o sistema MDX [PRE98][HES01] e uma primeira versão foi implementada oferecendo suporte à comunicação em agregados com redes SCI, Myrinet e Fast-Ethernet. O principal objetivo do MDX-cc é oferecer recursos de comunicação e sincronização de processos que rodam em agregados interligados. Por sua arquitetura modular e abstração do uso de protocolos de comunicação dedicados a cada tecnologia de rede, o MDX-cc oferece uma interface de programação simples, com um conjunto reduzido de primitivas, e provê transparência total na comunicação entre processos que executam em nós de clusters com tecnologias de rede distintas. Palavras-chave: programação paralela, cluster de clusters, avaliação de desempenho, troca de mensagens.
7 Abstract Due to the appearance of fast communication networks, such as Myrinet and SCI, it becames possible the construction of new architectures based on commodity, off-the-shelf machines (PCs and workstations) connected by this kind of network - which are been called clusters. Such architectures are becoming an alternative execution platform for complex parallel applications, mainly due to the cost/benefit relation they present. The diversity of fast networks leads to the interconnection of clusters, building an architecture called cluster of clusters. One of the main problems in the use of clusters of clusters is the programming software used for parallel application development, since this kind of architecture has some characteristics that must be addressed by the programming language or environment in order to provide high performance. This work describes the development of a message passing parallel programming environment for cluster of clusters, the MDX-cc. This environment was projected based on the MDX system [PRE98][HES01] and a first version has been implemented supporting communication over Fast-Ethernet, SCI and Myrinet networks. The main goal of MDX-cc is to provide communication and synchronization of processes that run on interconnected clusters. Thanks to its modular architecture and the use of specific communication protocols dedicated to each network interface, MDX-cc provides a simple programming interface, with a small set of primitives, and also provides a transparent communication among processes running on different network-based clusters. Keywords: parallel programming, cluster of clusters, performance testing, message passing.
8 Sumário Resumo...VI Abstract... VII Sumário...VIII Lista de Figuras... XII Lista de Tabelas... XV Lista de Algoritmos... XVI Lista de Abreviaturas...XVII Capítulo 1: Introdução Capítulo 2: Programação Paralela ARQUITETURAS DE MÁQUINAS PARALELAS CLASSIFICAÇÃO DE ARQUITETURAS PARALELAS CLASSIFICAÇÃO DE FLYNN CLASSIFICAÇÃO SEGUNDO O COMPARTILHAMENTO DE MEMÓRIA TENDÊNCIAS NA CONSTRUÇÃO DE MÁQUINAS PARALELAS VIII
9 MULTIPROCESSADORES SIMÉTRICOS MÁQUINAS COM MEMÓRIA COMPARTILHADA DISTRIBUÍDA REDES DE ESTAÇÕES DE TRABALHO MÁQUINAS AGREGADAS MODELOS DE PROGRAMAÇÃO PARALELA PROGRAMAÇÃO BASEADA EM MEMÓRIA COMPARTILHADA PROGRAMAÇÃO BASEADA EM TROCA DE MENSAGENS FORMAS DE PARALELIZAÇÃO DE PROGRAMAS BIBLIOTECAS DE PROGRAMAÇÃO PARALELA GM MPI YAMPI MDX NÚCLEO DE COMUNICAÇÃO SERVIDORES ESPECIALIZADOS IMPLEMENTAÇÃO Capítulo 3: Cluster de Clusters Capítulo 4: Sistemas Relacionados PROJETO MULTICLUSTER ASPECTOS DE HARDWARE ASPECTOS DE SOFTWARE BIBLIOTECA DECK DECK/MYRINET DECK/SCI RCD IMPI VISÃO GERAL DO IMPI TERMINOLOGIA PROTOCOLOS DE STARTUP/SHUTDOWN PROTOCOLO DE TRANSFERÊNCIA DE DADOS ALGORITMOS COLETIVOS METODOLOGIA DE TESTES IX
10 4.3. MPICH/MADELEINE COMPARAÇÃO ENTRE OS SISTEMAS Capítulo 5: Ambiente MDX-cc MOTIVAÇÃO DEFINIÇÕES DO MDX-CC ALTERAÇÕES MDX MDX-CC ELIMINAÇÃO DO NÚCLEO DE COMUNICAÇÃO INFRA-ESTRUTURA PROGRAMAÇÃO SPMD SUPORTE A OUTRAS TECNOLOGIAS DE REDE TABELA LOCAL DE NOMES SIMPLIFICAÇÃO OU ELIMINAÇÃO DE SERVIÇOS ARQUITETURA DO MDX-CC TABELA LOCAL DE NOMES (NLT) COMUNICAÇÃO ENTRE PROCESSOS CLIENTES E SERVIDORES SERVIDORES ESPECIALIZADOS SERVIDOR DE SINCRONIZAÇÃO SERVIDOR DE COMUNICAÇÃO INTERFACE DE PROGRAMAÇÃO MDX-CC PRIMITIVAS DE CONTROLE PRIMITIVAS DE SINCRONIZAÇÃO PRIMITIVAS DE COMUNICAÇÃO EXEMPLOS DE PROGRAMAS COMPILAÇÃO E EXECUÇÃO DE APLICAÇÕES ASPECTOS DE HARDWARE ASPECTOS DE SOFTWARE Capítulo 6: Comunicação entre Processos Clientes BUSCA DE INFORMAÇÕES SOBRE OS PROCESSOS A CADA COMUNICAÇÃO NO INÍCIO DO PROCESSO NA PRIMEIRA COMUNICAÇÃO IMPLEMENTAÇÃO NO MDX-CC X
11 TABELA DE CLIENTES COMUNICAÇÃO ENTRE PROCESSOS Capítulo 7: Avaliação de Desempenho do MDX-cc AMBIENTE DE TESTE CPAD MEDIDAS BÁSICAS DE DESEMPENHO LATÊNCIA LARGURA DE BANDA MDX-CC SOBRE FAST-ETHERNET TCP UDP MDX-CC SOBRE MYRINET MDX-CC SOBRE SCI MDX-CC SOBRE CLUSTER DE CLUSTERS Capítulo 8: Conclusão DIFICULDADES ENCONTRADAS RESULTADOS OBTIDOS TRABALHOS FUTUROS Referências Bibliográficas XI
12 Lista de Figuras Figura 2.1: Diagrama da classe MIMD Figura 2.2: Arquitetura de um SMP Figura 2.3: Sistema DSM com espaço de endereçamento único (EE) Figura 2.4: Sistema baseado em troca de mensagens Figura 2.5: Comunicação entre processos GM Figura 2.6: Interação YAMPI com ambiente operacional Figura 2.7: Arquitetura do MDX Figura 3.1: Exemplo de cluster de clusters Figura 3.2: Exemplo de metacomputador Figura 4.1: Entidades do IMPI Figura 5.1: Modelo SPMD do MDX-cc Figura 5.2: Arquivo de nomes de máquinas do MDX-cc Figura 5.3: Estrutura do MDX Figura 5.4: Nova estrutura no MDX-cc Figura 5.5: Criação de tarefas no MDX XII
13 Figura 5.6: NLT no MDX Figura 5.7: NLT no MDX-cc Figura 5.8: Estrutura interna do MDX-cc Figura 5.9: Estrutura externa do MDX-cc Figura 5.10: Tela inicial do mdconf Figura 5.11: Comunicação entre clientes e servidores Figura 5.12: Barreira de sincronização Figura 5.13: Estrutura da ClientTable Figura 5.14: Primitivas de controle do ambiente Figura 5.15: Primitivas de sincronização do ambiente Figura 5.16: Primitivas de comunicação do ambiente Figura 5.17: Aplicativo de compilação de aplicações paralelas no MDX-cc Figura 5.18: Aplicativo de disparo de aplicações paralelas no MDX-cc Figura 5.19: Aplicativo de término dos servidores do ambiente MDX-cc Figura 5.20: Visão do MDX-cc sobre a estrutura de cluster de clusters Figura 6.1: Busca de informações a cada comunicação Figura 6.2: Busca de informações no início do processo Figura 6.3: Busca de informações na primeira comunicação Figura 6.4: Exemplo 1 de negociação entre processos Figura 6.5: Exemplo 2 de negociação entre processos Figura 6.6: Comunicação entre processos via rede Fast-Ethernet/TCP Figura 6.7: Comunicação entre processos via rede Fast-Ethernet/UDP Figura 6.8: Comunicação entre processos via rede Myrinet Figura 6.9: Comunicação entre processos via rede SCI Figura 7.1: Cálculo de latência Figura 7.2: Cálculo de largura de banda XIII
14 Figura 7.3: Cálculo de largura de banda para uma mensagem Figura 7.4: Cálculo de largura de banda média Figura 7.5: Gráfico de latência do MDX-cc sobre Fast-Ethernet protocolo TCP Figura 7.6: Gráfico de vazão do MDX-cc sobre Fast-Ethernet protocolo TCP Figura 7.7: Gráfico de latência do MDX-cc sobre Fast-Ethernet protocolo UDP Figura 7.8: Gráfico de vazão do MDX-cc sobre Fast-Ethernet protocolo UDP Figura 7.9: Gráfico de latência do MDX-cc sobre Myrinet Figura 7.10: Gráfico de vazão do MDX-cc sobre Myrinet Figura 7.11: Gráfico de latência do MDX-cc sobre SCI Figura 7.12: Gráfico de vazão do MDX-cc sobre SCI Figura 7.13: Arquivo de nomes de máquinas Figura 7.14: Distribuição dos processos nos nós disponíveis Figura 7.15: Tecnologia usada na comunicação entre processos XIV
15 Lista de Tabelas Tabela 2.1: Estrutura da NLT Tabela 4.1: Comparação entre sistemas Tabela 5.1: Estrutura do arquivo nlt.conf Tabela 5.2: Estrutura da NLT Tabela 5.3: Identificadores e portas de comunicação dos servidores do MDX-cc Tabela 7.1: Teste de desempenho do MDX-cc sobre Fast-Ethernet protocolo TCP Tabela 7.2: Teste de desempenho do MDX-cc sobre Fast-Ethernet protocolo UDP Tabela 7.3: Teste de desempenho do MDX-cc sobre Myrinet Tabela 7.4: Teste de desempenho do MDX-cc sobre SCI XV
16 Lista de Algoritmos Algoritmo 5.1: Esqueleto de código de um servidor Algoritmo 5.2: Esqueleto de código de uma thread dedicada Algoritmo 5.3: Exemplo de helloworld no MDX-cc Algoritmo 5.4: Exemplo de pipeline no MDX-cc Algoritmo 5.5: Exemplo de ordenação de vetor em paralelo no MDX-cc Algoritmo 7.1: Programa de avaliação do MDX-cc XVI
17 Lista de Abreviaturas SISD - Single Instruction Single Data MISD - Multiple Instruction Single Data SIMD - Single Instruction Multiple Data MIMD - Multiple Instruction Multiple Data UMA Uniform Memory Access NUMA Non-Uniform Memory Access NORMA Non-Remote Memory Access PVP Parallel Vector Processors SMP Symetrical Multiprocessors MPP Massively Parallel Processors DSM Direct Shared Memory NOW Network of Workstations COW Cluster of Workstations LAN Local Area Network SO Sistema Operacional SCI Scalable Coherent Interface RCD Remote Communication Daemon RPC Remote Procedure Call API Application Program Interface XVII
18 DMA Direct Memory Access TCP Transmission Control Protocol UDP User Datagram Protocol IP Internet Protocol MPI Message Passing Interface PVM Parallel Virtual Machine XVIII
19 Capítulo 1 Introdução O Processamento de Alto Desempenho é considerado uma ferramenta fundamental para as áreas da ciência e tecnologia. Sua importância estratégica é demonstrada pela quantidade de iniciativas em pesquisa e desenvolvimento nestas áreas, financiadas por governos de todo o mundo. Encontra-se, principalmente nas áreas da ciência como física, meteorologia e química, maior demanda por alto desempenho. O Processamento de Alto Desempenho, por sua vez, depende fundamentalmente de técnicas de processamento paralelo, capazes de prover o desempenho necessário para estas aplicações. Em função da popularização das redes Fast-Ethernet [IEE95a], e do surgimento de redes de comunicação de dados extremamente rápidas, tais como Myrinet [BOD95] e SCI [IEE92], plataformas de hardware compostas por computadores comuns (PCs e estações de trabalho) conectados por esse tipo de rede começaram a ser utilizadas como alternativa de arquitetura de máquina paralela, surgindo daí a computação baseada em agregados (cluster computing) [HWA97] [BUY99]. De uma maneira geral, o principal objetivo da computação baseada em agregados (clusters) é o emprego de hardware barato e de ambientes de programação dedicados para permitir a execução de aplicações paralelas e distribuídas, oferecendo alto desempenho com um custo bastante reduzido.
20 Com os avanços das tecnologias de redes, há ainda a possibilidade da interligação de agregados, formando uma estrutura de cluster de clusters, que cooperam na resolução de um problema. A interligação de clusters, por meio de uma rede local ou via internet, visa principalmente alcançar o máximo desempenho na execução de aplicações paralelas. Uma vez que o número de máquinas aumenta, o poder computacional alcançado também é maior. Desta forma, aplicações complexas, que necessitam de um grande potencial de recursos, podem ser distribuídas nos agregados envolvidos na estrutura, de forma a conseguir uma melhora de desempenho. Atualmente, o principal fator limitante no uso de cluster de clusters como plataforma de alto desempenho é o software utilizado para o desenvolvimento de aplicações. Os ambientes mais utilizados até então são úteis à utilização de um único agregado, com determinadas características (rede, SO, etc.). Os agregados, na sua maioria, são homogêneos, o que facilita a sua utilização. Surge a necessidade de ambientes que suportem a execução de programas paralelos em agregados interligados, estrutura que pode ser vista como uma única máquina paralela heterogênea. Dentro desse contexto, este trabalho vem apresentar um ambiente de programação paralela aplicado a cluster de clusters, o MDX-cc. Esse ambiente tem como objetivo facilitar a programação e a execução de aplicações paralelas em agregados interligados, gerenciando a comunicação entre processos, independentemente do cluster onde os mesmos se encontram executando. Este trabalho não se preocupa com problemas avançados resultantes da heterogeneidade de um cluster de clusters, como balanceamento de carga e utilização de mais de um modelo de programação paralela (troca de mensagens e memória compartilhada) em uma mesma aplicação. Apenas se preocupa com a implementação de uma ferramenta que ofereça infra-estrutura para a sua utilização. Este documento está dividido da seguinte maneira. O segundo capítulo apresenta aspectos gerais de programação paralela, como arquiteturas de máquinas paralelas utilizadas atualmente, modelos de programação paralela e bibliotecas desenvolvidas. O Capítulo 3 apresenta a estrutura de cluster de clusters, à qual é aplicado o ambiente MDX-cc. No Capítulo 4 são apresentadas ferramentas semelhantes àquela proposta nesse trabalho. O Capítulo 5 apresenta o ambiente MDX-cc, com detalhes de projeto e de implementação, e o Capítulo 6 mostra detalhes do protocolo de comunicação implementado no ambiente. Os testes de desempenho realizados com o MDX-cc são demonstrados no Capítulo 7 e, por fim, o 20
21 Capítulo 8 traz as conclusões sobre o trabalho, as principais dificuldades encontradas e sugestões de trabalhos futuros relacionados a este. 21
22 Capítulo 2 Programação Paralela Este capítulo apresenta diferentes aspectos ligados à programação paralela, desde aspectos de hardware, como arquiteturas de máquinas usadas atualmente, até aspectos ligados diretamente à programação, como formas de paralelização de programas e modelos de programação paralela Arquiteturas de Máquinas Paralelas Máquinas paralelas vêm se tornando mais populares em função da demanda sempre crescente por poder computacional. Infelizmente, os sistemas que oferecem a capacidade de processamento para satisfazer esta demanda, muitas vezes, ainda têm custo elevado, são difíceis de programar, ou ambos. Como a programação de aplicações paralelas ainda exige o conhecimento de características específicas da máquina para a obtenção de desempenho, conhecimentos sólidos sobre arquiteturas de máquinas paralelas auxiliam no desenvolvimento de programas paralelos, desde sua modelagem até a fase de depuração e otimização.
23 Classificação de Arquiteturas Paralelas Diversas taxonomias para arquiteturas paralelas foram propostas. Nessa seção serão abordadas a classificação genérica de Flynn e a classificação segundo o compartilhamento de memória Classificação de Flynn Para uma classificação inicial de máquinas paralelas, pode ser usada a classificação genérica de Flynn. Baseando-se no fato de uma máquina executar uma seqüência de instruções sobre uma seqüência de dados, diferencia-se o fluxo de instruções (instruction stream) e o fluxo de dados (data stream). Dependendo da multiplicidade desses fluxos, e da combinação das possibilidades, são propostas quatro classes de máquinas: SISD, MISD, SIMD e MIMD [FLY72]. Em uma máquina da classe MIMD (Multiple Instruction Multiple Data), cada unidade de controle C recebe um fluxo de instruções próprio e o repassa para sua unidade de processamento P, para que seja executado sobre um fluxo de dados próprio (Figura 2.1). Dessa forma, cada processador executa o seu próprio programa sobre seus próprios dados de forma assíncrona. Sendo assim, o princípio MIMD é bastante genérico, pois qualquer grupo de máquinas, se analisado como uma unidade, pode ser considerado da classe MIMD. Para que o processamento nas diferentes posições de memória possa ocorrer em paralelo, a unidade M não pode ser implementada como um único módulo de memória. Nessa classe, enquadramse servidores com múltiplos processadores (dual, quad), redes de estações e máquinas como CM-5 [HWA93], ncube [CUL99], Intel Paragon [CUL99] e Cray T3D [CUL99]. C P M C P M C P M Figura 2.1: Diagrama da classe MIMD. 23
24 A maioria das máquinas paralelas atuais, incluindo os agregados abordados neste trabalho, se enquadram na classe MIMD [DER02] Classificação segundo o compartilhamento de memória [DER02] Um outro critério para a classificação de máquinas paralelas é o compartilhamento de memória. Quando se fala em memória compartilhada (shared memory), existe um único espaço de endereçamento que será usado de forma implícita para comunicação entre processadores, com operações load e store. Quando a memória não é compartilhada, existem múltiplos espaços de endereçamento privados (multiple private address space), um para cada processador. Isso implica na comunicação explícita através de troca de mensagens com operações send e receive. Memória distribuída (distributed memory), por sua vez, refere-se a localização física da memória. Se a memória é implementada com vários módulos, e cada módulo é colocado próximo a um processador, então a memória é considerada distribuída. Outra alternativa é o uso de memória centralizada (centralized memory), ou seja, a memória encontra-se à mesma distância de todos os processadores, independentemente de ter sido implementada com um ou vários módulos [PAT94]. De acordo com o uso ou não de uma memória compartilhada, podese diferenciar máquinas paralelas da seguinte forma: - Multiprocessadores: todos os processadores acessam, através de uma rede de interconexão, uma memória compartilhada. Existe apenas um espaço de endereçamento e os processos comunicam através da memória compartilhada. Em relação ao tipo de acesso à memória, multiprocessadores podem ser classificados como [HWA93]: Acesso uniforme à memória (uniform memory access, UMA): memória centralizada e localizada à mesma distância de todos os processadores. Acesso não-uniforme à memória (non-uniform memory access, NUMA): memória distribuída, implementada com módulos associados a diferentes processadores (distâncias diferentes). - Multicomputadores: cada processador P possui uma memória local M, à qual só ele tem acesso. A comunicação entre processos é feita através de troca de mensagens pela 24
25 ede de interconexão. Em relação ao tipo de acesso à memória do sistema, multicomputadores podem ser classificados como: Sem acesso à memória remota (non-remote memory access, NORMA): cada processador só consegue endereçar sua memória local Tendências na Construção de Máquinas Paralelas [DER02] Nesta seção serão apresentados os principais modelos de máquinas paralelas, que constituem atualmente as principais tendências para construção desses sistemas Multiprocessadores Simétricos Multiprocessadores simétricos (SMP) são sistemas constituídos de processadores comerciais, também denominados de prateleira, conectados a uma memória compartilhada (caracterizando essas máquinas como UMA) através de um barramento (Figura 2.2). A comunicação entre processos se dá por memória compartilhada. P P P P Barramento M M Figura 2.2: Arquitetura de um SMP. A escalabilidade de uma máquina SMP é comprometida pelo fato da ligação com a memória ser através de um barramento. Como o barramento só permite uma transação por vez, o desempenho da máquina cai a medida que o canal é disputado por um maior número de processadores. São exemplos de SMP o IBM R50, SGI Power Challenge e o HP/Convex Exemplar X-Class. 25
26 Máquinas com Memória Compartilhada Distribuída Máquinas com memória compartilhada distribuída (DSM) são sistemas em que, apesar da memória encontrar-se fisicamente distribuída, todos os processadores podem endereçar todas as memórias. Essa implementação pode ser feita em hardware, software ou, ainda, a combinação dos dois. A distribuição da memória pode ser resultado da escolha entre uma arquitetura multiprocessada com memória distribuída (máquina NUMA) ou uma arquitetura de multicomputador com memória distribuída (máquina NORMA). São exemplos de DSM o Stanford DASH, o Cray T3D e estações de trabalho rodando TreadMarks Redes de Estações de Trabalho Redes de estações de trabalho (NOW) são sistemas constituídos por várias estações de trabalho interligadas por uma rede tradicional, como Ethernet [SOA95] e ATM [HAN98]. Na prática, uma rede local pode ser vista como uma máquina paralela em que vários processadores, com suas memórias locais, são interligadas por uma rede, constituindo uma máquina paralela NORMA de baixo custo. Uma vez interligadas por redes como Ethernet e ATM, uma máquina NOW possui baixo desempenho na troca de mensagens, pois essas redes utilizam protocolos pesados na comunicação (TCP/IP), resultando em uma latência 1 muito grande Máquinas Agregadas Com as novas tecnologias de redes locais de alta velocidade, o uso de redes de estações de trabalho como máquinas paralelas está se tornando cada vez mais atrativo. Neste contexto, tem se investido em uma nova classe de máquinas paralelas, que são as máquinas agregadas (COW cluster of workstations). Máquinas agregadas, como as NOW, são constituídas por várias estações de trabalho interligadas. A diferença é que foram projetadas especialmente para a execução de aplicações paralelas [DER02]. Desta forma, as estações podem ser otimizadas (tanto em hardware como em software) para este fim. Na maioria dos casos, as máquinas que servem de nó de uma COW não possuem monitor, teclado e mouse, e seu sistema operacional presta apenas serviços que serão úteis ao processamento paralelo de sistemas. 1 Latência: tempo necessário para o envio de uma mensagem de tamanho zero [CUL99]. 26
27 [DER02]: Encontra-se, atualmente, duas tendências na construção de máquinas agregadas - Agregados interligados por redes padrão: esta tendência é impulsionada pelos grandes fabricantes como IBM e HP, que estão interessados na construção de máquinas paralelas poderosas agregando milhares de estações de trabalho de baixo custo (low end). Para a interligação de tantas máquinas, investir em uma rede especial aumenta muito o custo. Assim, utiliza-se para este fim uma rede padrão como a Fast-Ethernet. Para melhorar a latência da rede são usados grandes chaveadores (switches), em contraste aos hubs, que funcionam como grandes barramentos, solução mais comum em redes locais por causa do menor custo. O enfoque reside na obtenção de desempenho com muitos nós de pequeno poder computacional e, preferencialmente, com aplicações que não tenham muita necessidade de comunicação. Estas máquinas são claramente NORMA, já que não é possível o acesso a memória de nós remotos e o paradigma de comunicação utilizado é a troca de mensagens. - Agregados interligados por redes de baixa latência: esta tendência é impulsionada por pequenas empresas que fabricam placas de interconexão especificamente para máquinas agregadas. Estas placas implementam protocolos de rede de baixa latência otimizados para as características de comunicação de aplicações paralelas. Como o custo destas placas é mais alto do que placas de rede padrão, é muito oneroso construir máquinas com muitos nós (centenas de nós). Para compensar o menor número de nós, são usados nós mais poderosos, muitas vezes servidores de médio porte com vários processadores (SMP). A máquina resultante fica mais equilibrada na relação poder de processamento do nó e desempenho da rede, obtendo um bom desempenho, mesmo com aplicações que necessitem de muita comunicação. A maioria destas máquinas é NORMA já que, em princípio, não é possível o acesso a memória de nós remotos. Porém, algumas das placas implementam um espaço de endereçamento global entre os nós permitindo o acesso de memórias remotas. Neste caso a máquina resultante é NUMA e são suportados tanto a troca de mensagens como o acesso a áreas de memória compartilhada. A utilização de máquinas agregadas traz algumas vantagens como: 27
28 - Ótima relação custo-benefício: as máquinas agregadas, por serem construídas com componentes de prateleira, que, por sua vez, são produzidos em grande escala, têm custo reduzido. Quanto ao desempenho, este é aproximado ao de um sistema MPP [MAI98] que, por exemplo, pode custar até duas vezes mais, além de possuir um dos menores custos por MFlops/s (milhões de instruções de ponto flutuante por segundo) em comparação às outras arquiteturas paralelas. - Baixo custo de manutenção: a arquitetura possui um baixo custo de manutenção, pois os componentes de prateleira utilizados são facilmente encontrados no mercado, podendo ser feita a substituição de peças, igualmente, com um baixo custo. Devido a esta ótima relação custo-benefício, fabricantes de MPPs estão se utilizando de alguns conceitos da construção de agregados para diminuir o custo de seus produtos. Sendo assim, as diferenças entre estas máquinas diminuíram bastante ao ponto de ficar difícil sua classificação. - Escalabilidade: com a utilização destas máquinas, tem-se a capacidade de expansão mantendo as mesmas características com configurações de baixo custo e que podem crescer na medida das necessidades, com a inclusão de nós adicionais. A arquitetura possui, também, um alto grau de configurabilidade, por se tratar de uma arquitetura aberta. A definição de seus componentes (nós e rede de interconexão) é generalizada, possibilitando diversas configurações. Com relação à interconexão entre os nós deste tipo de máquina, existem vários padrões, que serão apresentados a seguir. - Fast-Ethernet [TAN97] [STE99]: Fast-Ethernet é uma extensão da Ethernet, utilizada na maioria das LANs (Local Area Networks). Possui uma latência bem menor na comunicação e um aumento significativo na largura de banda. Utiliza as mesmas tecnologias do padrão Ethernet, permitindo uma implementação e interoperabilidade mais fáceis. A switch Fast-Ethernet possui uma vazão na ordem de 100Mbits/s e, pelo fato de ser uma placa convencional, a implementação das camadas de rede deve ser feita em software, o que compromete de forma significativa a latência. Nas outras tecnologias isto não se verifica, pois a interconexão das camadas é implementada em hardware. Além de ser utilizada em clusters com um grande número de nós, Fast- 28