Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 90

UNIVERSIDADE FEDERAL DE OURO PRETO UFOP ESCOLA DE MINAS EM COLEGIADO DO CURSO DE ENGENHARIA DE CONTROLE E AUTOMAO - CECAU

MANUAL DE MONTAGEM DE UM CLUSTER BEOWULF SOB A PLATAFORMA GNU/LINUX.

MONOGRAFIA DE GRADUAO EM ENGENHARIA DE CONTROLE E AUTOMAO

DANNY AUGUSTO VIEIRA TONIDANDEL


Ouro Preto, 2008

DANNY AUGUSTO VIEIRA TONIDANDEL

MANUAL DE MONTAGEM DE UM CLUSTER BEOWULF SOB A PLATAFORMA GNU/LINUX.

Monografia apresentada ao Curso de Engenharia de Controle e Automao da Universidade Federal de Ouro Preto como parte dos requisitos para a obteno de Grau em Engenheiro de Controle e Automao.

Orientador: Dr. Luiz Joaquim Cardoso Rocha

Ouro Preto Escola de Minas UFOP Dezembro/2008

iii

v AGRADECIMENTOS

Tenho muito a agradecer: a Deus pela vida, a minha querida me, pelo amor incondicional, apoio e suporte material, sem a qual minha luta no teria sentido. Aos meus queridos colegas e amigos, companheiros de farra e estudos, pelos momentos inesquecveis. Aos amores, possveis e impossveis, que vivi na UFOP. Aos professores pela cincia, aos funcionrios pela pacincia. Guardarei comigo todas as lembranas, sabendo que aqui aprendi muito mais do que mtodos e frmulas: guardo a convico de que a verdade no patrimnio de ningum em particular e que diante dela os intelectuais se exaltam, mas os sbios se curvam. Aprendi que so muitos os que conhecem, poucos os que sabem e raros os que amam. E que o estudo, aliado ao trabalho, o caminho para a verdade, mas o amor a luz que nos permite contempl-la.

vi EPGRAFE

No dizer de Etienne Gilson, tudo pode ser constatado cientificamente, menos o princpio de que tudo pode ser constatado cientificamente.
Venncio Barbieri.

vii SUMRIO LISTA DE FIGURAS ..............................................................................................................vii I INTRODUO ...................................................................................................................... 1 1.1 Justificativas..................................................................................................................... 1 1.2 Metodologia ..................................................................................................................... 2 1.3 Estrutura do trabalho........................................................................................................ 3 II BREVE HISTRIA DO LINUX .......................................................................................... 5 III CLUSTERS E PROCESSAMENTO PARALELO .............................................................. 7 IV MPI E PVM ........................................................................................................................ 10 4.1 MPI - Message Passing Interface .................................................................................. 10 4.2 PVM - Parallel Virtual Machine ................................................................................... 10 4.3 Princpio de funcionamento ........................................................................................... 12 V AS DISTRIBUIES GNU/LINUX ................................................................................. 16 VI HARDWARE ....................................................................................................................... 18 6.1 Hardware e equipamento bsico sugerido..................................................................... 18 6.2 Instalao fsica.............................................................................................................. 19 VII INSTALAO DO SISTEMA OPERACIONAL ............................................................ 21 7.1 Como obter os arquivos de instalao?.......................................................................... 21 7.2 Testando a distribuio .................................................................................................. 22 7.3 Enfim, instalando o Linux!............................................................................................. 23 7.4 Contas de usurio........................................................................................................... 25 7.5 Rede ............................................................................................................................... 26 VIII A MQUINA VIRTUAL ................................................................................................ 30 8.1 Os pacotes RPM ............................................................................................................. 30 8.2 Instalando os pacotes rsh-client, rsh-server .................................................................. 30 8.3 Editando os arquivos de configurao do RSH .............................................................. 31 8.4 Instalando o pacote PVM - Parallel Virtual Machine ................................................... 34 8.5 Criando o arquivo .rhosts............................................................................................... 34 8.6 Configurando o arquivo .bashrc .................................................................................... 36 8.7 Desabilitando o Firewall pessoal .................................................................................. 37 8.8 Adicionando membros ao grupo PVM........................................................................... 38 8.9 Criando a mquina Virtual............................................................................................. 39 XIX O PROGRAMA CONVERSA ..................................................................................... 41 9.1 O ambiente kdevelop ...................................................................................................... 41 9.2 Programa mestre conversa.cpp................................................................................... 42 9.3 Programa escravo escravo1.cpp ................................................................................. 44 9.4 Mquina Virtual............................................................................................................. 45 X APLICAO: CLCULO DA CONSTANTE PI ............................................................. 47 10.1 O clculo de .............................................................................................................. 47 10.2 Programa mestre calcular.cpp .................................................................................. 48 10.3 Programa calcularescravo.cpp.................................................................................. 50 XI ANLISE DE DESEMPENHO.......................................................................................... 53 11.1 Medida de desempenho com o benchmark calcular................................................. 53 11.2 Preciso e convergncia............................................................................................... 56

viii XII CONSIDERAES FINAIS............................................................................................ 58 XIII REFERNCIAS BIBLIOGRFICAS ............................................................................ 60 ANEXO A - DESCRIO DAS FUNES DA BIBLIOTECA PVM ................................. 63 A.1 Classificao ................................................................................................................. 63 ANEXO B - COMANDOS DO CONSOLE PVM ................................................................... 64 B.1 Listagem dos comandos ................................................................................................ 63

ix LISTA DE FIGURAS Figura 2.1 - Tux: O pingim smbolo do Linux.......................................................................... 5 Figura 3.1 - Cluster de videogames PlayStation3 da Unicamp................................................ 7 Figura 3.2 - Cluster WIGLAF... .................................................................................................. 8 Figura 3.3 - Cluster Simulador do Espao da NASA... ............................................................... 8 Figura 4.1 - PVM na capa da Revista Linux Journal... ............................................................ 11 Figura 4.2 - Programa hello.c.. ................................................................................................. 14 Figura 4.3 - Programa hello_other.c......................................................................................... 15 Figura 6.1 - Equipamento sugerido para montagem do Cluster Beowulf................................. 18 Figura 6.2 - Esquema fsico de Instalao de um Cluster Beowulf... ....................................... 19 Figura 7.1 - Distribuies GNU/Linux mais populares... ......................................................... 21 Figura 7.2 - DiskDrake, o gerenciador de parties de disco do Mandriva... .......................... 24 Figura 7.3 - Alternando para superusurio com o comando su... ......................................... 25 Figura 7.4 - Gerenciando contas de usurio... .......................................................................... 26 Figura 7.5 - Escolhendo a conexo Ethernet............................................................................ 27 Figura 7.6 - Selecionando interface de rede... .......................................................................... 27 Figura 7.7 - Definindo a opo de nmero IP... ....................................................................... 28 Figura 7.8 - Definindo nome e domnio... ................................................................................ 28 Figura 7.9 - Definindo configuraes de inicializao............................................................. 29 Figura 8.1 - Criando o arquivo .rhosts com o editor vi... ..................................................... 35 Figura 8.2 - Desabilitando firewall pessoal.............................................................................. 37 Figura 8.3 - Gerenciando usurios do sistema.......................................................................... 38 Figura 8.4 - Editando grupo pvm... ........................................................................................... 39 Figura 8.5 - Adicionando usurios ao grupo pvm..................................................................... 39 Figura 8.6 - Criando a Mquina Virtual.. ................................................................................. 40 Figura 9.1 - Instalando compiladores e ambiente de desenvolvimento kdevelop... ................. 41 Figura 9.2 - Ambiente kdevelop.... ........................................................................................... 42 Figura 9.3 - Programa conversa.cpp... .................................................................................. 43 Figura 9.4 - Copiando executveis para a biblioteca do pvm................................................... 44 Figura 9.5 - Programa escravo1.cpp... .................................................................................. 45 Figura 9.6 - Executando o programa conversa... .................................................................. 46 Figura 10.1 - rea de integrao para o clculo de pi.............................................................. 47 Figura 10.2 - Programa calcular.cpp..................................................................................... 48 Figura 10.3 - Programa calcularescravo.cpp......................................................................... 50 Figura 10.4 - Copiando executveis-escravo para a biblioteca pvm... ..................................... 51 Figura 10.5 - Localizando o programa calcular... ................................................................. 52 Figura 10.6 - Executando o programa calcular... .................................................................. 52 Figura 11.1 - Desempenho do programa paralelo versus programa serial... ............................ 54 Figura 11.2 - Regio na qual o programa paralelo comea a ser mais rpido.......................... 55 Figura 11.3 - Convergncia do erro no clculo de pi.. ............................................................. 56 Figura 11.4 - Ampliao da figura 11.3.................................................................................... 57 Figura B.1 - Comandos do console pvm... ............................................................................... 65

x RESUMO apresentado um levantamento dos aspectos necessrios montagem e configurao de um sistema de processamento paralelo: Cluster Beowulf; que consiste basicamente em dois ou mais computadores conectados em rede, que realizam uma computao concorrente, ou seja, aplicaes ou outras tarefas, criando a iluso de que o trabalho feito por apenas uma mquina, chamada de computador virtual. Essa configurao proporciona uma srie de vantagens como alto desempenho e baixo custo de implantao, sendo possvel ainda atingir o desempenho de um supercomputador, utilizando-se vrias mquinas conectadas umas s outras, sem limite de ns. Sua aplicao vai desde a meteorologia, astronomia, clculos numricos avanados, at a renderizao de grficos para a indstria cinematogrfica. Objetiva-se gerar um tutorial auto-explicativo, indo desde o hardware bsico necessrio, instalao e configurao do sistema operacional Linux, rede, bibliotecas de distribuio do processamento, criao da mquina virtual (PVM), at o desenvolvimento de uma aplicao bastante utilizada em teste e validao de sistemas paralelos: o clculo da constante (pi).

Palavras-chave: Clusters, Cluster Beowulf, Linux, processamento paralelo, PVM, Mquina Virtual.

xi ABSTRACT It is presented a study concerning the necessary steps in order to assembly a parallel processing system: Cluster Beowulf, which is a process whereby a set of computers connected by a network are used collectively in order to solve a single large problem (concurrent computation), tasks or applications, creating the illusion that the job is done by a single one system, called Virtual Machine. This arrangement brings a series of advantages such as high performance and low cost, being possible to achieve a supercomputer-like performance, juts by using a great number of interconnected machines, with no restrictions to the number of nodes. Its application field involves since the meteorology, astronomy, advanced numerical calculation, until graphical rendering for the cinematographic industry. It is proposed a how-to manual, comprehending the necessary hardware, installation and configuration of the Linux operating system, network, message passing libraries, virtual machine (PVM) creation, and the development of a largely used application in test and validation of distributed systems: the constant (pi) calculation.

Keywords: Clusters, Cluster Beowulf, Linux, parallel processing, PVM, Virtual Machine.

12 I INTRODUO 1.1 Justificativas O mundo est em constante mudana: a exploso da microeletrnica e da informtica nas ltimas dcadas propiciou um horizonte cada vez mais amplo para o crescimento do planeta como um todo. Cincia e tecnologia avanam a passos largos, impulsionadas pela grande capacidade dos sistemas de computao atuais, permitindo a verificao de teorias e a construo de modelos computacionais cada vez mais complexos. Da mesma forma, a indstria se aproveita desses frutos tecnolgicos no intuito de aumentar sua produo, com demandas cada vez maiores (MORIMOTO, 2003). Muitos computadores (e programas) atuais ainda utilizam a arquitetura de Von Neumann (em srie), ou seja, apenas uma memria de dados e instrues, onde os programas so executados de forma estritamente seqencial. Como o tempo de trfego das informaes em um circuito eletrnico muito pequeno mas no nulo, significa que existe um limite fsico de velocidade para os processadores e que infelizmente est prximo de ser alcanado. Como ento prosseguir com a evoluo dos computadores? A principal resposta vm da analogia entre um processador e o crebro humano: sabe-se que a velocidade de um sinal eltrico dentro de um CI 1 muito maior do que um impulso nervoso transmitido pelos neurnios do crebro. Ento, de onde vm a superioridade do crebro visto que o neurnio muito mais lento que um circuito eletrnico? A resposta bvia: por que o crebro possui centenas de bilhes de neurnios trabalhando em paralelo. Neste contexto, pode-se pensar em supercomputadores2, que possuem milhares de processadores paralelos, como soluo para esses desafios, dada sua gigantesca velocidade e capacidade de processamento. No entanto, o alto custo de aquisio destes equipamentos pode beirar a cifra de alguns milhes de dlares. Muitos se perguntariam: o que fazer ento? Uma possvel soluo surgiu nos laboratrios do CESDIS Center of Excellence in Space Data and Information Sciences, da NASA em 1994, quando engenheiros e pesquisadores tiveram a idia de utilizar microcomputadores comuns, os populares PCs, acessveis a qualquer um para realizarem tal tarefa. Bastava apenas fazer com que vrios deles, ligados em rede,

1 2

CI: Circuito Integrado. Lista dos 500 mais rpidos supercomputadores do planeta: www.top500.org/

