LABORATÓRIO VIRTUAL DE ENSINO EM COMPUTAÇÃO PARALELA1


Rafael Timóteo de Sousa Jr
Universidade de Brasília
desousa@unb.br

Alexandre de Araújo Martins
Universidade de Brasília
amartins@vma.com.br

Gustavo Luchine Ishihara
Universidade de Brasília
luchine@hotmail.com

Laboratório de Redes de Comunicação - LabRedes,
Departamento de Engenharia Elétrica - ENE, Universidade de Brasília - UnB
Caixa Postal 4386 - 70919-970 - Brasília - DF - Brasil
1 O presente trabalho foi realizado com o apoio do CNPq

(Texto original com imagens: clique aqui)


RESUMO

Neste trabalho é apresentada uma proposta para criação de um laboratório virtual de computação paralela. O laboratório consiste de um cluster de processamento paralelo utilizando-se computadores de arquitetura Intel podendo estes ser de simples 486s até um processador simétrico de última geração. O sistema operacional utilizado é o Linux por ser público, gratuito, e possuir código fonte aberto. O cluster utilizado utiliza tecnologia Beowulf desenvolvida pela NASA e biblioteca de programação MPI. O laboratório virtual pode ser acessado através de um navegador "Web" permitindo ao usuário executar remotamente tarefas distribuídas.

PALAVRAS-CHAVE

Cluster, Laboratório Virtual, Processamento Paralelo.


1. Introdução

Clusters de processamento paralelo são na verdade bem simples. São um conjunto de computadores interligados em rede trabalhando em algum problema muito grande que foi particionado, permitindo assim a resolução de problemas que até então eram grandes demais para apenas um computador[1].

Por que se dar ao trabalho de projetar e construir clusters quando já existem supercomputadores comerciais disponíveis no mercado? A resposta simples é: custo. Não são muitas as instituições que possuem muitos recursos financeiros a sua disposição. A idéia de se desenvolver sistemas paralelizados utilizando computadores de baixo custo relativo ou até mesmo computadores dados como obsoletos, foi primeiramente explorada por Donald Becker e seus colegas da NASA[2]. O primeiro cluster Beowulf era composto de 16 nodos e foi construído para o projeto de ciências espaciais e terrestres do Goddard Space Flight Center (NASA)[2]. O sucesso do projeto permitiu a utilização de clusters em instituições que até então não dispunham de capital suficiente para aquisição de um supercomputador.

Os clusters Beowulf vêm sendo construídos e utilizados por programadores com pouca ou nenhuma experiência em programação paralela. De fato, os clusters Beowulf permitem as universidades, que geralmente possuem recursos limitados, uma excelente plataforma para ministrar cursos de programação paralela e prover capacidade computacional a baixos custos efetivos aos seus professores. O custo inicial para uma universidade é mínimo por quatro motivos: (i)a maioria dos estudantes interessados no projeto possuem o sistema operacional GNU-Linux nos seus próprios computadores, (ii)o aproveitamento de computadores considerados obsoletos, (iii)a montagem do laboratório e o aprendizado de programação paralela já estão incluídos no processo de formação do estudante, e a (iv)utilização de bibliotecas padronizadas de programação paralela MPI[3] (Message Passing Interface) e PVM[4] (Parallel Virtual Machine) permitem que códigos escritos para serem executados num cluster GNU-Linux possam ser executados em supercomputadores comerciais (Cray ou IBM) com pouca ou nenhuma modificação.

Outro ponto chave é a compatibilidade quanto ao sistema operacional do cluster Beowulf. Com a maturidade e a robustez do GNU-Linux e a padronização das bibliotecas paralelas, os programadores têm a garantia que seus programas serão executados nos futuros clusters Beowulf independentemente dos fabricantes de processadores e de redes.