13 funcionassem como uma s mquina um computador virtual , tambm chamado de CLUSTER 3(BUENO, 2002). Um Cluster basicamente um sistema que compreende dois ou mais computadores (denominados ns) ligados em rede que executam um processamento paralelo, ou seja, aplicaes ou outras tarefas, sendo que o primeiro deles foi batizado com o nome de BEOWULF 4 e acabou tornando-se nome genrico para todos os Clusters que se assemelhavam configurao do original. H tambm clusters projetados sob outras plataformas, inclusive comerciais, com denominaes diferentes do primeiro. Beowulf inaugurou um perodo de ouro para o Linux na rea da supercomputao, justamente por permitir que grande poder computacional fosse alcanado com hardware disponvel comercialmente. o que se chama de out of the shelf - direto das prateleiras. O projeto pioneiro contava primeiramente com 16 mquinas 486, hardware comum e de fcil acesso, executando a plataforma GNU/Linux. O campo de aplicaes de um Cluster Beowulf e clusters em geral imenso: meteorologia, astrofsica, explorao de petrleo, otimizao, pesquisa operacional, biotecnologia (Figura 3.1), tolerncia falhas, simulaes de mercado financeiro, inteligncia artificial, servidores de internet, tratamento de imagens, jogos e at renderizao de efeitos visuais para o cinema (BROWN, 2006). 1.2 Metodologia proposto um tutorial comentado que possibilita a montagem e utilizao de um sistema de processamento paralelo, chamado Cluster Beowulf, englobando as etapas e procedimentos necessrios para tal, desde sua montagem fsica at o desenvolvimento de uma aplicao simples: o clculo da constante (pi), bastante utilizada para validao em sistemas paralelos, alm de atestar o funcionamento do mesmo. Tm-se portanto, um manual fundamentado nas seguintes etapas:

Discusso e detalhamento do hardware bsico utilizado; Instalao fsica do Cluster Beowulf;

3 4

Lista dos 500 mais rpidos Clusters no planeta: http://clusters.top500.org/ Referncia ao primeiro livro impresso da lngua inglesa: A Lenda de Beowulf, um poema pico medieval sobre a batalha de um nico guerreiro contra os monstros do mar.

14

Discusso sobre as distribuies GNU/Linux, testes de utilizao, instalao do sistema operacional, configurao das contas de usurio e rede;

Montagem da mquina virtual, instalao e configurao dos pacotes necessrios para o processamento paralelo;

Testes de comunicao entre mestre e escravos, com o programa conversa; Desenvolvimento da aplicao para clculo de (pi) em linguagem C++; Anlise do sistema, comparao do Cluster Beowulf com um sistema monoprocessado (programa em srie);

Consideraes finais;

1.3 Estrutura do trabalho Nos captulos 1 ao 3 mostrada uma breve introduo aos sistemas paralelos, tipos de Clusters, aplicaes do processamento paralelo na rea da supercomputao e uma breve histria do sistema operacional Linux. No captulo 4, englobam-se alguns conceitos relativos aos conjuntos de softwares e bibliotecas de trocas de mensagens, MPI e PVM, responsveis pela distribuio do processamento em sistemas paralelos, como o Cluster Beowulf. Dos captulos 5 ao 7, mostrada uma discusso sobre as distribuies GNU/Linux e o hardware utilizado, assim como o detalhamento das etapas de instalao, configurao do sistema operacional e rede. Posteriormente, no captulo 8, listada uma seqncia de aes que permitiro a montagem da mquina virtual, com o detalhamento dos pacotes de software especficos da biblioteca PVM, servidores de acesso remoto (rsh), criao e edio de arquivos essenciais para a comunicao entre as unidades de processamento e a montagem da mquina virtual propriamente dita, com a execuo do software PVM. O primeiro teste de comunicao contemplado no captulo 9, com a apresentao do programa conversa, onde mestre e escravos na rede formadora do Cluster trocam mensagens entre si. J no captulo 10, apresenta-se o desenvolvimento de uma aplicao bastante utilizada na validao e teste de sistemas paralelo: a integrao numrica para o clculo da constante pi.

15 Em seqncia, no captulo 11, parte-se para uma anlise de desempenho (benchmarking) do Cluster Beowulf em comparao a um computador em srie (apenas um processador), atestando sua funcionalidade na utilizao para fins prticos. Finalmente, no captulo 12, so feitas algumas consideraes finais a respeito do trabalho de elaborao de um manual e da programao paralela como um todo, com a inteno de contribuir com a disseminao do conhecimento e entendimento sobre o tema especfico da montagem de sistemas paralelos.

16 II BREVE HISTRIA DO LINUX Basta apenas aparecer o desenho de um pingim gordinho e sentado em qualquer lugar (figura 2.1) para que logo qualquer pessoa com algum conhecimento em informtica o associe ao Linux: o Tux a imagem que se tornou smbolo deste sistema operacional (ALECRIM, 2004 ).

Figura 2.1 - Tux: O pingim smbolo do Linux. FONTE: (ALECRIM, 2004).

O sistema Linux tem sua origem no Unix, um sistema operacional multitarefa e multiusurio que tem a vantagem de rodar em uma grande variedade de computadores. dividido em duas partes: a primeira o kernel, que o ncleo do sistema responsvel pela comunicao com o hardware; a segunda composta pelos programas e servios que dependem do kernel para seu funcionamento (SILVA, 2006). Em meados da dcada de 60, a Bell Telephone Labs. da AT&T, juntamente com a General Electric e o projeto MAC do MIT 5 (Massachusetts Institute of Technology), desenvolvem o sistema operacional Multics. Porm, como ele no atinge seu propsito inicial, logo o Laboratrio Bell retira-se do projeto (WELSH; KAUFMAN, 1995). Por causa de um jogo chamado Space Travel usado como passatempo durante o projeto Multics, dois engenheiros de software da AT&T, Ken Thompson e Dennis Richie, que no tinham mais mais acesso ao sistema, resolveram criar um sistema operacional rudimentar que possibilitasse a portabilidade do jogo em um computador PDP-7, que j no era mais utilizado. Desta forma nasceu o sistema operacional chamado Unics, como trocadilho ao Multics e que de alguma forma, passou a ser escrito posteriormente como Unix. J no incio da dcada de 70, o Unix reescrito em linguagem C pelo prprio criador da linguagem, Dennis Ritchie, fazendo com que seu uso dentro da AT&T crescesse tanto que um grupo de suporte interno para o sistema acabou sendo criado. Eles forneciam cpias do cdigo fonte para fins educacionais em universidades.
5

Massachussets Institute of Technology: web.mit.edu

17 Em 1983, Richard Stallman, um cientista do MIT lana o projeto GNU (GNUs not Unix) que tinha a pretenso de criar um sistema operacional do tipo Unix gratuito, em defesa de muitos programadores que haviam contribudo para o aprimoramento do Unix e consideravam injusto que a AT&T e outros se apoderassem do fruto deste trabalho. No ano seguinte, o projeto GNU iniciado oficialmente, e para efeito de organizao, Stallman e outros criam a Free Software Foundation (FSF), uma corporao sem fins lucrativos que buscava promover softwares gratuitos eliminando restries cpia, formulando assim a licena GPL (General Public License). No final da dcada de 80, um estudante finlands chamado Linus Torvalds inicia um processo pessoal de aprimoramento do Kernel do Minix, um sistema operacional do tipo Unix escrito por Andrew Tannenbaum, chamando esta vertente de Linux como abreviao de Linus's Minix. Depois de um certo tempo de trabalho, Linus envia uma mensagem para o grupo de discusso do Minix, na qual afirma estar trabalhando em uma verso livre de um sistema operacional similar ao minix para computadores AT-386, tendo finalmente alcanado o estgio de utilizao, e estava disposto a colocar o cdigo-fonte disponvel para ampla distribuio. Como a FSF j tinha obtido ou escrito vrios componentes importantes do sistema operacional GNU, com exceo de um kernel 6 , foi uma questo de tempo at que em 5 de outubro de 1991, Linus Torvalds anunciasse a primeira verso oficial do Linux. No ano seguinte, o Linux se integra a GNU com o objetivo de produzir um sistema operacional completo. Desde ento, muitos programadores e usurios espalhados pelo globo terrestre tm seguido os ideais de Richard Stallman e Linus Torvalds, e contribudo para o desenvolvimento do Linux.

Kernel o ncleo do sistema operacional.

18 III CLUSTERS E PROCESSAMENTO PARALELO Cluster um termo amplamente usado, significando uma srie de computadores independentes combinados em um sistema unificado de hardware, software e rede (figura 3.1). Mesmo ao nvel fundamental, quando dois ou mais computadores so utilizados juntamente no intuito de resolverem um problema, j considera-se como sendo um cluster. Eles podem ser utilizados para duas principais funes, Alta Disponibilidade (HA High Availability) ou Alta Performance (HPC High Performance Computing) para fornecer um poder computacional maior do que aquele fornecido por um simples computador (BROWN, 2006).

Figura 3.1 - Cluster de videogames PlayStation3 da Unicamp. Fonte: (TILIO, 2008).

Os Clusters de Classe I so construdos quase que inteiramente utilizando tecnologia padro e de fcil acesso, como interfaces SCSI 7 ou IDE 8 e placas de rede Gigabit Ethernet (Figura 3.2). Eles sero ento mais baratos que os Clusters de Classe II (figura 3.3), que podem utilizar hardware altamente especializado com o objetivo de alcanar alto desempenho (BROWN, 2006).

7 8

SCSI: Small Computer System Interface (Interface para dispositivos de armazenamento). IDE: Intelligent Drive Electronics.

19

19

Figura 3.2 - Cluster WIGLAF.

Figura 3.3 - Cluster Simulador do Espao da NASA.

A utilizao mais comum dos Clusters se d tanto em aplicaes tcnicas, como servidores de internet para udio e jogos quanto simulaes: biotecnologia, petro-clusters, simulaes de mercado financeiro, previso do tempo, entre outras (BROWN, 2006). Uma aplicao interessante a de tolerncia falhas, com dois ou mais PC's ligados entre si: O primeiro executa a tarefa enquanto o segundo tem a funo de monitor-lo constantemente e manter seus dados atualizados em relao ao primeiro. Se o primeiro computador sair do ar por alguma razo, o segundo assume imediatamente suas funes. A tolerncia falhas muito utilizada em servidores web ou servidores de banco de dados em Intranets (MORIMOTO, 2003). Uma segunda aplicao seria o balanceamento de carga, tambm muito usada em servidores web, onde o Cluster formado por pelo menos trs PC's, sendo que o primeiro o mestre, que se encarrega de distribuir as tarefas, como por exemplo requisies de servios de conexo. Um detalhe interessante neste tipo de configurao que ao invs de se utilizar um poderoso servidor para fazer o papel de mestre, pode-se utilizar vrios microcomputadores comuns para realizarem a mesma tarefa, o que o torna bastante atrativo economicamente. Uma terceira aplicao e objetivo principal deste trabalho o processamento paralelo, onde as estrelas principais so os Clusters Beowulf: Sua arquitetura baseia-se em uma rede de microcomputadores conectados entre si por dispositivos centralizadores, como switches e placas de rede Gigabit Ethernet. Tm como grande vantagem o fato de suportarem processadores de famlias e arquiteturas diferentes, ou seja, o funcionamento ou no de um n no atrapalha a funcionalidade do Cluster. Este fato de extrema importncia considerando redes com centenas de processadores. Outro ponto a ser notado que computadores de

poderio menos elevado podem ser perfeitamente clientes da rede, desde que o servidor saiba com quem est lidando. Isso conseguido atravs das chamadas s bibliotecas de troca de mensagens PVM e MPI adicionadas ao cabealho de cada programa nos PC's hospedeiros. Dessa forma o servidor sabe exatamente a arquitetura de cada um de seus clientes, e no requisitar uma tarefa acima de sua capacidade (PVM..., 2008). Ainda no ramo das vantagens, h de se considerar aquela que pode ser determinante em questes de projeto: a arquitetura Beowulf suporta mais de um mestre, da mesma forma que os escravos da rede. Clusters Beowulf do mundo todo tm contribudo para a soluo de diversos problemas de natureza prtica, principalmente em aplicaes cientficas que demandam grande volume de clculo e processamento de alto desempenho, realizao de simulaes numricas avanadas, problemas de escoamento de fluidos, determinao de propriedades fsicas dos materiais, otimizao, inteligncia artificial, previso do tempo e at em efeitos visuais na indstria cinematogrfica. Recentemente, ficaram famosos na mdia e atingiram o status de estrelas principais pela renderizao das cenas de filmes como StarWars 9 , Final Fantasy 10 e muitas outras produes de Hollywood. O princpio de funcionamento de um Cluster Beowulf bastante simples: o servidor (frontend) coordena a diviso das tarefas entre os clientes (back-end) por intermdio de bibliotecas de troca de mensagens, como a MPI 11 e PVM 12 instaladas previamente alcanar a computao paralela propriamente dita. Em Clusters desse tipo, possvel processar quantidades imensas de dados, mas apenas ao utilizar aplicativos escritos com suporte arquitetura, pois em cada programa precisam estar includos os cabealhos especficos de chamadas s bibliotecas de troca de mensagens, necessrias para a comunicao e reconhecimento das arquiteturas presentes no sistema (MORIMOTO, 2003). Os programas escritos para a arquitetura Beowulf so elaborados utilizando linguagens de programao como C/C++ e FORTRAN (DEITEL; DEITEL, 2001).
Star Wars - Episdio2: O ataque dos Clones. Lucas Arts , 2002. Final Fantasy: The Spirits Whitin, 2001. MPI: Message Passing Interface. PVM: parallel virtual machine: Ser abordada com detalhes no prximo captulo.

e de maneira

diferenciada nos PC's mestre e escravos. Somente elas propiciam este tipo de arquitetura

9 10 11 12

21