A arquitetura dos clusters Beowulf é baseada na existência de um nodo mestre que controla e gerencia todos os processos dos nodos escravos. Os nodos escravos podem ser de qualquer número desejado desde que respeitados os limites do hardware de comunicação. Na verdade, o nodo mestre gera todos os processos e os passa para os nodos escravos executarem suas tarefas. Com isso, o nodo mestre deve ser capaz de manter todos os nodos escravos em regime de máxima utilização dos seus processadores. Normalmente, o cluster é mantido isolado de outras redes para não sofrer influência de outros tráfegos de pacotes. Apenas o nodo mestre possui conexão com uma rede externa, e é através dessa conexão que todas as tarefas devem ser executadas.

A idéia do laboratório virtual estende o conceito do cluster para um novo patamar de utilização, colocando o poder computacional criado à disposição de grupos e indivíduos localizados a distância.

O cluster pode ser acessado utilizando-se um navegador "Web" qualquer, permitindo que o usuário não necessite estar fisicamente no mesmo local. Assim sendo, podemos utilizar esta facilidade para o uso no ensino à distância, como por exemplo, um curso de programação paralela em que o aluno submete o código à execução e obtém o seu resultado "on-line".

Outro exemplo de utilização é o emprego do cluster para redução do tempo de renderização de imagens tridimensionais, que normalmente exigem horas de processamento em estações de trabalho típicas, para alguns minutos. Neste caso, poderiam ser beneficiados os estudantes e professores das áreas de Computação Gráfica, Desenho Industrial, Arquitetura e outros.

Na verdade, a gama de possibilidades de uso do cluster é infinita, haja visto que há aplicações nos mais variados campos da ciência, principalmente onde se faz necessário um elevado poder computacional envolvido no ensino de uma determinada disciplina.

2. Construção do nosso cluster Beowulf para o Laboratório Virtual

Para montar o cluster foram necessários alguns computadores, placas de redes ethernet ou qualquer outro tipo de hardware de comunicação (ATM, Myrinet e outros). A configuração mínima para um nodo do cluster é um 486 com 16 Mbytes de RAM e um HD de 1 Gbyte. Computadores 386 até podem ser utilizados[5], mas o ganho de performance dificilmente justifica o trabalho de configurá-lo e manter sob manutenção constante. Aplicações típicas exigem 32 Mbytes de RAM ou mais por nodo. O teclado e o monitor apenas são necessários para a configuração de cada nodo, e depois apenas o nodo mestre precisa ter estes dispositivos.

2.1 Instalação física

Para interligação dos computadores foi exigido um "Hub" ou "switch" de velocidade e tecnologia compatível com as placas de rede dos computadores do cluster, e com a topologia mostrada na figura 1.

2.2 Instalação de software

As instalações do sistema operacional GNU-Linux Red Hat 6.2 foram feitas de forma a não exaurir os recursos dos computadores, assim apenas são instalados os pacotes necessários. Todos os serviços ficam desligados exceto aqueles essenciais ao funcionamento do cluster.

Após a instalação do GNU-Linux Red Hat 6.2, os pacotes RPM do Beowulf são instalados de forma diferenciada para o nodo mestre e os nodos escravos. Um CD com todos os pacotes a serem instalados foi montado com dois passos separados por diretório, o diretório passo1 tem a função de atualizar o RPM para que este possa instalar os demais arquivos que estão no diretório passo2. Um outro CD foi montado para os nodos escravos de forma análoga. Todos os programas necessários se encontram disponíveis livremente na Internet e podem ser obtidos facilmente.

O próximo passo feito foi a configuração da inicialização do GNU-Linux Red Hat 6.2 para o kernel do Beowulf. Depois foram instalados o servidor de páginas Apache com os módulos do PHP e do MySQL para o ambiente do Laboratório Virtual. A aplicação de renderização de imagens para ambientes paralelos MPI-X-PovRay também foi instalada como exemplo.

3. Testes e Otimização do nosso cluster Beowulf

Logo após todas as instalações de software, o cluster foi testado para que fosse verificado o seu correto funcionamento. Alguns resultados puderam ser observados na aplicação MPI-X-PovRay e estão citados a seguir.

Foram feitos testes com um cluster homogêneo, onde os 4 computadores eram iguais, e um outro onde os 4 computadores eram completamente diferentes.