IV MPI E PVM 4.1 MPI - Message Passing Interface A MPI (Message Passing Interface) uma biblioteca com funes para troca de mensagens, responsvel pela comunicao e sincronizao de processos em um cluster paralelo. Dessa forma, os processos de um programa paralelo podem ser escritos em uma linguagem de programao seqencial, tal como C, C++ ou Fortran. O objetivo principal da MPI disponibilizar uma interface que seja largamente utilizada no desenvolvimento de programas que utilizem troca de mensagens, garantindo sua portabilidade em qualquer arquitetura, mas sem a inteno de fornecer uma infraestrutura completa de software para a computao distribuda. Isso a torna recomendvel para o desenvolvimento de programas paralelos de alta performance em MPP's 13 , ou seja, supercomputadores, que possuem milhares de processadores paralelos em apenas uma mquina (GEIST et al., 1994). 4.2 PVM - Parallel Virtual Machine O projeto PVM 14 teve incio no final da dcada de 80 no Oak Ridge National Laboratory (em Massachussets, EUA), onde o prottipo fora construdo por Vaidy Sunderman e Al Geist. Primeiramente, esta verso foi utilizada apenas pelo prprio laboratrio, sendo que a segunda verso, posteriormente desenvolvida pela universidade do Tennessee, foi liberada para distribuio livre em 1991 e comeou a ser utilizada em muitas aplicaes cientficas. Desde ento, outras verses vm surgindo e sendo disponibilizadas em domnio pblico para livre utilizao (PVM..., 2008). O sistema PVM descrito (Figura 4.1), a exemplo da MPI, tambm se utiliza do modelo de troca de mensagens e permite aos programadores explorarem a computao distribuda para uma grande variedade de sistemas computacionais, inclusive MPP's (supercomputadores). O conceito chave no PVM fazer com que uma coleo de computadores apresente o comportamento de uma nica e poderosa mquina virtual, da a derivao de seu nome (GEIST et al., 1994).

13 14

MPP: Sigla em Ingls para processadores paralelos em massa. PVM: sigla em ingls para Mquina Paralela Virtual.

22

Figura 4.1 - PVM na capa da Revista Linux Journal.

4.3 Princpio de funcionamento O PVM um conjunto integrado de software e bibliotecas que possibilita uma computao concorrente e heterognea para computadores de vrias arquiteturas conectados entre si. Algumas de suas funcionalidades so baseadas em (GEIST et al., 1994):

Instalao permitida para usurio simples (host) 15 : tanto mquinas com apenas um processador at computadores paralelos (com vrias unidades de processamento) podem ser escolhidos pelo host sem que o mesmo tenha privilgios de super-usurio (root). As mquinas podem ser adicionadas ou excludas durante o processo.

Acesso de hardware translcido: as aplicaes podem enxergar o hardware no ambiente de trabalho de forma independente da arquitetura, como um conjunto nico de elementos necessrios ao processamento ou podem escolher explorar a capacidade de mquinas especficas, designando certas tarefas para os computadores mais apropriados ao caso.

Computao baseada no processo: a unidade de paralelismo no PVM a tarefa, ou seja, uma seqncia de controle onde se equilibram comunicao e computao. Em particular, vrias tarefas podem ser executadas em um nico processador (pipelining).

Modelo explcito de troca de mensagens: coleo de tarefas computacionais, sendo cada uma responsvel por uma parte da aplicao, porm trabalhando de maneira

15

host = convidado. Usurio com restries de utilizao de um sistema operacional.

23 cooperativa. O tamanho mximo de uma mensagem limitado pela quantidade de memria disponvel.

Suporte heterogeneidade: o sistema PVM suporta heterogeneidade em termos de mquinas, redes e aplicaes. Com relao troca de mensagens, o PVM permite que elas contenham mais de um tipo de dados para que possam ser trocadas entre as mquinas com diferentes sistemas de representao.

Suporte a multiprocessadores: os usurios do sistema nativo PVM (de domnio pblico) tm a vantagem de poderem se comunicar com outros sistemas PVM otimizados, fornecidos muitas vezes pelos fabricantes de processadores.

O sistema composto por duas partes principais: A primeira parte o daemon, chamado de pvmd3 ou pvmd, que reside em todos os computadores formadores da mquina virtual. Um daemon pode ser comparado um programa que roda em segundo plano em um computador pessoal sem que o usurio se d conta disto, como por exemplo, um aplicativo que gerencia o envio e recebimento de correio eletrnico. O pvmd3 foi projetado para que um usurio que possua um login vlido seja capaz de instal-lo na mquina. Quando o usurio deseja executar uma aplicao, basta criar primeiramente a mquina virtual executando o PVM. A aplicao pode ento ser chamada a partir de um prompt Unix (ou Linux) mesmo como host. Mltiplos usurios podem configurar vrias mquinas virtuais, assim como apenas um usurio pode executar vrias aplicaes PVM simultaneamente (GEIST et al., 1994). A segunda parte do sistema a biblioteca com as rotinas de interfaceamento. Ela contm um repertrio completo de funes necessrias para a cooperao entre as tarefas de uma aplicao. Essas rotinas, passveis de chamadas do usurio, vo desde funes para troca de mensagens, coordenao de processos e tarefas, at modificaes na mquina virtual. O modelo de computao PVM baseado no princpio de que a aplicao consiste em vrias tarefas. Cada uma responsvel por uma parte do trabalho da aplicao. s vezes, a aplicao paralelizada por suas funes, isto , cada tarefa executa uma funo diferente, como por exemplo, entrada, sada, montagem do problema, soluo e exibio do resultado. Esse processo geralmente chamado de paralelismo funcional. O mtodo mais comum de paralelizar uma aplicao chamado paralelismo de dados. Neste mtodo todas as tarefas so as mesmas, mas cada uma resolve e entende apenas uma

pequena parte dos dados do problema. Ele muitas vezes referido como um modelo de computao SPMD (single-problem multiple-data, ou problema-nico mltiplos-dados). O PVM suporta tanto um nico mtodo quanto uma mistura dos dois, dependendo da aplicao, evidenciando a grande heterogeneidade das plataformas de computao suportadas por ele. Dentre as linguagens de programao suportadas, as mais utilizadas so escritas em C, C++ e FORTRAN, mesmo com aplicaes orientadas objetos, utilizando as convenes padres das respectivas linguagens, inclusive para sistemas baseados em Unix (WELSH; KAUFMAN, 1995). Programas escritos em C e C++ acessam a biblioteca de funes do PVM fazendo a ligao com os arquivos libpvm3.a e libgpvm3.a, presentes na distribuio padro do software PVM (GEIST et al., 1994). Programas em Fortran so implementados mais como subrotinas do que funes, como no caso do C. Isto faz-se necessrio pela razo de alguns compiladores de arquiteturas suportadas no possuirem interfaces de chamadas de Fortran para C. Alm do mais, os tipos de funes e bibliotecas utilizadas devem referenciar os tipos trabalhados: pvm para C e pvmf para Fortran. As interfaces Fortran esto contidas em uma biblioteca diferente, a libpvmf.a, nos mesmos moldes da anterior. Todas as tarefas so identificadas por um nmero inteiro, o task identifier (tid). Mensagens so enviadas e recebidas atravs de tids. J que as tids devem ser nicas para toda a mquina virtual, elas so sustentadas pelo pvmd local (daemon do n local) e no podem ser definidas pelo usurio. Embora o PVM codifique informaes dentro de cada tid, de se esperar que o usurio as veja como identificadores inteiros opacos. O PVM contm vrias rotinas que retornam um valor tid e assim a aplicao do usurio pode identificar outras tarefas no sistema (figura 4.2).

25 main()
{ int cc, tid, msgtag; char buf[100]; printf("i'm t%x\n", pvm_mytid()); cc = pvm_spawn("hello_other", (char**)0, 0, "", 1, &tid); if (cc == 1) { msgtag = 1; pvm_recv(tid, msgtag); pvm_upkstr(buf); printf("from t%x: %s\n", tid, buf); } else printf("can't start hello_other\n"); pvm_exit(); } Figura 4.2 - Programa hello.c Fonte: (GEIST et al., 1994).

O programa, aps invocado manualmente (em um terminal Linux), comea imprimindo o nmero da tarefa (tid), obtido da funo pvm_mytid(). Dispara a cpia de outro programa chamado de hello_other (localizado em um n escravo) usando a funo pvm_spawn(). Se for bem sucedida, faz com que o programa execute o bloqueio de recebimento pela funo pvm_recv. Aps o recebimento da mensagem, o programa imprime a mensagem de enviado por sua contraparte, assim como o nmero da tarefa disparada; o buffer descompactado com a funo pvm_ upkstr. Finalmente, a funo pvm_exit dissocia (separa) o programa do sistema PVM. Na figura 4.3 listada a programao para o escravo. Sua primeira funo obter a identificao da tarefa (tid) do mestre chamando a funo pvm_parent(). Obtido seu hostname, ele o transmite para o mestre utilizando a chamada de rvore pvm_initsend para a transmisso do buffer. A funo pvm_pkstr coloca uma string no buffer que ser transmitido de uma maneira robusta e independente da arquitetura. Isso feito por intermdio da funo pvm_send que o envia ao processo de destino especificado pela ptid. Desta forma, a mensagem enviada apelidada com uma tag de valor 1.

26
#include "pvm3.h" main() { int ptid, msgtag; char buf[100]; ptid = pvm_parent(); strcpy(buf, "hello, world from "); gethostname(buf + strlen(buf), 64); msgtag = 1; pvm_initsend(PvmDataDefault); pvm_pkstr(buf); pvm_send(ptid, msgtag); pvm_exit(); } Figura 4.3 - Programa hello_other.c Fonte: (GEIST et al., 1994).

27 V AS DISTRIBUIES GNU/LINUX O Linux uma espcie de cpia sistema operacional Unix para computadores pessoais e que suporta ambientes multi-tasking (multitarefa), multi-usurio, interface grfica X Window, redes TCP-IP e muito mais. O lanamento do Linux, como alternativa ao at ento sistema operacional dominante da Microsoft, causou furor no mundo inteiro principalmente pelo fato de possuir o cdigo-fonte aberto, possibilitando sua alterao por qualquer um que se habilitasse. Comeava a era do software livre e por ironia, o Linux teve sucesso em rejuvenescer um dos mais antigos sistemas operacionais at ento em uso, o Unix (WELSH; KAUFMAN, 1995). Em termos tcnicos, o Linux apenas o ncleo do sistema operacional, responsvel pelos servios bsicos de escalonamento de processos, memria virtual, tratamento de excees, gerenciamento de arquivos, dispositivos entrada/sada etc. No entanto, a maior parte das pessoas utiliza o termo Linux referindo-se ao sistema completo ncleo junto das aplicaes, interfaces grficas, jogos e outros. Estas aplicaes foram desenvolvidas em sua maior parte graas ao projeto GNU, da a razo de muitos desenvolvedores denominarem o sistema completo como GNU Linux (WELSH; KAUFMAN, 1995). Como o Linux pode ser modificado e distribudo por qualquer um, naturalmente comearam a surgir as to faladas distribuies, ou distros como so carinhosamente chamadas em alguns crculos. As mais famosas so, com certeza, as americanas RedHat e Debian, que se tornaram populares em todo mundo devido facilidade de manuseio, configurao e por disponibilizarem uma infinidade de pacotes (softwares) nos repositrios on-line de programas. Alis, os programas so instalados e executados no Linux de uma forma muito mais eficiente, segura e elegante do que em outros sistemas operacionais: o usurio no precisa se preocupar em qual diretrio o programa deve ser instalado ou muito menos se ir contrair um vrus ao faz-lo, pois os pacotes Linux vm pr-compilados, diferentemente dos executveis .exe do Windows. Alm do mais, no Linux no necessrio ficar horas procurando por esse ou aquele programa, pois as distros vm com a maioria dos programas essenciais para o trabalho, como editores de texto, planilhas, utilitrios para gravao de CDs, tocadores de msica e DVD, entre outros. Na pior hiptese, caso o usurio no encontre o programa que deseja, basta digitar um comando simples em um terminal, que o Linux se encarrega automaticamente de procur-lo nos repositrios on-line, fazendo o seu download e instalao sem interveno externa.

28 Alm do poder do Linux em transformar qualquer computador pessoal em uma estao de trabalho com o poder do Unix, ele tambm utilizado para controlar grandes servidores, devido s suas caractersticas de flexibilidade e estabilidade para lidar com grandes arrays de disco e sistemas multiprocessados, com aplicaes que vo desde servidores web a bases de dados corporativas (BUENO, 2002). A utilizao do Linux como sistema operacional em um ambiente de Cluster se encaixa muito bem, ainda mais para fins acadmicos. Segundo os administradores do Avalon um dos maiores Clusters Beowulf em operao, situado no Laboratrio Nacional de Los Alamos, EUA a utilizao do Linux no se deve ao fato de ser gratuito e sim porque ele tem o cdigofonte aberto, desempenho de rede superior, e est sendo continuamente desenvolvido de maneira aberta e acessvel (WARREN, 2002). Aparentemente no h restries quanto distribuio a ser utilizada, pois teoricamente quase todas possuem as ferramentas necessrias e suficientes para a montagem de um Cluster Beowulf. Entretanto, vrios outros fatores podem influenciar em tal escolha, como facilidade de manuseio, configurao, compatibilidade de hardware e at familiaridade do projetista com a distribuio em questo, visto que podem haver diferenas significativas entre elas dependendo da aplicao, apesar de todas carregarem o nome Linux. Tal assunto ser abordado com mais detalhes no captulo de instalao e configurao do sistema operacional.

29 VI HARDWARE 6.1 Hardware e equipamento bsico sugerido O hardware utilizado ferramenta chave para o funcionamento do Cluster Beowulf (Figura 6.1). Ao optar-se por mquinas acessveis e de baixo custo, deve-se atentar para sua utilizao tima para usufruir ao mximo os recursos disponveis. No presente caso, conta-se inicialmente com 2 computadores de 64 Bits e processadores de ncleo duplo Intel Core 2 Duo e AMD X2 e de ncleo qudruplo Intel Core2 Quad comportando um total de 8 processadores trabalhando paralelamente. Um Cluster com essa configurao j possibilita a construo de vrios programas complexos e a adio de outros ns na rede pode ser feita de maneira simples e rpida, desde que a mquina virtual esteja corretamente instalada e configurada.

2 processadores AMD X2 de 64 Bits e 4MB de Memria Cache L2; 2 processadores Intel Core2 Duo de 64 Bits e 4MB de Memria Cache L2; 4 processadores Intel Core2 Quad de 64 Bits com 8MB de Memria Cache L2; 3 Placas-me ASUS; 3 HDs(memria fsica) com capacidade de 240GBytes cada; 3 placas de vdeo GeForce 2400+; 3 placas de rede atl1 Gigabit ethernet, com taxa de transferncia 1Gbps(1GBit/s) da Attansic; 1 Switch D-link com 16 portas e velocidade de 1Gbps; 1 Monitor, teclado e mouse; 4 cabos de rede ethernet 1000Base-T; 2 No-breaks; Equipamento para refrigerao(ar-condicionado ou ventiladores); Mesas e/ou suportes para a acomodao das estaes de trabalho;
Figura 6.1 - Equipamento sugerido para montagem do Cluster Beowulf.

30 6.2 Instalao fsica No h grandes dificuldades ao se instalar a parte fsica do Cluster computadores, switch e cabos o que geralmente pode ser feito de maneira rpida e intuitiva (Figura 6.2):

Aos computadores, basta conect-los aos no-breaks e eles rede de alimentao, atentando-se para a tenso de trabalho, 127V ou 220V.

Para ligao fsica da rede, basta conectar uma extremidade dos cabos de rede em suas placas ethernet e as outras nas diversas portas do switch;

Se deseja-se acesso internet, basta conectar um cabo do switch a um ponto de acesso, e aps configurada a rede, todas as mquinas tero acesso.

Figu ra 6.2 - Esquema fsico de Instalao de um Cluster Beowulf.

Para efeito de padronizao, ser priorizada a programao e exibio de resultados do processamento em apenas um computador, que desempenhar ao mesmo tempo papel de mestre e um dos escravos 16 do Cluster Beowulf. Os ns clientes da rede, aps configurados e

16

Isto possvel pois o mestre fica ocioso a maior parte do tempo. Tal assunto ser abordado com mais detalhes no captulo de configurao e programao da mquina virtual.

instalados no necessitaro portanto de teclado, mouse ou monitores para o funcionamento do sistema. Sero configurados para que funcionem sem tais dispositivos de entrada e sada, o que pode acarretar em grande economia de implantao do projeto, j que em uma rede com vrios clientes, sua contagem teria um peso financeiro considervel. Para fazer com que o computador funcione sem o teclado basta acessar a BIOS 17 de cada computador separadamente, geralmente pressionando-se a tecla delete presente no teclado no momento da inicializao(boot 18 ). Ao proceder-se dessa maneira, uma tela bsica de configurao da BIOS, o setup da mquina, aberto. Dentre as opes do menu, deve-se procurar a opo que gera um erro na falta do teclado e desabilit-la, utilizando as teclas +(mais) ou -(menos) do teclado. O principal problema deste passo que cada modelo de placa-me e conseqentemente cada BIOS possui um software do SETUP diferente, com diferentes nomes e opes. Algumas at reconhecem automaticamente a falta de um dispositivo de E/S e prosseguem o boot normalmente, ou ento alertam ao usurio o fato e requisitam se ele deseja prosseguir ou no com a etapa de boot. Se o usurio tiver alguma dvida sobre como faz-lo, basta consultar o manual da placa-me em questo, para obter as informaes necessrias. A remoo de monitores e mouses contempla uma tarefa bem mais fcil e rpida, j que o sistema no acusa erro caso no estejam presentes, bastado apenas desconect-los de suas portas. No entanto, importante lembrar que estes passos somente devem ser realizados aps a instalao do sistema operacional, configurao da rede, instalao e configurao completa da mquina virtual.

17 18

BIOS: memria somente de leitura ou ROM (no-voltil). Boot: processo de inicializao de um computador, onde programas essenciais para o funcionamento do hardware e sistema operacional so carregados da memria ROM para a RAM.

32 VII INSTALAO DO SISTEMA OPERACIONAL 7.1 Como obter os arquivos de instalao? Chegou o momento da instalao da distribuio Linux e o que para alguns foi um pesadelo no passado, hoje consiste em uma tarefa muito simples. A maioria das distribuies disponveis atualmente possuem gerenciadores de instalao automatizados, onde so feitas algumas perguntas ao usurio e a instalao ocorre sem problemas de uma maneira at mais fcil que os sistemas operacionais mais populares, como o Windows da Microsoft. A primeira coisa a ser feita a obteno dos CD's ou DVD's de instalao. Os arquivos de imagem (ISO) para a gravao podem ser obtidos fazendo-se o download nos sites da distribuio, stios de busca como o Google ou ento nos repositrios online de programas,

que possuem vrias distribuies disponveis. O Linux desenvolvido abertamente e de maneira global e em conseqncia disto, as empresas e organizaes responsveis pelo lanamento das distribuies lanam uma nova verso a cada seis meses em mdia. aconselhvel utilizar-se um Live-DVD ou Live-CD 19 por permitem teste e visualizao dos recursos da distribuio antes da instalao definitiva. Na FIG. 7.1 so listadas algumas das mais populares distribuies disponveis, com seus respectivos stios para download:
RedHat Linux(distribuio americana, comercial) Mandriva Linux(brasileira, verses free ou comercial) Fedora (verso free, disponibilizada pela RedHat) SuSE (americana, baseada na RedHat) Kurumin (distribuio brasileira, baseada no Debian) Debian (Distribuio americana, free) Ubuntu (distribuio sul africana totalmente livre, baseada no Debian) http://www.redhat.com http://www.mandriva.com http://fedoraproject.org http://www.novell.com/linux http://www.guiadohardware.net/kurumin http://www.debian.org http://www.canonical.org

19

Live-CD/DVD: Executa o sistema operacional diretamente da mdia removvel.

Slackware (muito parecida com o UNIX e disponibilizada por uma nica pessoa, Patrick Volkerding)

http://www.slackware.com/

Figura 7.1 - Distribuies GNU/Linux mais populares.

34 7.2 Testando a distribuio Para o usurio iniciante, aconselhvel reservar um HD (Hard disk) para a instalao do Linux, evitando-se o perigo de danificar eventuais arquivos contidos no disco rgido. Por outro lado, caso o usurio prefira um dual boot,ou seja, dois ou mais sistemas operacionais na mesma mquina como Linux+Windows recomenda-se instalar o Linux por ltimo, pois ao detectar a presena de outro sistema operacional, o Linux requisitar a instalao de um gerenciador de boot (GRUB), o qual criar um menu de opes no momento da inicializao do computador, aonde o usurio poder carregar o sistema operacional de sua escolha. A prxima etapa a preparao dos microcomputadores para a instalao do sistema operacional, na qual a maneira mais fcil de faz-lo proceder o boot diretamente do CD ou DVD-ROM. Para isso basta configurar a opo boot sequence(Ordem de boot) no Setup 20 com o valor CD/DVD-ROM, C , A. Em computadores mais antigos, deve-se acessar tambm a seo PnP/PCI Setup e configurar a opo PnP OS(geralmente a primeira opo) com o valor No. Isto obriga a BIOS a detectar e configurar os endereos a serem utilizados por todos os perifricos Plug-and-play e entregar o trabalho semi-pronto para o sistema operacional, evitando-se a ocorrncia de problemas na deteco de perifricos. Feito isto, basta ligar o computador, colocando o Live-CD da distribuio e aguardar o boot. Em quase todas as distribuies atuais, como o Debian, Ubuntu, Mandriva, Slackware, Red Hat, Fedora e tantas outras, o processo de instalao basicamente o mesmo: dar o boot pelo CD, particionar o HD, escolher os pacotes que sero instalados, configurar o vdeo e a rede, definir a senha de root (superusurio) e configurar o gerenciador de boot. Para evitar problemas, altamente recomendvel testar as distribuies antes de instal-las, pois existe a possibilidade de ocorrerem problemas na deteco do hardware, principalmente ao utilizar-se mquinas com hardware muito especfico, de circulao no muito comum ou com pouco suporte, tais como placas de rede, vdeo e som. Tm-se ento duas alternativas para resolver o problema:

Testar, por meio dos live-CDs de instalao das distribuies, se todos os dispositivos de hardware so detectados e configurados automaticamente. Recomendvel para a utilizao da distribuio sem complicaes.

20

possvel acessar o SETUP da BIOS pressionando-se repetidamente a tecla delete ao ligar-se o computador (no momento da contagem de memria).

35

Encontrar nos repositrios on-line de programas, os drivers 21 de configurao para os dispositivos em questo; o que pode ser uma tarefa bastante trabalhosa, j que os drivers devem ser especficos para a distribuio e kernel Linux utilizados.

Segundo este contexto, as seguintes distribuies foram testadas:

Mandriva Linux Free 2008 for i586(32 Bits); Mandriva Linux Free 2008 for X86_64 (64 Bits); Fedora Core 8 e 9 for X86_64 (64 Bits); Ubuntu e Kubuntu Linux 7.10 for X86_64 (verses GNOME 22 e KDE 23 );

Aps o teste com vrias distribuies, aquela que mostrou maior compatibilidade e estabilidade com o hardware disponvel (mencionado no tem 7.1) foi a distribuio Mandriva Linux 2008 free KDE, baseada na americana RedHat e com verso do kernel Linux 2.6.22. Contudo, a deciso final sobre qual distribuio utilizar especial em cada situao e depende de vrios fatores alm daqueles j mencionados, e no regra obrigatria a utilizao de uma em particular. 7.3 Enfim, instalando o Linux! Aps a verificao da distribuio atravs dos live-CDs chegou o momento da instalao. Caso tenha-se utilizado um live-CD, na prpria rea de trabalho do ambiente KDE haver um cone Iniciar Instalao, onde basta ao usurio clic-lo e seguir as instrues. Se o usurio possuir apenas o CD ou DVD de instalao, basta proceder o boot a partir do disco de instalao e aguardar instrues. Na maioria das vezes, ser apenas preciso clicar em avanar e avanar; procedimento anlogo instalao de um software qualquer em um sistema Windows. O instalador solicitar ao usurio informaes como Idioma de instalao, layout do teclado, hora etc. Mesmo o particionamento do disco bastante simples no Mandriva. Dentre as perguntas feitas ao usurio, uma modo de instalao. A primeira opo (padro) aconselhvel caso se deseje instalar o sistema sem muitas perguntas. No entanto, recomendase o modo Expert, pois permite ter um melhor controle da instalao. Ainda sim e durante

21 22 23

Arquivos com informaes de configurao de hardware: Similares aos Device Drivers do Windows. GNOME ambiente grfico Xwindow similar ao MAC-OS da Apple. KDE K desktop enviroment ambiente grfico Xwindow similar ao Windows.

36 todo o processo haver um assistente tira-dvidas caso o usurio no esteja familiarizado. Na escolha do idioma de instalao e layout do teclado, apenas deve-se ter o cuidado de escolher a opo ABNT-2 caso o teclado seja em portugus (possua a tecla cedilha ), ou Internacional caso contrrio. Em seguida, ser a vez de ajustar o nvel de segurana do sistema. Escolha o nvel padro, pois no captulo de configurao do Remote Shell(RSH), ser necessrio desabilitar o firewall do Linux. Contudo, estas opes podem ser alteradas mais tarde pelo Mandriva Control Center (MCC). Chega-se agora parte mais crtica da instalao: o particionamento do disco. Felizmente, o Mandriva possui uma ferramenta bastante amigvel para facilitar esta tarefa, o DiskDrake (Figura 7.2).

Figura 7.2 - DiskDrake, o gerenciador de parties de disco do Mandriva.

Pode-se deixar o utilitrio redimensionar uma partio Windows j existente, usando o espao livre para instalar o Linux, utilizar uma partio Linux previamente criada (Usar partio existente), usar o espao no particionado do disco (caso tenha algum) ou simplesmente apagar tudo que estiver gravado e partir para uma instalao limpa. Se o usurio pretende redimensionar uma partio Windows pr-existente, existem dois cuidados necessrios para que tudo ocorra bem. Primeiro, certificar-se de que exista espao em disco suficiente. Segundo, deve-se desfragmentar o disco atravs do Windows antes de iniciar a instalao. Ao escolher-se a opo apagar todo o disco o programa vai simplesmente limpar a tabela de

partio do HD e divid-lo em duas parties: uma menor, montada no diretrio raiz(/), usada para os arquivos do sistema e outra maior, montada no diretrio /home, onde ficam guardados os arquivos dos usurios. Por ltimo, as duas opes automticas se adequam bem para o usurio iniciante, porm sem muitas alternativas e contm apenas os sistemas de arquivos suportados pelo Linux: Ext3, Journalised FS, Swap, FAT, NTFS(Windows) alm de Outra (caso o sistema de arquivos no seja reconhecido) e Vazia (espao no particionado), como j mostrado na FIG. 7.2. 7.4 Contas de usurio Ao final do processo de instalao, ser pedido ao usurio que crie uma conta, com nome completo, login e senha. Alm disso ser pedido que fornea uma senha de root (administrador). Isto acontece porque, mesmo que o usurio em questo seja o administrador do sistema, o Mandriva por medida de segurana criar uma conta de usurio simples para sua operao normal. Esta ao do sistema operacional muito importante para diminuir uma prtica ruim por parte dos usurios: a de executarem tudo como superusurios (root), o que de alto risco e potencialmente prejudicial; pois sem restries, pode-se danificar o sistema apenas digitando-se um comando errado no prompt, ou apagando um arquivo de sistema por engano. recomendvel que o usurio utilize a conta simples para as tarefas comuns, como acesso internet, digitao de documentos etc, fazendo uso da conta de root apenas quando for necessrio alterar a configurao do sistema ou instalar novos programas. A boa notcia que como usurio normal tambm possvel ter acesso a todas as ferramentas de configurao, bastando apenas fornecer a senha de root. Outro detalhe que o root no aparece na tela de login. Caso o usurio queira us-lo, ser necessrio digitar su em um terminal e fornecer a senha de root (Figura 7.3). Atentar para o smbolo $ que indica usurio simples e # que indica superusurio (root).