No cluster homogêneo, a otimização para melhores performances gerais foi feita desligando todos os serviços desnecessários, tanto do nodo mestre quanto dos nodos escravos. Foi visto em um aplicativo constituinte do Beowulf que os nodos escravos estavam com os seus processadores ocupados em sua totalidade, pois a tecnologia de rede era rápida suficiente para transmitir a comunicação necessária na realização da tarefa. Este cluster completou a tarefa dada 4 vezes mais rapidamente que um único computador.

No cluster heterogêneo, que é a maioria dos casos reais nas instituições e universidades, mesmo desligando-se todos os serviços não foi suficiente para que fosse conseguido o melhor tempo na realização da tarefa. Para isso, foi feita uma alternância do nodo mestre entre os computadores envolvidos (tabela 1), os resultados podem ser vistos na tabela 2.

ComputadorClockMemóriaDisco Rígido
Pentium90 MHz48 Mbytes2.5 Gbytes
Pentium Thinkpad150 MHz48 Mbytes2 Gbytes
Pentium233 MHz98 Mbytes7 Gbytes
Pentium III550 MHz256 Mbytes20 Gbytes
Tabela 1. Configurações dos computadores


Computador MestreTempo para finalizar a tarefa.
Pentium Thinkpad26 segundos
Pentium 233 MHz9 segundos
Pentium III17 segundos
Tabela 2. Tempos dependentes do computador mestre escolhido


Como pode ser visto na tabela 2, o melhor resultado para um cluster heterogêneo foi obtido quando o computador mestre foi o Pentium 233MHz. A explicação deste teste se deve ao fato de que o mestre apenas coordena as tarefas entre os nodos escravos, não participando assim das execuções delas diretamente. Assim, escolher o Pentium III para ser o mestre acabou por degradar a performance geral do cluster, uma vez que o computador de melhor processamento não participa mais da tarefa. Escolher o Pentium Thinkpad para ser o mestre também prejudicou a performance geral porque este não tinha processamento suficiente para lidar com todo o tráfego gerado pelos outros nodos. A melhor solução foi o Pentium 233MHz, pois mesmo não utilizando os processadores completamente (ver programa BeoStatus na figura 2), conseguiu lidar melhor com todo o tráfego e não subtraiu muito poder computacional do cluster.

Como pôde ser observado, a otimização do cluster foi essencial para uma melhor utilização do seu poder computacional, uma vez que os recursos já estão empregados, é conveniente que se busque a melhor configuração para o Laboratório Virtual.

4. Cluster Beowulf na Web

Para que o cluster pudesse estar disponível na Internet foram programadas diversas páginas Web em PHP para que fosse criado um ambiente completo de gerenciamento e utilização do sistema visando simplificar ao máximo os mecanismos de ensino a distância.

Todos os códigos desenvolvidos não puderam constar neste documento por razões de limite de páginas, e assim serão apresentadas a seguir apenas algumas telas de navegação.

Como pode ser visto na figura 3, um navegador Internet com a página principal do projeto está sendo mostrada.



Na figura 3, o aluno deve requerer uma conta de usuário para que possa ter acesso ao sistema através do Criar uma Conta. Ou então, se ele já tiver uma conta habilitada, basta clicar em login, e entrar com e-mail e senha.

Depois que o aluno se identificou para a interface Web do cluster desenvolvida neste projeto, a seguinte tela pode ser vista na figura 4.

O aluno poderá agora fazer utilização de programas paralelos, ou então desenvolver seus próprios códigos em programação paralela. Existe uma opção para deixar que os alunos executem programas compilados por eles mesmos em suas casas ou laboratórios, onde o ambiente Web retorna os resultados e arquivos gerados por seus programas.

Como a programação paralela pode envolver inúmeras variedades de assuntos, todo o ambiente Web pode ser utilizado para o ensino nas mais diversas áreas da ciência. Um curso típico poderia começar com uma introdução em programação paralela e ir avançando para algum problema específico.

Este tipo de abordagem é interessante porque um programa feito para executar neste cluster pode ser executado em um supercomputador sem modificações. O que eleva a qualidade de ensino a outros níveis, pois possibilita o acesso a uma ferramenta que até então era restrita e de custo proibitivo.