Figura 7.3 - Alternando para superusurio com o comando su.

38 Caso queira-se criar uma outra conta de usurio, basta acessar o MCC Mandriva Control Center (digitando-se mcc em um terminal ou clicando-se no cone correspondente), ir em Sistema/Gerenciar usurios do Sistema (Figura 7.4).

No

captulo

de

Figura 7.4 - Gerenciando contas de usurio.

configurao

da

mquina virtual, um outro usurio aparecer em cena: o PVM, que necessitar acessar as mquinas da rede sem a interveno externa. 7.5 Rede Aps a instalao fsica dos componentes da rede como mostrado na seo 6.2, parte-se agora para a configurao da rede propriamente dita. Ela pode ser facilmente feita no ambiente KDE de qualquer distribuio GNU/Linux e no Mandriva no diferente. Para isto, o usurio deve dirigir-se ao centro de controle (Mandriva Control Center - MCC): basta digitar mcc em um terminal ou no cone correspondente: . Em seguida, deve-se abrir a aba Redes e

Internet e clicar em Configurar uma nova interface de rede. A configurao bem simples, pois os endereos IP podem ser configurados automaticamente (DHCP) ou o usurio pode escolher configur-los de acordo com seu desejo (no formato xxx.xxx.xxx.xxx). O mais importante neste momento escolher adequadamente os nomes dos computadores presentes na rede de forma a facilitar a identificao posterior, pois estes nomes sero utilizados ao longo de toda vida til do Cluster. Sero aqui utilizados nomes associados ao Laboratrio de Sistemas Trmicos, Metrologia e Instrumentao da Escola de Minas - UFOP, como labsisterXX e domnio em.ufop.br.

Na Fig. 7.5 at a Fig. 7.9 mostrada uma seqncia de ao para configurao da rede.

40

Figura 7.5 - Escolhendo a conexo Ethernet.

Figura 7.6 - Selecionando interface de rede.

41

Figura 7.7 - Definindo a opo de nmero IP.

Figura 7.8 - Definindo nome e domnio.

43

Figura 7.9 - Definindo configuraes de inicializao.

44 VIII A MQUINA VIRTUAL 8.1 Os pacotes RPM Aproxima-se o momento de montagem da mquina virtual. ela que proporcionar o processamento paralelo de todos os processadores conectados rede do Cluster. E alm do software PVM Parallel Virtual Machine, responsvel pela distribuio do processamento, tambm necessria a utilizao de ferramentas que possibilitem a comunicao e acesso remoto s mquinas (software Remote Shell - rsh), assim como a confeco de programas paralelos (em C/C++ ou outra) no ambiente de desenvolvimento kdevelop. No atual estgio de desenvolvimento do GNU/Linux, h uma infinidade de pacotes (softwares) especficos para cada distribuio e disponveis nos repostrios on-line. Os pacotes em Linux tm uma conotao diferente quela dos populares executveis (.exe) em sistemas windows, pois vm pr-compilados, tornando-se executveis apenas aps a compilao. Para verses baseadas na RedHat, como o Mandriva, existem os pacotes RPM, que so auto-instalveis e muito teis no momento da instalao de programas. Eles necessitam apenas ser executados (clicando-se 2 vezes sobre o cone correspondente ou digitando-se #urpmi nome_do_pacote em um terminal) para que sejam instalados automaticamente. 8.2 Instalando os pacotes rsh-client, rsh-server O pacote RPM rsh-client Remote Shell Client contm um conjunto de programas que permite aos usurios executar comandos em mquinas remotas, executar login remoto, copiar ou trocar arquivos entre mquinas (rsh, rlogin e rcp). Todos esses trs comandos usam o estilo de autenticao do tipo rhosts (remote host ou convidado remoto). Este pacote rsh necessrio para habilitar o acesso remoto e ser primordial para o funcionamento da mquina virtual, j que o PVM utiliza o modelo de troca de mensagens para coordenar o processamento e necessita acessar todas as mquinas com privilgios de superusurio. como se o PVM fosse um usurio virtual. Os pacotes RPM (como o rsh-client) podem ser facilmente obtidos atravs dos repositrios online (como o rpmfind.org ou sites de busca como o google) e sua instalao se dar executando-se o arquivo de extenso .rpm, clicando-se duas vezes sobre seu cone correspondente e selecionando a opo instalar.

45 Detalhes do pacote RPM rsh-client para Mandriva 2008 free 64Bits: Nome do pacote: rsh-0.17-18mdv2008.0.x86_64.rpm Verso: 0.17-18mdv2008.0 Verso atualmente instalada: 0.17-18mdv2008.0 Arquitetura: x86_64 Tamanho: 64 KB O pacote rsh-server (Remote Shell Server) instalado da mesma forma que o rsh-client. No entanto, ser necessria sua configurao, pois por segurana, o rsh configurando de forma a somente permitir o login remoto caso o usurio fornea o nome de usurio (ID) e senha; e isto impossibilitaria a utilizao do PVM, pois ele deve promover um trfego intenso de dados e informaes entre os ns da rede, pea chave do processamento paralelo. A configurao do rsh se dar alterando-se o contedo de alguns arquivos especficos, possibilitando o Remote Shell (rsh), Remote Login (rlogin) e Remote Copy (rcp), o que ser mostrado mais adiante. O pacote RPM (rsh-server) contm os servidores necessrios para todos os servios citados. Ele tambm contm um servidor de rexec, um mtodo alternativo para executar comandos remotos. Os servidores so executados pelo software xinetd e os arquivos de configurao esto nos diretrios /etc/xinetd.d e pam.d. Como j dito, todos os servidores so desabilitados por padro. Detalhamento do pacote RPM rsh-server para Mandriva 2008 free 64Bits: Nome do pacote: rsh-server-0.17-18mdv2008.0.x86_64.rpm Verso: 0.17-18mdv2008.0 Verso atualmente instalada: 0.17-18mdv2008.0 Arquitetura: x86_64 Tamanho: 55 KB Caso seja solicitado pelo sistema operacional, deve-se ainda instalar o pacote xinetd: Detalhamento do pacote RPM xinetd para Mandriva 2008 free 64Bits: Nome do pacote: xinetd-2.3.14-6mdv2008.0.x86_64.rpm Verso: 2.3.14-6mdv2008.0 Verso atualmente instalada: 2.3.14-6mdv2008.0 Arquitetura: x86_64 Tamanho: 122,5 KB 8.3 Editando os arquivos de configurao do RSH Aps a instalao dos pacotes mencionados, possvel proceder-se a configurao do Remote Shell, sendo que editor de textos vi pode ser usado para esta operao. O vi executado

no terminal (menu/ferramentas/konsole), sendo altamente recomendvel, pois ao alterar-se um arquivo de texto no ambiente KDE pode-se resultar em alguns problemas na execuo do RSH e conseqentemente na mquina virtual. Os arquivos de configurao apresentados so os mesmos em qualquer distribuio GNU/Linux, no entanto a sua localizao difere entre elas. Basta que o usurio localize os arquivos corretamente e os edite em seus respectivos diretrios. Os seguintes passos devem ser seguidos para a edio de tais arquivos: Executar-se o terminal (menu/ferramentas/konsole), lembrando que os arquivos mostrados devem ser editados com privilgios de superusurio (figura 7.3): 1- Editar o arquivo rexec em /etc/pam.d/ $ su (ser pedida a senha de superusurio) (abre o diretrio /etc/pam.d/)

# cd /etc/pam.d/ # ls

(lista os arquivos presentes)

Se o arquivo rexec aparecer na lista, digitar: # vi rexec Quando o editor vi iniciar, aperte a tecla a do teclado para ativar o modo de edio. Altere o arquivos de forma que suas linhas fiquem como mostrado: auth auth auth auth auth account session sufficient pam_nologin.so sufficient pam_securetty.so sufficient pam_env.so sufficient pam_rhosts_auth.so include system-auth include system-auth include system-auth

Ao terminar, pressione a tecla Esc para sair do modo de edio, em seguida a tecla :, o que far o editor vi deslocar o cursor at o final do arquivo e finalmente as teclas wq e ENTER, que significam write(escrever), quit(sair). Observao: para arquivos que necessitem privilgios de usurio simples, deve-se digitar :wq! para encerrar o programa e forar o editor a salvar o contedo.

47 Da mesma forma, localizar o arquivo rlogin (no diretrio /etc/pam.d/), seguir at seu diretrio(como usurio root), usar o editor vi e alterar o arquivo da maneira como segue: $ cd /etc/pam.d/ $ ls $ su # vi rlogin (vai ao diretrio especificado) (lista contedo) (altera para modo root, superusurio) (abre o arquivo rlogin no editor vi)

Pressione a para modo de edio e alterar as linhas do arquivo conforme mostrado: #%PAM-1.0 auth sufficient pam_rhosts_auth.so auth sufficient pam_securetty.so auth sufficient pam_nologin.so auth include system-auth account include system-auth password include system-auth session include system-auth Novamente, digitar :wq para sair e salvar. De maneira anloga alterar o arquivo rsh no diretrio pam.d (pasta /etc/pam.d/rsh): auth auth auth auth account session sufficient pam_nologin.so sufficient pam_securetty.so sufficient pam_env.so sufficient pam_rhosts_auth.so include system-auth include system-auth

Em seqncia, o arquivo rlogin no diretrio xinetd.d (pasta /etc/xinetd.d/rlogin): # default: off # description: rlogind is the server for the rlogin(1) program. The server \ # provides a remote login facility with authentication based on \ # privileged port numbers from trusted hosts. service login { socket_type = stream wait = no user = root log_on_success += USERID log_on_failure += USERID server = /usr/sbin/in.rlogind disable = no } Por ltimo, alterar o arquivo rsh no diretrio xinetd.d (pasta /etc/xinetd.d/rsh):

48 # default: off # description: The rshd server is the server for the rcmd(3) routine and, \ # consequently, for the rsh(1) program. The server provides \ # remote execution facilities with authentication based on \ # privileged port numbers from trusted hosts. service shell { socket_type = stream wait = no user = root log_on_success += USERID log_on_failure += USERID server = /usr/sbin/in.rshd disable = no } 8.4 Instalando o pacote PVM - Parallel Virtual Machine O software PVM habilitar uma coleo heterognea de computadores ser utilizada como um coerente e flexvel recurso de computao concorrente. Os pacotes RPM so instalados de maneira anloga aos anteriores. Agora, dois pacotes devero se instalados, o software pvm e o pacote pvm-devel que contm as bibliotecas de funes do PVM libpvm3.a, libfpvm3.a, libgpvm.a e libfpvm.a, necessrias ao funcionamento dos programas paralelos, assim como os arquivos de cabealho com as funes, o pvm3.h: Detalhes do pacote RPM pvm: Nome do pacote: pvm-3.4.5-6mdv2008.0.x86_64.rpm Verso: 3.4.5-6mdv2008.0 Verso instalada: 3.4.5-6mdv2008.0 Arquitetura: x86_64 Tamanho: 795 KB Detalhes do pacote RPM pvm-devel: Nome do pacote: pvm-devel-3.4.5-24.x86_64.rpm Verso: 3.4.5-24 Verso atualmente instalada: 3.4.5-24 Arquitetura: x86_64 Tamanho: 856 KB 8.5 Criando o arquivo .rhosts O arquivo .rhosts ser responsvel por mostrar ao servidor de acesso remoto (rsh) presente em determinada mquina, quais dos ns clientes da rede tm permisso para acess-la via rsh.

Isto pode ser realizado criando-se um arquivo de nome .rhosts(da forma como escrito, inclusive o ponto) no diretrio home de cada usurio (/home/nome_do_usurio). Novamente, recomenda-se utilizar o editor vi. Abra o konsole e dirija-se ao diretrio home do usurio como mostrado: $ cd /home/danny $ vi .rhosts (/home/nome_do_usurio) (cria o arquivo .rhosts)

Como pode-se observar pelo smbolo $ do prompt, esta operao deve ser efetuada sem privilgios de superusurio (simbolizado por # ). Quando o editor vi iniciar, pressionar a tecla "a" do teclado para ativar o modo de edio. Entre com o nome completo, inclundo apelido e domnio das mquinas da rede j configurados anteriormente (Figura 8.1). Ao terminar, pressionar as teclas Esc, para sair do modo de edio e a tecla ":", o que o far deslocar-se at o final do arquivo. Em seguida, as teclas wq!(write, quit e o sinal ! para forar o editor a salvar o contedo). Para arquivos que necessitem privilgios de superusurio, apenas digite :wq para encerrar o programa e salvar o contedo (Figura 8.1). Para verificar o arquivo criado (ou qualquer outro), basta entrar com o comando: $ more nome_do_arquivo Exemplo: $ more .rhosts

Fi

81 C i d

h t

dit

51 Para conferir se os arquivos foram editados como usurio ou superusurio (root), prosseguir com o comando: $ ls -all O konsole exibir algo do tipo: -rw-r--r-- 1 danny danny -rw-r--r-- 1 danny danny 88 2008-04-11 13:46 .rhosts 237 2008-04-08 16:44 .bashrc

Caso algum arquivo tenha sido criado como superusurio, o nome root aparecer em lugar do usurio. 8.6 Configurando o arquivo .bashrc Aps instalado o pacote PVM, j possvel criar a mquina virtual, mas sempre que se desejasse faz-lo, o usurio teria que acessar o diretrio onde est instalado o PVM e executar o comando pvm para tal. Para automatizar este processo, basta alterar o arquivo .bashrc como usurio simples, ou seja, sem privilgios de root. Enfatiza-se a necessidade de proceder-se desta maneira, caso contrrio o PVM no conseguir efetuar o login remoto nos clientes da rede. Dentro da pasta home/nome_do_usurio, editar o arquivo .bashrc digitando no terminal: $ vi .bashrc (abre o arquivo .bashrc no editor vi como usurio comum)

Ao abrir o arquivo, adicionar as seguintes linhas, pressionando-se a para modo de edio: PVM_ROOT=/usr/share/pvm3 export PVM_ROOT PVM_RSH=/usr/bin/rsh export PVM_RSH PVM_ARCH="LINUX64" export PVM_ARCH O contedo final do arquivo apresentar o formato: # .bashrc # User specific aliases and functions # Source global definitions if [ -f /etc/bashrc ]; then . /etc/bashrc fi PVM_ROOT=/usr/share/pvm3

52 export PVM_ROOT PVM_RSH=/usr/bin/rsh export PVM_RSH PVM_ARCH="LINUX64" export PVM_ARCH Observao: se a distribuio LINUX instalada for de 32 bits, a penltima linha fica: PVM_ARCH="LINUX" Para finalizar, digitar wq! para salvar o contedo. Para checar se o contedo do arquivo foi alterado, digitar o comando more .bashrc no mesmo diretrio. 8.7 Desabilitando o Firewall pessoal Para que o software pvm possa acessar as mquinas sem nenhuma barreira, deve-se tambm desabilitar o firewall do Mandriva Linux. Para isto dirija-se ao centro de controle mcc/ Segurana/Redes e Internet/Configurar seu firewall Pessoal e marcar a opo Tudo (sem firewall) (Figura 8.2).

53

Ao desabilitar o firewall para a utilizao do rsh, o sistema fica vulnervel ataques externos. Para evit-los pode-se proceder de duas maneiras: caso tenha-se acesso internet, desconectar o ponto de acesso ao utilizar a mquina virtual, ou ento utilizar um outro computador ligado rede para fazer tal papel. Ele pode inclusive ser de poderio menos elevado, j que ter a nica finalidade de ser o firewall da rede. 8.8 Adicionando membros ao grupo PVM Aps realizadas as etapas de instalao e configurao dos arquivos para a montagem da mquina virtual, os pacotes PVM instalados j tero neste momento criado um grupo de acesso, assim como os usurios configurados previamente durante a instalao do sistema operacional. Isto explicado pelo fato de o pvm agir como um usurio virtual, pois necessitar acessar todas as mquinas da rede e gerenciar a comunicao entre elas. No entanto, os usurios autorizados a utilizarem o Cluster Beowulf devem adicionar seus respectivos nomes ao grupo PVM existente. Basta acessar o Centro de Controle do Mandriva(mcc)/Sistema/Gerenciar usurios do Sistema, localizar o grupo pvm (Figura 8.3) e clicar no boto editar (Figura 8.4). Feito isso, abrir-se- uma janela de edio na qual o usurio pode adicionar seu nome ao grupo (Figura 8.5).

Figura 8.3 - Gerenciando usurios do sistema.

56

Figura 8.4 - Editando grupo pvm.

Figura 8.5 - Adicionando usurios ao grupo pvm.

8.9 Criando a mquina Virtual Aps realizadas as etapas que culminaram na configurao do PVM chegado o momento de construir a mquina virtual propriamente dita e que consiste na tarefa mais simples do processo: basta ao usurio executar a aplicao pvm (digitando-se pvm no terminal). A partir da o daemon 24 , chamado de pvmd3 ou pvmd, que reside em todos os computadores formadores da mquina virtual entrar em ao. Cabe ao usurio agora informar ao PVM quais mquinas integram a rede, com o comando add nome_da_mquina no prompt do pvm (Figura 8.6).
24

Um daemon pode ser comparado a um programa que roda em segundo plano em um computador pessoal sem que o usurio se d conta disto.

57

Figura 8.6 - Criando a Mquina Virtual

Pode-se observar que o host no qual a mquina estiver sendo criada no precisar ser adicionado na mquina virtual, pois o PVM j o reconhecer como primeiro n da rede. Na etapa de configurao da mquina virtual, tambm possvel utilizar pacotes no estilo SSH, que so mais seguros, ao invs do RSH. No entanto, a codificao (criptografia) dos dados necessria para a transmisso de informaes atrapalharia o desempenho do sistema como um todo. A desvantagem porm a A mquina virtual est pronta para a execuo de um programa paralelo! Para isto, deve-se sair do console pvm sem portanto encerr-lo (digitando-se quit) e executar qualquer programa paralelo. Para encerrar o pvm basta digitar halt no prompt do PVM (ANEXO B). A programao e execuo de programas paralelos ser vista com maiores detalhes no prximo captulo.

59 XIX O PROGRAMA CONVERSA 9.1 O ambiente kdevelop Para a programao paralela necessita-se primeiramente de um ambiente de programao apropriado. Em distribuies Linux com interface KDE, h o ambiente de desenvolvimento kdevelop. Ele d suporte vrias linguagens, tais como C/C++, Java, FORTRAN, Perl etc. Em caso de no momento da instalao do sistema operacional, o usurio no tenha escolhido instalar os pacotes de desenvolvimento, basta ir ao centro de controle/Gerenciar pacotes/Desenvolvimento, marcar todos os pacotes relacionados linguagem de sua escolha, desde os compiladores gcc (no caso de C++), at o ambiente kdevelop (figura 9.1); e clicar no boto aplicar. Os pacotes devem referenciar a distribuio Linux utilizada (i586 para 32Bits e X86_64 para 64Bits).

Figura 9.1 - Instalando compiladores e ambiente de desenvolvimento kdevelop.

60

Para abrir o ambiente instalado, clicar em Menu/Desenvolvimento/kdevelop C/C++. A tela inicial similar ao da figura 9.2:

Figura 9.2 - Ambiente kdevelop.

62 O programa conversa ter a funo de testar a comunicao entre mestre e escravos do cluster. Como visto no captulo 4 (figuras 4.2 e 4.3), em um Cluster Beowulf utilizando o modelo pvm deve-se ter programas diferenciados para mestre e escravos. Assim deveremos executar duas instncias do ambiente kdevelop na mquina escolhida para a programao. Em uma janela ser desenvolvido o programa para o mestre e em outra o programa para o(s) escravo(s). 9.2 Programa mestre conversa.cpp Para criar um novo projeto no ambiente kdevelop deve-se abrir o menu projeto/novo projeto/C++/programa ol mundo; dar um nome apropriado ao programa, como conversa, avanar as etapas at que o programa principal seja aberto. No lugar daquele criado, escrever o programa para o mestre que comandar o processamento paralelo. importante lembrar que deve-se referenciar o arquivo de cabealho pvm3.h que contm os prottipos de funes 25 do PVM (Figura 9.3):
/*************************************************************************** * Copyright (C) 2008 by Danny Tonidandel * * tonidandel@gmail.com * ***************************************************************************/ #ifdef HAVE_CONFIG_H #include <config.h> #endif #include <iostream> #include <cstdlib> #include<pvm3.h> // arquivo de cabecalho com as funcoes usadas pelo pvmd using namespace std;

int main(int argc, char *argv[]) { int numt, tid; char buf[100]; cout << "***********************************************" <<endl; cout << "* Ola Escravos! Voces estao ai? *" <<endl; cout << "* Eu sou BEOWULF!! *"<<endl; cout << "***********************************************" <<endl; cout << endl; printf ( "Minha tarefa = %x\n", pvm_mytid() ); cout << endl; /* Da funo pvm_spawn: O argumento 1 indica o nome do arquivo disparado. O terceiro argumento(flag) indica opes de disparo (0 = o PVM decide em quem disparar a tarefa; 1 = o argumento seguinte ser o nome indicado). Se o terceiro e quarto argumentos forem, 0 e Null respectivamente, o PVM dispara em toda mquina virtual; Ex: numt = pvm_spawn ( "escravo1", NULL, 1, "labsister02.em.ufop.br", 1, &tid ); */ for(int conta=0; conta<3; conta++) { numt = pvm_spawn ( "escravo", NULL, 0, NULL, 1, &tid ); //Dispara todos os processos da rede(programas-escravo) 25 numt = pvm_recv ( -1, -1 ); //o Recebe mensagens enviadas de qualquer processo Um prottipo de funo diz ao compilador nome da funo, tipos de dados retornados, seus parmetros etc. ( para numt, ( int* as ) 0, ( int* ) 0,de &tid ); es(DEITEL; DEITEL, 2001). usa prottipos validar chamadas fun O compilador pvm_bufinfo pvm_upkstr ( buf ); // Descomapcta mensagem recebida printf ("Sim, tarefa disparada = %x. Eu sou o escravo %s\n", tid, buf ); cout << endl; } cout << endl << "nmero de tarefas disparadas = " << numt << endl;

63

Antes de compilar o programa principal, deve-se tambm referenciar (linkar) as bibliotecas libpvm3.a e libgpvm3.a. Elas so essenciais para a execuo do programa paralelo, sem as quais ele no funcionaria. Para isto, deve-se alterar as opes de projeto do kdevelop 26 , dirigindo-se ao menu projeto/opes de configurao, inserir no campo LDFLAGS o comando -L (biblioteca, library), seguido do diretrio onde est a biblioteca em questo entre colchetes: < -L caminho_do_arquivo -L caminho_do_arquivo ...> Para o kdevelop, as bibliotecas referentes linguagem C/C++ so referenciadas como: < -L /usr/lib/pvm3/lib/LINUX64/libpvm3.a -L /usr/lib/pvm3/lib/LINUX64/libgpvm3.a > Basta ao usurio agora compilar e construir o projeto (build). Vale lembrar que caso o usurio escolha utilizar alguma outra distribuio diferente do Mandriva Linux, os diretrios onde esto contidas as bibliotecas podem ser diferentes das mostradas, devendo-se assim adequlas ao caso. 9.3 Programa escravo escravo1.cpp A programao para os escravos ocorre de maneira similar ao mestre (figura 9.5), porm salienta-se que ela deve ser feita em separado, criando-se outro projeto no kdevelop (pode ser executada ao mesmo tempo em outra rea de trabalho do KDE). Aps escrito o programa e referenciadas as bibliotecas, deve-se ainda copiar os executveis referentes aos escravos, geralmente em </home/nome_do_usurio/diretrio_do_escravo/debug/src>, para as pastas nas quais o pvm ir procurar caso necessrio. No caso mostrado, o diretrio do executvel se encontra em: </home/danny/escravo1/debug/src>

26

kdevelop: ambiente de desenvolvimento do KDE.

64 E o diretrio de destino ser: </usr/share/pvm3/lib/LINUX64> A cpia dos arquivos pode ser realizada manualmente (CTRL+C / CTRL+V) ou via comando remoto (< rcp nome_do_arquivo caminho_de_destino >), e o procedimento mostrado na Fig. 9.4:

#ifdef HAVE_CONFIG_H #include <config.h> #endif #include <iostream> #include <cstdlib> #include <pvm3.h> using namespace std; main() // programa principal { int ptid; // varivel onde ser guardada o tid do mestre int msgtag = 0; int info = 0; char buf[100]; ptid = pvm_parent(); // Obtem o tid do mestre strcpy(buf, ""); gethostname(buf + strlen(buf), 64); pvm_initsend(PvmDataDefault); /* Se prepara para compactar uma nova mensagem. O argumento inteiro especifica o esquema de codificao da mensagem.*/ pvm_pkstr(buf); // Compacta o buffer(do tipo string) para envio da mensagem pvm_send(ptid, 3); // envia a mensagem ao mestre com uma tag de valor 3 pvm_exit(); exit(0); } Figura 9.5 - Programa escravo1.cpp.

9.4 Mquina Virtual Aps feita a programao do mestre e escravo(s), com os executveis-escravo corretamente copiados para as pastas do PVM correspondentes (figura 9.4), basta compilar, criar a

aplicao (build) e executar o programa. Porm antes de execut-lo necessrio criar a mquina virtual: para isto, deve-se executar a aplicao pvm, entrando em execuo o daemon pvmd, responsvel pelo gerenciamento das rotinas de distribuio de processamento. Uma aplicao paralela em PVM feita executando-se apenas o programa mestre, que se encarregar em disparar(com a funo pvm_spawn) os programas escravos. Pode-se execut-lo a partir do ambiente kdevelop ou dirigindo-se at o diretrio onde est gravado o executvel (Figura 9.6).

66

Figura 9.6 - Executando o programa conversa.

Em suma, o programa conversa faz com que o mestre primeiramente se identifique na rede e exiba o nmero de sua tarefa correspondente (funo pvm_mytid()). Em seguida, dispara os programas contidos nos escravos da rede pela funo pvm_spawn() e solicita que tambm se identifiquem (compacta um string com a funo pvm_pkstr(), envia a mensagem para os escravos com funo pvm_send() e espera a resposta).

Sempre que houver uma funo de envio ou recebimento no mestre (figura 9.3), dever haver uma funo correspondente (e igualmente oposta) nos escravos (figura 9.5) e vice-versa. Antes de enviar qualquer mensagem ao processo de destino, deve-se compact-la usando uma funo coerente ao tipo de dado enviado (string, integer, float etc) (ANEXO A). O mesmo acontece no recebimento, aonde aps receber a mensagem, deve-se descompact-la antes de sua utilizao. Atentar para os nomes das variveis escolhidas, pois estas devem ser as mesmas tanto no mestre quanto nos escravos. Este o modelo de programao PVM, no qual todo o paralelismo devido a uma srie de funes de troca de mensagens.

68 X APLICAO: CLCULO DA CONSTANTE PI 10.1 O clculo de Um programa bastante utilizado em teste e anlise de desempenho na rea da supercomputao e computao paralela em Clusters o da integrao numrica para o clculo da constante (equao 10.1). Seu objetivo principal observar o comportamento do sistema como um todo, desde a comunicao entre processadores na qual analisa-se a correo do clculo mediante a um resultado esperado at a anlise de desempenho, observando-se o tempo de resposta mediante a uma ao requerida.
1 0

= 4

1 1 x2

dx

(10.1)

Segundo o teorema fundamental do clculo, a integral de uma funo contnua qualquer corresponde rea abaixo da curva definida por ela dentro do intervalo desejado (figura 10.1). O valor de dado portanto pela rea abaixo da curva definida pela funo. Como se trata de uma dzima infinita, o intervalo de integrao definir a preciso do resultado, delimitado apenas pelos limites fsicos do sistema de computao em questo, como memria, tipos de dados usados na programao, verso do PVM etc.

Figura 10.1 - rea de integrao para o clculo de pi.

69 10.2 Programa mestre calcular.cpp Na Fig. 10.2 mostra-se o programa mestre para o clculo da constante . ele quem faz necessariamente a distribuio do processamento: sua primeira ao determinar o nmero de escravos (hosts) presentes na rede e obter, mediante ao do usurio, o nmero de pontos nodais (que gerar os intervalos de integrao infinitesimais) desejados para o clculo. Aps isso, faz uma varredura (loop For) em todos os hosts (inclusive ele mesmo!) no intuito de disparar os processos contidos em cada um. Para cada processo (programa escravo) disparado, o mestre determina o passo da integrao (x) e limites de integrao de cada um antes de enviar a mensagem. Como h neste caso trs escravos de igual capacidade, cada um receber um tero do limite de integrao total(balanceamento de carga), facilitando o trabalho do mestre e minimizando trocas de mensagens desnecessrias. Aps o envio dos dados que sero usados pelos escravos em seus clculos, o mestre espera, da parte deles, uma resposta positiva com seus respectivos resultados parciais. Somente a ento o mestre (que no tem mais trabalho algum alm deste) poder computar os resultados parciais enviados pelos hosts e exibir o resultado final: o valor da constante . Tambm feita uma ltima comparao com uma constante previamente definida, na inteno de obter-se o erro de clculo para aquele nmero de pontos desejado. Apesar do Cluster possuir um total de 8 processadores, foi disparado para efeito didtico apenas um processo (de mesmo nome: calcularescravo) em cada computador, totalizando 3 ncleos de processadores em uso.
/*********************************************************************************** * * MONOGRAFIA DE GRADUAO EM ENGENHARIA DE CONTROLE E AUTOMAO * * UNIVERSIDADE FEDERAL DE OURO PRETO - ESCOLA DE MINAS * * MANUAL DE MONTAGEM DE UM CLUSTER BEOWULF SOB A PLATAFORMA GNU/LINUX * * Programa que calcula o Valor de PI em um ambiente paralelo - Cluster Beowulf * * Copyright (C) 2008 by Danny Tonidandel * *********************************************************************************** */ #ifdef HAVE_CONFIG_H #include <config.h> #endif #include <iostream> #include <cstdlib> #include <stdlib.h> #include <cmath>// Biblioteca de funes matemticas ao estilo C++ #include <cstring>// Biblioteca de manipulao de strings ao Estilo C #include <string> // Biblioteca de manipulao de strings ao estilo C++

70
#include<pvm3.h>/* Arquivo de cabealho com os prottipos de funes da bilioteca pvm. Deve ser referenciada como: < -L /usr/lib/pvm3/lib/LINUX64/libpvm3.a -L/usr/lib/pvm3/lib/LINUX64/libgpvm3.a> nas opes de configurao do kdevelop. */ using namespace std; int main(int argc, char *argv[]) // Programa principal { int numt, tid; double PI_PARCIAL = 0; double PI_FINAL = 0; double l2 = (1.0/3.0); double l1 = 0.0; // limites de integrao (total de 0 a 1, 1/3 para cada nodo) double PI = dacos(-1); // Constante pi para comparao e calculo do erro int N = 0; // fornecer o nmero regies (espaamento) de integrao int info2; int num = 0; struct pvmhostinfo *hostp;// Struct que obtm informaes sobre os escravos da rede. int info, i, nhost, narch; info = pvm_config(&nhost, &narch, &hostp); cout << "Numero de escravos no cluster = " << nhost << endl << endl << endl; cout << "***********************************************" <<endl; cout << "* Ola Escravos! Eu sou BEOWULF!! *" <<endl; cout << "* Calculem o valor de PI!! *"<<endl; cout << "***********************************************" <<endl; cout << endl << endl; printf ( "Minha tarefa = %x\n", pvm_mytid() ); // Exibe a tid do mestre cout << endl; cout << "Numero de escravos no cluster = " << nhost << endl << endl; cout << "Entre com o numero de divisoes na regiao de integracao"; cin >> num; cout<< endl; for (i=0; i < nhost; i++) // Varre escravos da rede (o mestre tambm um dos escravos!!) { //----------- Dispara o processo indicado na funo pvm_spawn -----------------------------------------numt = pvm_spawn ( "calcularescravo", NULL, 1,hostp[i].hi_name, 1, &tid );/*Dispara processo no escravo(i)*/ //------- Nmero de reas de integrao a ser enviado aos escravos -----------if (strcmp(hostp[i].hi_name,"labsister03.em.ufop.br")== 0 ) N = (int)(0.33*num);//Core2Quad if (strcmp(hostp[i].hi_name,"labsister02.em.ufop.br")== 0 ) N = (int)(0.33*num);//AthlonX2 if (strcmp(hostp[i].hi_name,"labsister01.em.ufop.br")== 0 ) N = (int)(0.34*num);//Core2Duo // ------------- Envia limites da integral aos escravos ------------------------------------------------pvm_initsend(PvmDataDefault); // Prepara-se para envio de dados pvm_pkdouble(&l1, 1, 1); // Compacta o Limite de integrao l1 (do tipo double) pvm_pkdouble(&l2, 1, 1); // Compacta o Limite de integrao l2 (do tipo double) pvm_pkint(&N, 1, 1); // Compacta um inteiro dentro da mensagem info2 = pvm_send(tid, 2); // Envia a mensagem ao processo disparado com uma tag=2 if (info2>=0) cout << "Envio de dados -- ok"<< endl; // Est tudo ok? Confirme. // ------------- Recebe mensagem (dados vindos dos escravos) --------------------------------------numt = pvm_recv ( -1, 3 ); /* Recebe mensagem de qualquer processo com tag==3 */ // ------------- Descompacta mensagem (dados recebidos) ------------------------------------------// Todas as funes de compactao e descompactao exigem que o 1o argumento seja um ponteiro pvm_upkdouble(&PI_PARCIAL, 1, 1); // descompacta a varivel com o resultado parcial pvm_upkint(&N, 1, 1); // Descompacta varivel "N"(nmero de pontos nodais) // ---------- Computa resultados e Exibe o nmero de pontos calculados pelo escravo[i] ------cout << endl << "pontos nodais em " << hostp[i].hi_name << " = " << N; PI_FINAL += PI_PARCIAL; // Soma os resultados parciais na varivel PI_FINAL; cout << endl << "resultado_parcial["<< (i+1) <<"] = " << PI_PARCIAL << endl; cout <<"Do escravo: " << hostp[i].hi_name << endl; } cout << endl; // -------- Exibe valor de PI e compara com um valor calculado -------------printf("\aPI vale aproximadamente %.15f\nCom erro absoluto = %.7f\n", PI_FINAL, fabs(PI_FINAL-PI)); pvm_exit(); // Encerra o pvm. return EXIT_SUCCESS; } Figura 10.2 - Programa calcular.cpp.

72 10.3 Programa calcularescravo.cpp O programa destinado aos escravos calcularescravo (Figura 10.3) funciona de maneira similar ao que j foi mostrado at o momento (Figura 9.5). Ele possui, na mesma ordem e de maneira complementar, funes de recebimento e envio de mensagens sincronizadas com o programa mestre. Aps disparado, o processo escravo aguarda o recebimento dos dados, faz a integrao nos limites especificados e guarda o resultado parcial em uma varivel a ser enviada ao processo pai.
/*********************************************************************************** * * MONOGRAFIA DE GRADUAO EM ENGENHARIA DE CONTROLE E AUTOMAO * * UNIVERSIDADE FEDERAL DE OURO PRETO - ESCOLA DE MINAS * * MANUAL DE MONTAGEM DE UM CLUSTER BEOWULF SOB A PLATAFORMA GNU/LINUX * * Programa que calcula o Valor de PI em um ambiente paralelo Cluster Beowulf * *************************************************************************************/ #ifdef HAVE_CONFIG_H #include <config.h> #endif #include <iostream> #include <cstdlib> #include <stdlib.h> #include<pvm3.h> // Arquivo de cabealho com os prottipos de funes da bilioteca pvm #include <cmath> // Biblioteca de funes matemticas ao estilo C++ #include <cstring> // Biblioteca de manipulao de strings ao Estilo C #include <string> // Biblioteca de manipulao de stings ao estilo C++ #define f(x) (1.0/(1.0 + x*x)) // integrando using namespace std; int main(int argc, char *argv[]) { // -------------------------- Inicializao de variveis ---------------------int ptid; // Varivel que guardar a tid do computador mestre int info = 0; double PI_PARCIAL = 0; ptid = pvm_parent(); // Obtem o tid do mestre e guarda em ptid // --------------- Recebe dados vindos do mestre -----------------------------------------------double l2 = 0.0; double l1 = 0.0; // limites de integrao a serem recebidos pelo mestre int N = 0; // Numero de pontos int num, ltotal, nprocs; pvm_recv(ptid,2); // Recebe a mensagem de tag=2 do pvm_upkdouble(&l1, 1, 1); // Descompacta o Limite de integrao L1 pvm_upkdouble(&l2, 1, 1); // Descompacta o Limite de integrao L2 pvm_upkint(&N, 1, 1); // Descompacta inteiro com numero dePontos // ------------------------ Programa Principal --------------------------------------------------------double pi_local = 0.0; double passo = 0.0; for (int k=0; k < N; k++) { pi_local += (double) f((0.5 + k)/(N)); // Calcula a rea } passo = (double) ((l2-l1)/N); // intervalo de integrao proporcional a 1/N pi_local *= (double) ((4.0)*(passo)); // ------------------------Envio dos dados para o mestre ------------------------------------------PI_PARCIAL = pi_local; // guarda resultado a ser enviado ao processo pai pvm_initsend(PvmDataDefault); // prepara-se para envio pvm_pkdouble(&PI_PARCIAL, 1, 1); // compacta resultado parcial pvm_pkint(&N,1, 1); // compacta nmero de pontos nodais feito por ele

73
pvm_send(ptid, 3); /* Envia a mensagem ao processo mestre com uma tag==2 */ // ---------------------------- Fim do processo ------------------------------------------------------pvm_exit(); // encerra o pvm return EXIT_SUCCESS; } Figura 10.3 - Programa calcularescravo.cpp.

O procedimento para a execuo do programa idntico ao mostrado para o programa conversa: compilar o programa mestre e escravos, copiar os executveis-escravo para a biblioteca pvm (figura 10.4), criar a mquina virtual (seo 8.9), localizar o diretrio do programa mestre (Figura 10.5) e finalmente execut-lo digitando ./nome_do_programa (Figura 10.6).

74

Figura 10.5 - Localizando o programa calcular.

Figura 10.6 - Executando o programa calcular.

75 XI ANLISE DE DESEMPENHO 11.1 Medida de desempenho com o benchmark calcular Para melhorar o desempenho de um software executado em um determinado hardware necessrio conhecer quais fatores do hardware em questo afetam o desempenho global do sistema. Alm disso, deve-se determinar a importncia relativa de cada um. Entre os fatores do hardware que tm maior influncia no desempenho podemos citar:

A ao do compilador na gerao do cdigo de mquina; A execuo de instrues (arquitetura do processador); Comportamento dinmico da memria; Comportamento dinmico dos dispositivos de entrada e sada;

Em um software paralelo, fatores como o balanceamento de cargas e os modos de operao do sistema de troca de mensagens (PVM) so os grandes gargalos para o desempenho final do processamento. Cabe ao programador identific-los, assim como reduzir o nmero total de trocas de mensagens. A compreenso de como determinar o impacto no desempenho de cada um destes fatores importante para aumentar a eficincia dos programas projetados. Existem vrias maneiras de se avaliar o desempenho global em sistemas paralelos. Uma delas consiste basicamente em adotar como sistema de melhor desempenho aquele que executa em menor tempo um determinado programa, ou ainda, aquele sistema que executa o maior nmero de programas em um determinado intervalo de tempo. Dessa forma, estamos considerando dois aspectos diferentes na avaliao de desempenho: o tempo de resposta ou tempo de execuo da aplicao e o denominado throughput, que considera a quantidade de trabalho executado na unidade de tempo. Como o processador pode trabalhar em vrios programas simultaneamente, o desempenho melhora quando o throughput aumentado. Dessa forma, muitas vezes interessante distinguir entre o tempo total de execuo de um programa e o tempo gasto pelo processador num programa em particular. A aplicao proposta para o clculo de pode ser til na anlise de desempenho do Cluster Beowulf. Ele se encaixa na categoria dos toy benchmarks, programas de 10 a 100 linhas de cdigo que geram um resultado previamente conhecido.

76 Nesta avaliao utilizou-se como ferramenta de auxlio coleta de dados (de desempenho) um pacote chamado timer: um pequeno software que executa o programa desejado quantas vezes se queira, registra os tempos de execuo e calcula sua mdia ao final do processamento. Sua sintaxe bastante simples: timer [-n nmero] [-avg] <nome_do_programa> Exemplo: timer -n 100 -avg ./calcular Neste caso, o timer executa cem (-n 100) vezes o programa calcular, exibindo ao final a mdia dos tempos obtidos (-avg). Na anlise descrita, o programa calcular foi executado 100 vezes para cada nmero de pontos (de 100 at 1x108 pontos nodais), computando-se a mdia dos tempos obtidos. Foram realizadas duas baterias de experimentos: uma para o programa em srie (um processador) e outra para o programa paralelo, todas com o auxlio do pacote timer (Figura 11.1).

Figura 11.1 - Desempenho do programa paralelo versus programa serial.

Com o aumento do nmero de pontos calculados, chega um momento no qual ocorre uma inverso no desempenho dos dois sistemas: o programa executado no Cluster comea a ser mais rpido que o programa em srie (Figura 11.2).

78

Figura 11.2 - Regio na qual o programa paralelo comea a ser mais rpido.

79 verdade que um tempo final de processamento da ordem de 1 segundo muito pequeno. Tambm verdade que a anlise do processamento paralelo em pouco tempo esconde a real potencialidade do paradigma como um todo. Mas ao observar-se que na maioria das aplicaes existentes o processamento pode levar dias e at semanas de execuo, j possvel ter uma idia da eficincia de um Cluster Beowulf. Em um programa similar ao da Fig. 11.2, caso a exigncia seja tal que obrigue um computador serial a trabalhar durante 2 semanas, o mesmo programa, executado em um Cluster similar ao descrito, executaria o processamento em pouco mais de 9 dias! So quase 5 dias de diferena entre eles. Pode-se observar no entanto que o programa descrito apresenta uma baixa eficincia: cerca de 47,7%. Isto se deve ao fato de no haver trfego de mensagens e processamento paralelo na estrita acepo da palavra: ocorre apenas uma distribuio, por parte do mestre, de tarefas entre os escravos da rede, que as executam de maneira independente. Em um programa paralelo real, ocorre trfego intenso de dados e clculo simultneo, onde muitas das vezes, os diferentes ns da rede necessitam de dados vindos de outros para continuarem o processamento. Observa-se que para fins didticos e de testes, a execuo do programa para clculo de pi cumpre os requisitos de funcionalidade. Alm do mais, possvel estender-se o processamento para at 8 processadores, bastando para isso disparar mais de um processo em cada escravo. Tal ao pode acarretar em um aumento de velocidade final. claro que este aumento de velocidade no ilimitado e tampouco linear: aumentar o nmero de processadores no significa que o tempo de processamento cair na mesma proporo. Chegar o momento em que o tempo gasto na diviso dos trabalhos e troca de mensagens tornar sua execuo invivel. Este nmero diferente em cada aplicao, ou seja, o grau de paralelismo alcanvel depender de caractersticas inerentes ao problema em questo e no objetivo principal deste trabalho determin-lo. 11.2 Preciso e convergncia Um fato interessante na anlise de desempenho concerne convergncia e preciso de clculo. Assim como os tempos de clculo gastos pelos sistemas em srie e em paralelo, a preciso do clculo em comparao uma constante PI predefinida, foi diferente para os dois sistemas em uma faixa de pontos determinadas (Figura 11.3).

Figura 11.3 - Convergncia do erro no clculo de pi

81 Nota-se que o programa paralelo converge mais rapidamente para o valor desejado do que o programa em srie, o que no esperava-se a princpio, j que o cdigo o mesmo. E que com um nmero baixo de pontos nodais, o programa paralelo apresentou um grande erro percentual no clculo do valor de PI. No entanto, medida que as reas de integrao diminuem em tamanho (maior diviso dos espaos), os valores encontrados da constante PI nos dois casos comeam a tender para um mesmo valor (Figura 11.4).

Figura 11.4 - Ampliao da figura 11.3

Um segundo fator constatado, voltado agora aos sistemas de trocas de mensagens como o PVM e MPI, diz respeito limitao dos tipos de dados e variveis suportadas pelo PVM: o tipo de dados utilizado para gravao dos resultados parciais e trnsito ao longo da mquina virtual foi o double (em C++). A verso do compilador C++ utilizada no suporta variveis do tipo long, que possibilitariam alcanar uma maior preciso (mais casas decimais) nos clculos.

83 XII CONSIDERAES FINAIS O projeto de um Cluster Beowulf envolve diversos desafios. Em se tratando da elaborao de um tutorial, o principal cuidado que se teve foi de faz-lo o mais didtico possvel sem tornlo, no entanto, redundante nas informaes apresentadas. A escolha da distribuio GNU/Linux foi um captulo parte e que exigiu grande ateno. Foi uma das etapas que demandou maior tempo na fase preliminar, mas se mostrou, no decorrer dos trabalhos, uma escolha satisfatria; cumprindo os requisitos de desempenho e estabilidade esperados de uma plataforma Linux. A montagem fsica do Cluster Beowulf foi por outro lado tarefa bastante simples, ao contrrio de sua configurao, com a instalao dos pacotes requeridos, a configurao dos servidores de acesso remoto e do prprio PVM. A principal dificuldade enfrentada nesta etapa consistiu em encontrar trabalhos correlatos na literatura, j que trata de um trabalho de natureza tcnica. Aps realizadas as etapas de montagem e configurao, ficou evidente que o conceito chave da programao paralela a diviso de tarefas. Mas qual o limite? Se um operrio constri uma casa em um ano, dois operrios realizaro o mesmo trabalho em seis meses. Ento podese concluir que 365 operrios gastariam apenas 1 dia para concluir o trabalho? Obviamente haver um limite, pois o trabalho dos operrios s seria eficiente se os mesmos estivessem perfeitamente equilibrados e sincronizados. No primeiro caso, todos eles teriam a mesma carga de trabalho, executando 0,27% da construo. Ou ento, havendo certa especializao, alguns cuidariam do cimento, encanamento, outros da parte eltrica etc. Com isso, ao imaginar-se todas as tarefas necessrias para uma construo fica evidente que algumas delas no podem ser paralelizadas, ou seja, seria um absurdo admitir 365 operrios para assentarem uma porta ou em cima do telhado! A construo no suportaria o peso e acabaria por ruir-se. Deve existir portanto um limite para o nmero de operrios (processadores) trabalhando em paralelo, e quanto mais este limite seja ultrapassado, tanto pior ser o desempenho da construo como um todo, podendo torn-la invivel. Tm-se ento dois grandes problemas: o quanto uma tarefa pode ser paralelizada e quantos processadores devem ser alocados. Alm disso, o problema central na programao paralela est em escolher e adaptar procedimentos numricos que sejam eficientes e que se adequem a

este tipo de paradigma computacional, ou seja, sincronizar o trabalho dos processadores para evitar redundncia e garantir um balanceamento de carga eficiente de acordo com a capacidade de cada um. Em resumo, um desafio maior que o projeto de sistemas paralelos como o Cluster Beowulf sua utilizao tima.

85 XIII REFERNCIAS BIBLIOGRFICAS GEIST, A. et al. PVM: Parallel Virtual Machine: a users Guide and Tutorial for Networked Parallel Computing. Cambridge: MIT Press, 1994. Disponvel em <www.netlib.org/pvm3/book/pvm-book.html>. Acesso em: 14 dez. 2007, 13:03. PVM man pages. Commands and Library Calls. Disponvel em <www.csm.ornl.gov/pvm/ manpages.html>. Acesso: 21 de jan. 2008, 19:27. WELSH, M.; KAUFMAN, L. Running Linux. 1. ed. United States of America: O'Reilly & Associates, Inc, 1995. ISBN 1-56592-100-3. WARREN, M. The Avalon Beowulf Cluster: A Dependable Tool for Scientific Simulation. Los Alamos National Laboratory, 2002. Session K6.005 - PC Clusters for Computational Science Theory and Practice. Archives of the Bulletin of the American Physical Society. Disponvel em <flux.aps.org/meetings/YR00/MAR00/abs/S4050.html#SK6.005>. Acesso em: 04 dez. 2007, 22:48. BROWN, R. G. What makes a Cluster Beowulf? Duke University Physics Department, 2006. Disponvel em < www.beowulf.org/overview/howto.html >. Acesso em: 15 Fev. 2008, 11:24. TURNER, D. Scientific Applications on Workstation Clusters vs Supercomputers. Ames Laboratory, 2002. Session K6.004 - PC Clusters for Computational Science Theory and Practice. Archives of the Bulletin of the American Physical Society. Disponvel em <flux.aps.org/meetings/YR00/MAR00/abs/S4050.html#SK6.004 >. Acesso em: 04 dez. 2007, 22:55. BUENO, A.D. Introduo ao Processamento Paralelo e ao Uso de Clusters de Workstations em Sistemas GNU/LINUX. UFSC, 2002. disponvel em: <www.rautu.unicamp.br/nou-rau/softwarelivre/document/stats.php>. Acesso em: 27 Jan. 2008, 16:03. CRUZ, A. O; SILVA, G. P. Programao Paralela e Distribuda: Um curso Prtico. Rio de Janeiro : UFRJ. progpar.pdf. Disponvel em < equipe.nce.ufrj.br/gabriel/progpar/>. Acesso: 07 Jan. 2008, 13:21. DEITEL, H. M.; DEITEL, P. J. C++: como programar. 3. ed. Porto Alegre: Bookman, 2001. ISBN 85-7307-740-9. SILVA, J. E. da. Histria do GNU/Linux: 1965 assim tudo comeou! Frum da comunidade Viva o Linux, 2006. Disponvel em <www.vivaolinux.com.br/artigos/verArtigo.php?codigo= 4409 >. Acesso em 13 Fev. 2008, 15:01. ALECRIM, E. A histria do Tux, o pingim-smbolo do Linux. Infowester: Revista Eletrnica, 2004. Disponvel em <http://www.infowester.com/tux.php>. Acesso em: 13 Fev. 2008, 15:06.

86 MORIMOTO, C. E. Brincando de Cluster. Artigo do frum guia do Hardware, 2003. Disponvel em < www.guiadohardware.net/artigos/cluster/>. Acesso: 12 Fev. 2008, 14:13. TILIO, G. Cluster de videogames PlayStation3 da Unicamp. Rio de Janeiro : Portal G1, 2008. Disponvel em <g1.globo.com/noticias/ciencia/>. Acesso: 20 Fev. 2008, 10:00.

ANEXOS

88 ANEXO A - DESCRIO DAS FUNES DA BIBLIOTECA PVM A.1 Classificao Nesta seo mostrada uma breve listagem das subrotinas, comandos e funes da biblioteca PVM, contidas em libpvm3.a (C/C++) e libfpvm3.a (Fortran) (GEIST et al., 1994). A descrio completa de todas as funes da biblioteca PVM, com sintaxe e exemplos de aplicao pode ser encontrada nas PVM Man pages, site oficial da netlib, de domnio pblico (PVM..., 2008). As subrotinas podem ser divididas em 5 classes: Troca de mensagens: pvm_bufinfo, pvm_freebuf, pvm_getrbuf, pvm_getsbuf, pvm_initsend, pvm_mcast, pvm_mkbuf, pvm_nrecv, pvm_pack, pvm_precv, pvm_probe, pvm_psend, pvm_recv, pvm_recvf, pvm_send, pvm_sendsig, pvm_setmwid, pvm_setrbuf, pvm_setsbuf, pvm_trecv, pvm_unpack. Controle de processos: pvm_exit, pvm_kill, pvm_mytid, pvm_parent, pvm_pstat, pvm_spawn, pvm_tasks; Mensagens de grupos: pvm_barrier, pvm_bcast, pvm_gather, pvm_getinst, pvm_gettid, pvm_gsize, pvm_joingroup, pvm_lvgroup, pvm_reduce, pvm_scatter; Controle da mquina virtual: pvm_addhosts, pvm_config, pvm_delhosts, pvm_halt, pvm_mstat, pvm_reg_hoster, pvm_reg_rm, pvm_reg_tasker, pvm_start_pvmd; Miscelnea: pvm_archcode, pvm_catchout, pvm_getopt, pvm_hostsync, pvm_notify,

pvm_perror, pvm_setopt, pvm_settmask, pvm_tidtohos;

89 ANEXO B - COMANDOS DO CONSOLE PVM B.1 Listagem dos comandos Nesta seo so descritos os comandos do console PVM, representado pelo sinal de prontido pvm> aps o daemon pvm entrar em execuo. a partir do console que se gerencia toda a criao e funcionamento da mquina virtual. pvm help delete add reset quit halt conf ps -a alias echo id jobs kill mstat pstat setenv sig trace Inicia o daemon pvmd, criando a mquina virtual(comando do console Linux). Apresenta uma lista semelhante a esta. O comando help pode ser seguido de um nome de comando, quando ento lista as opes disponveis para este comando Remover ns da mquina virtual seguido do um ou mais nomes de hosts, adiciona estes hosts mquina virtual(cria um n). Matar todos os processos da MV exceto a(s) consoles Sair da console deixando o pvmd executando(necessrio para executar uma aplicao) Mata todos os processos PVM, encerrando a console e desmontando a mquina virtual. Todos os daemons encerram sua execuo. lista a configurao da mquina virtual com todos os ns, incluindo o hostname, pvmd, task id, tipo de arquitetura e um ndice de velocidade relativa. Listar todos os processos executando na Mquina Virtual Define ou lista os apelidos (alias) dos comandos. Ecoa os argumentos. Imprime o task id da console. Imprime os jobs em execuo . Pode ser utilizado para terminar qualquer processo PVM. Mostra o status dos hosts especificados. Mostra o status de um nico processo PVM. Mostra ou seta variveis de ambiente. Seguido por um nmero e um TID, envia o sinal identificado pelo nmero para a tarefa TID. Seta ou mostra a mscara de trace de eventos.

unalias

Desfaz o comando alias.

90 Inicia uma aplicao PVM(dispara um arquivo). Com as opes: spawn [-count] nmero de tarefas; padro 1. [-host] dispare no host; o padro qualquer. [-ARCH] dispare nos hosts com arquitetura do tipo ARCH. [-?] habilita depurao. [->] redireciona sada padro para console. [-> file] redireciona sada padro para arquivo. [->> file] redireciona sada padro para anexar ao arquivo. [-@] trace job, mostra sada na console. [-@ file] trace job, sada para arquivo
Figura B.1 - Comandos do console pvm.

Você também pode gostar