Assim sendo, um exemplo de utilização da interface Web poderia ser em uma disciplina chamada Algoritmos de Supercomputadores ou Processamento Paralelo, ou ainda poderia ser utilizado no departamento de Matemática para fazer gráficos de equações como pode ser visto na figura 5.

Assim ficou comprovado que um laboratório virtual de ensino baseado em computação paralela poderia incluir a execução de quaisquer programas paralelos, bastando que para isso fosse incluída no ambiente Web desenvolvido para este projeto.

5. Conclusão



Com a montagem de um único cluster Beowulf, diversas instituições de ensino podem ministrar cursos em programação paralela ou a utilização de aplicativos paralelos para resolução de problemas teóricos ou práticos.

Um laboratório virtual possibilita que instituições de ensino, com um único computador conectado por um modem e uma linha telefônica na Internet, possam utilizar o poder elevado de processamento de um cluster.

O laboratório virtual também incentiva tanto o ensino quanto a pesquisa no desenvolvimento de ferramentas paralelas na medida em que torna acessível uma tecnologia cara.

Sistemas de alto desempenho comerciais são muito caros não apenas na compra do cluster, mas também no seu suporte e manutenção. Um cluster Beowulf tem manutenção de hardware com baixo custo, e se mantido por diversas instituições que se beneficiem do cluster podem ficar ainda mais baratos.

Existem ainda muito poucas ferramentas exploradas na área de computação paralela, assim como ausência de suporte adequado. Existe uma demanda por pessoal qualificado que possa criar essas ferramentas e fazer um suporte de qualidade. O laboratório virtual de ensino em computação paralela é o modelo mais adequado financeiramente para se suprir esta demanda por ter uma grande área de abrangência.

6. Referências

[1] Spector David HM - Building Linux Clusters, O'reilly, 2000.

[2] http://www.beowulf.org - Beowulf Project - Site da Internet.

[3] http://www-unix.mcs.anl.gov/mpi/ - Message Passing Interface Standard - Site da Internet.

[4] http://www.csm.oml.gov/pvm/pvm_home.html - Parallel Virtual Machine - Site da Internet

[5] http://www.acm.org/crossroads/xrds6-1/parallel.html - Parallel Computing with Linux - Site da Internet.

7. Bibliografia

[1] http://www.cacr.caltech.edu/beowulf/tutorial/building.html - Building a Beowulf System - Site da Internet.

[2] Jacek Radajewski and Douglas Eadline - Beowulf HOWTO, v1.1.1, 2 Novembro 1998.

[3] Ram Samudrala - Cluster HOWTO, v0.7, 22 Fevereiro 2002.

[4] Hank Dietz - Linux Parallel Processing HOWTO, v1.12.1, 25 Outubro 2000.

[5] David Mentré - Linux SMP HOWTO, v980105, 05 Janeiro 1998.

[6] Evan Marcus, Hal Stern - Blueprints for High Availability: Designing Resilient Distributed Systems, John Wiley & Sons, Janeiro 2000.

[7] Douglas Comer - Internetworking with TCP/IP vol. I, 4th ed.. Prentice Hall, 2000.

[8] Buyya Rajkumar - High Performance Cluster Computing - Volume 1, Prentice-Hall, 1999.

[9] http://www.beowulf-underground.org/ - Beowulf Underground - Site da Internet.

[10] http://www.extremelinux.org/ - Extreme Linux - Site da Internet.

[11] http://www.canonical.org/~kragen/beowulf-faq.txt - Beowulf FAQ - Site da Internet.

[12] http://www-unix.mcs.anl.gov/mpi/ - The Message Passing Interface (MPI) standard- Site da Internet.

[13] http://www-unix.mcs.anl.gov/mpi/mpich/ - MPICH-A Portable Implementation of MPI - Site da Internet.

[14] http://www.apache.org - Apache Software Foundation - Site da Internet.

[15] http://www.php.net - PHP Hypertext Preprocessor - Site da Internet.

[16] http://www.scyld.com/ - Scyld Beowulf Cluster Operating System- Site da Internet.