AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

77
UNIVERSIDADE FEDERAL DO TOCANTINS CAMPUS UNIVERSITÁRIO DE PALMAS CIÊNCIA DA COMPUTAÇÃO AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB® RENÊ DETTENBORN PALMAS JUNHO 2008

Transcript of AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

Page 1: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

UNIVERSIDADE FEDERAL DO TOCANTINS

CAMPUS UNIVERSITÁRIO DE PALMAS

CIÊNCIA DA COMPUTAÇÃO

AMBIENTE EXPRESSO PARA

PROCESSAMENTO DISTRIBUÍDO COM MATLAB®

RENÊ DETTENBORN

PALMAS

JUNHO 2008

Page 2: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

Dados Internacionais de Catalogação na Publicação (CIP)Biblioteca da Universidade Federal do Tocantins

Campus Universitário de Palmas

D483a Dettenborn, Renê Ambiente Expresso para Processamento Distribuído com MATLAB® /

Renê Dettenborn. - Palmas, 2008. 78 f.

Monografia (TCC) – Universidade Federal do Tocantins, Curso de Ciência da Computação, 2008. Orientador: George L. R. de Brito

1. Processamento Distribuído. 2. Matlab 3. Cluster. I. Título.

CDD 004

Bibliotecário: Paulo Roberto Moreira de AlmeidaCRB-2 / 1118

TODOS OS DIREITOS RESERVADOS – A reprodução total ou parcial, de qualquer forma ou por qualquer

meio deste documento é autorizado desde que citada a fonte. A violação dos direitos do autor (Lei nº

9.610/98) é crime estabelecido pelo artigo 184 do Código Penal.

Page 3: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

RENÊ DETTENBORN

AMBIENTE EXPRESSO PARA

PROCESSAMENTO DISTRIBUÍDO COM MATLAB®

Monografia apresentada à disciplina Projeto de Graduação, como requisito parcial à obtenção de título de bacharel em Ciência da Computação, na Universidade Federal do Tocantins.

Orientador: Prof. George L. R. de BritoCo-orientador: Gentil Veloso Barbosa

PALMAS

JUNHO 2008

Page 4: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

TERMO DE APROVAÇÃO

RENÊ DETTENBORN

PROJETO DE GRADUAÇÃO

Trabalho Final de Graduação aprovado como requisito parcial para obtenção do grau de bacharel em Ciências da Computação da Universidade Federal do

Tocantins, pela seguinte banca examinadora:

___________________________________________George Lauro Ribeiro de Brito

Orientador

___________________________________________Warley Gramacho da Silva

Convidado Interno

___________________________________________

Patrick Letouzé Moreira

Convidado Externo

Page 5: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

D e d i c o , e s t e t r a b a l h o

a D e u s q u e s e m p r e m e i l u m i n o u ,

a M i n h a Q u e r i d a E s p o s a ,

a o s m e u s P a i s e f a m i l i a r e s

e t a m b é m a a q u e l e s q u e

c o n t r i b u í r a m p a r a a r e a l i z a ç ã o

V

Page 6: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

AGRADECIMENTOS

Ao

Mestre George Brito

pela imensa atenção e dedicação ao nosso trabalho, e o

encorajamento nos momentos difíceis.

Gentil Veloso Barbosa, pela ajuda inestimável, pelos esclarecimentos

sobre o referencial teórico.

Warley Gramacho da Silva, pela preciosa consultoria nos aspectos

técnicos.

Professor Patrick Letouzé Moreira, pelas valiosas sugestões.

VI

Page 7: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

“O futuro dependerá daquilo que fazemos no presente.”

Mahatma Gandhi

VII

Page 8: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

SUMÁRIO

LISTA DE TABELAS...............................................................................................xiiRESUMO................................................................................................................xiiiABSTRACT.............................................................................................................xiv1 INTRODUÇÃO.......................................................................................................12 OBJETIVOS...........................................................................................................3

2.1. Objetivo Geral.........................................................................................32.2. Objetivo específico .................................................................................32.3. Organização do Trabalho.......................................................................3

3 O ESTADO DA ARTE EM SISTEMAS DISTRIBUIDOS.......................................43.1. Aspectos de Projetos em Sistemas Distribuídos....................................43.2. Sistemas Distribuídos.............................................................................73.3. Formas de Paralelismo...........................................................................93.4. Computação Distribuída.........................................................................93.5. Programação Distribuída........................................................................9

3.5.1 LAM/MPI...................................................................................103.6. CLUSTER.............................................................................................11

3.6.1 Desvantagens dos Clusters.....................................................143.6.2 Cluster Beowulf........................................................................143.6.3 Hardware do Cluster................................................................14

4 MATERIAIS E MÉTODOS...................................................................................164.1. MATLAB® ............................................................................................164.2. BCCD....................................................................................................17

4.2.1 Obter distribuição BCCD.........................................................185 DESENVOLVIMENTO DO TRABALHO..............................................................19

5.1. Distribuição GNU/Linux.........................................................................195.1.1 Servidor Principal.....................................................................205.1.2 Nós Secundários......................................................................21

5.2. MatlabMPI.............................................................................................215.3. Algoritmo para processamento paralelo...............................................225.4. Testes de Benchmark...........................................................................24

6 AMBIENTE PARA TESTES.................................................................................256.1. Ambiente de Processamento Distribuído.............................................256.2.Configuração do Cluster........................................................................26

7 RESULTADOS E DISCUSSOES......................................................................307.1.Resultados adquiridos...........................................................................30

8 CONCLUSÃO E TRABALHOS FUTUROS........................................................378.1. Conclusão.............................................................................................378.2. Trabalhos Futuros.................................................................................38

REFERÊNCIAS BIBLIOGRÁFICAS.......................................................................40APÊNDICE A..........................................................................................................43ANEXOS.................................................................................................................60

VIII

Page 9: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

LISTA DE FIGURAS

Figura 1: Segmentos que utilizam Cluster (TOP500 Setembro de 2007)..................11

Figura 2: Áreas onde Cluster é aplicado (TOP500 Setembro de 2007)....................12

Figura 3: Diagrama PCAM..........................................................................................24

Figura 4: Estrutura em camadas do Cluster desenvolvido.........................................26

Figura 5: passos da implementação utilizando a Técnica Desenvolvimento e Análise

Estruturada - SADT.....................................................................................................27

Figura 6: Cluster pronto para testes no Labin 09 - UFT.............................................28

Figura 7: Terminal de linha de comando....................................................................30

Figura 8: Testes com script blurimage.m, tempo de acesso menor ao NFS, fonte

Tabela 3.......................................................................................................................31

Figura 9: Testes com script blurimage.m, tempo de acesso padrão ao NFS, fonte

Tabela 4.......................................................................................................................33

Figura 10: Ocorrência de estouro de memória por excessos de processos

concorrentes, referente ao teste 34 da Tabela 3........................................................34

Figura 11: Testes com script blurimage.m, execução local, fonte Tabela 5..............36

Figura 12: Relação Tempo x Número de Processos, referencia Tabelas 5, 6 e 7....37

Figura 13: Relação GigaFlops x Número de Processos, referencia Tabelas 5, 6 e 7...

37

Figura 14: Tela inicial BCCD.......................................................................................45

Figura 15: Inserir senha padrão para usuário bccd....................................................47

Figura 16: Configuração da placa de rede.................................................................47

Figura 17: Aviso: é necessário que o computador tenha pelo menos uma interface

de rede........................................................................................................................48

Figura 18: Drivers disponíveis para a interface de rede.............................................48

Figura 19: Interface de rede configurada corretamente.............................................49

Figura 20: Mensagem padrão, aviso que interface de rede eth0 será configurada...49

Figura 21: Configurar automaticamente via servidor DHCP?....................................49

Figura 22: Confirmar a configuração manual do IP....................................................50

Figura 23: Aviso sobre a obrigatoriedade do uso de pontos no endereçamento do IP.

IX

Page 10: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

50

Figura 24: Inserção do IP desejado, valor padrão 192.168.1.1.................................50

Figura 25: Inserção da mascara com a qual se deseja trabalhar..............................51

Figura 26: Definição do Gateway................................................................................51

Figura 27: IP do servidor DNS....................................................................................51

Figura 28: Rota padrão definida.................................................................................52

Figura 29: O nome da maquina no domínio foi definido para host1, e o

arquivo /etc/host foi atualizado....................................................................................52

Figura 30: Responder Yes libera acesso via ssh neste host......................................52

Figura 31: Após tudo configurado corretamente, tem-se a seguinte tela de login.....53

Figura 32: Conteúdo do arquivo dhcpd.conf...............................................................54

Figura 33: Validar configurações................................................................................55

Figura 34: Resposta do comando ldconfig -v | less....................................................56

Figura 35: Inicialização nó secundário........................................................................57

Figura 36: O nó secundário agora faz parte do domínio, e seu nome foi definido para

host101........................................................................................................................57

Figura 37: Mensagem após executar o comando bccd-allowall.................................58

Figura 38: Resposta do comando recon -v ~/machines.............................................59

X

Page 11: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

LISTA DE TABELAS

Tabela 1: Pacote de Programas do BCCD................................................................18

Tabela 2: Hardware do Cluster..................................................................................29

Tabela 3: Primeiro teste com tempo de aceso menor ao NFS.................................32

Tabela 4: Segundo teste com tempo de aceso padrão ao NFS...............................35

Tabela 5: Terceiro teste, poucos testes gerados pelo estouro de memória.............36

XI

Page 12: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

RESUMO

Construir um Cluster com poucos recursos e nenhum maquinário dedicado é

um desafio para muitos pesquisadores. E ainda quando se tem a necessidade de

agregar a ferramenta MATLAB® a este ambiente distribuído. Neste trabalho foi

proposto a construção de um ambiente de processamento distribuído, sem precisar

destruir o conteúdo original de cada computador com isso torna-se possível

aproveitar laboratórios de informática que não estejam em uso. Pensando de uma

maneira expressa, para que este ambiente seja construído em poucas horas, optou-

se por um sistema operacional em Live CD com características pré-configuradas ao

desenvolvimento de um ambiente de processamento distribuído. Verifica-se ainda

que a instância de todos os nós com o nó principal durou aproximadamente 1 hora e

15 minutos. Para esta resolução são necessários conhecimentos em GNU/Linux,

MATLAB® e no paradigma da biblioteca MPI.

Palavras chave: Processamento Distribuído, Matlab, Cluster

XII

Page 13: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

ABSTRACT

Building a Cluster with few resources and no dedicated machinery is a

challenge for many researchers. And yet when you have the need to add the tool

MATLAB® in this distributed environment. This paper has proposed the construction

of an environment of distributed processing, without destroying the original content of

each computer with it becomes possible to take advantage of computer laboratories

which are not in use. Thinking of an express way, so that this environment is built in

a few hours, has been chosen an operating system on Live CD features pre-

configured with the development of an environment of distributed processing. There

is also the instance of all us with the main node lasted about 1 hour and 15 minutes.

To this resolution are necessary expertise in Linux, MATLAB® and the paradigm of

MPI library.

Key words: Distributed Processing, Matlab, Cluster

XIII

Page 14: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

1 INTRODUÇÃO

O empenho empregado no desenvolvimento de algoritmos e soluções que

minimizem o esforço computacional despende muito tempo e dedicação, a solução

proposta neste trabalho verifica possibilidade de agregar componentes que estão

disponíveis no meio acadêmico para construir um sistema que tenha suporte a

processamento distribuído, voltado para pesquisadores que não tenham um Cluster

de uso exclusivo e que utilizem a ferramenta MATLAB®.

Sistema verdadeiramente distribuído é definido por Tanenbaum como uma

coleção de computadores independentes que aparecem para os usuários do

sistema como um único computador (TANENBAUM, 2006). Esta definição e outros

temas relacionados são abordados, visando uma base teórica que de suporte ao

desenvolvimento deste trabalho acadêmico.

A importância deste sistema é verificada quando observamos que uma das

ferramentas utilizadas é o MATLAB®, software de analise numérica para aplicação

em inúmeras áreas do conhecimento relacionadas ao desenvolvimento

computacional.

No desenvolvimento do projeto de sistemas distribuídos, o emprego de

técnicas de Aspectos de Projetos em Sistemas Distribuídos, é de fundamental

importância, pois atende os pontos essenciais na construção de sistemas

distribuídos. A relação dos aspectos de projetos de sistemas inclui transparência,

flexibilidade, confiabilidade, performance e escalabilidade.

A documentação inclui algumas definições, como computação distribuída e

programação distribuída que são úteis para os programadores que pretendem

desenvolver programas para sistemas distribuídos.

Este trabalho inclui também estatísticas relacionadas com uso de Cluster no

mundo, que esclarecem a utilidade e mostra as áreas que estão sendo mais

empregados.

Elucida-se ainda que no desenvolver deste trabalho, o sistema implementado

XIV

Page 15: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

funcionará apenas com algoritmos de processamento paralelo, na implementação

deste projeto encontram-se rotinas para verificação de algoritmos de processamento

distribuído, como a técnica PCAM, documentada por Ian Foster (FOSTER, 1995).

E por finalidade, este projeto visa demonstrar a utilização de Sistemas

Distribuídos para resolver problemas que exigem um grande tempo computacional,

observa-se a exigência: de um baixo custo computacional para a sua

implementação.

O objetivo maior é verificado quando o redirecionamento do esforço para

obtenção da resolução do problema, é investido no emprego da resolução dos

problemas matemáticos levantados pelo pesquisador, que pretende utilizar esta

solução.

XV

Page 16: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

2 OBJETIVOS

2.1. Objetivo Geral

Fornecer uma solução com processamento paralelo em um ambiente

expresso, ou seja, em um ambiente que possa ser montado rapidamente para

processamento distribuído de programas criados na ferramenta de programação

MATLAB®. Utilizar-se de uma rede de computadores em um período que não esteja

em uso, sem precisar destruir o conteúdo armazenado em cada computador desta

rede para construir um Cluster.

2.2. Objetivo específico

● Verificar distribuição GNU/Linux que tenha suporte nativo a clusterização;

● Demonstrar como criar e configurar um Cluster;

● Configurar um ambiente Cluster para suportar ferramenta MATLAB®;

● Analisar algoritmo para processamento paralelo de informações;

● Testar implementação, e verificar resultado;

2.3. Organização do Trabalho

No Capítulo 2 são apresentados os fundamentos da definição de sistemas

distribuídos e a revisão teórica e conceitos necessários para realizar este trabalho.

No Capítulo 3 estão reunidos as ferramentas utilizadas. No Capítulo 4 esta

apresentado o desenvolvimento que reúne e coloca na prática os conceitos

adquiridos para desenvolver o trabalho proposto. No Capítulo 5 o ambiente de

testes é descrito para elucidar como o trabalho foi realizado. No Capítulo 6 são

apresentados os testes realizados juntamente com seus relatórios para analise.

Finalmente no Capítulo 7 serão dadas as conclusões e considerações feitas a partir

do trabalho.

XVI

Page 17: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

3 O ESTADO DA ARTE EM SISTEMAS DISTRIBUIDOS

Universidades e centros de pesquisa estão sempre preocupados em

desenvolver sistemas distribuídos que minimizem custos financeiros e tenham baixa

complexidade de manutenção. A partir deste foco resolve-se integrar projetos de

Cluster em live CD e processamento paralelo com MATLAB®. Para estabelecer a

resolução deste problema é preciso basear-se na definição de sistemas distribuídos:

Sistemas de Computação compostos por um grande número de

processadores ligados através de uma rede de alta velocidade. Onde Tanenbaum

também define sistema distribuído da seguinte forma:

“Um sistema distribuído é uma coleção de computadores independentes que

aparecem para os usuários do sistema como um único computador (TANENBAUM,

2006).”

A implementação de sistemas distribuídos conta com um grande leque de

possibilidades, um bom exemplo é a utilização do console Playstation 3, pois

suporta comunicação em rede, dotado pelo processador Cell1 e ainda tem um baixo

custo em relação a alternativas comerciais existentes, conforme sitio PS3GRID

(PS3GRID, 2007).

A criação de um ambiente distribuído trata-se de uma tarefa desgastante,

pois exige muito conhecimento técnico para instalar sistemas operacionais

específicos, configuração de bibliotecas especificas, configurações de segurança e

manutenção de compartilhamento de arquivos necessários.

Esta arquitetura pode ser composta por milhares de nós interligados em

barramentos de alta velocidade, onde cada nó tem um ou mais processadores com

memória local.

3.1. Aspectos de Projetos em Sistemas Distribuídos

1 Processador desenvolvido com tecnologia IBM PowerPC 3.2GHz e 8 unidades processantes Synergistic Processing, atinge desempenho de 218 GFLOPS.

17

Page 18: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

● Transparência - trás uma idéia do poder ver o que acontece internamente,

mas em sistemas distribuídos este termo estabelece um paradoxo. Onde a

definição está implicada no significado de transparência, no qual faz com que

se possa ver o outro lado através de uma superfície rígida, sem realmente

visualize a parte interna.

Uma forma de demonstrar este aspecto, obtem-se a partir de sistemas

distribuídos que são formados por inúmeros computadores, mas para o

usuário final este conjunto representa um único processador com elevado

poder computacional.

A transparência é classificada em diversos tipos para sistemas distribuídos:

Transparência de localização - os usuários utilizam-se dos recursos de um

sistema distribuído, mas realmente não sabem onde eles se encontram

fisicamente.

Transparência de migração - um sistema distribuído pode alterar o local onde

estão armazenados os recursos sem precisar alterar as características deste.

Desta forma o sistema distribuído pode estar otimizando a busca pelo

conteúdo.

Transparência de replicação - os objetos distribuídos podem ter milhares de

cópias, sem que o usuário saiba. Visando a redundância de recursos, para

que estejam sempre disponíveis aos usuários do sistema.

Transparência de concorrência - vários usuários acessam e atualizam um

recurso sem que um perceba a presença de outro. Isto pode ser

implementado pelas primitivas bloqueado e desbloqueado, onde um recurso

fica bloqueado para os demais enquanto apenas um usuário desbloqueado

atualiza.

Transparência de paralelismo - um dos princípios para sistemas distribuídos

esta no processo de tarefas em paralelo, pois para o usuário comum o

sistema processa seqüencialmente, mas realiza inúmeros processos em

paralelo sem que o usuário fique sabendo.

18

Page 19: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

● Flexibilidade – o termo esta acoplado com a preocupação de que idéias que

perdurarão podem na realidade estar com os dias contados.

Tanenbaum em seu livro Sistemas Operacionais Modernos exemplifica o

estudo de caso para sistemas distribuídos, onde prevê a substituição do

kernel monolitíco, que reina absolutamente, pelo micro kernel (TANENBAUM,

1992).

Esta previsão é associada a visão do conceito de flexível, pois um projeto de

sistemas distribuídos deve ser flexível com a capacidade de suportar

alterações que não foram previstas.

● Confiabilidade – é um item complexo para ser administrado, pois associa

características como disponibilidade, segurança, integridade dos dados e

tolerância a falhas.

A característica disponibilidade pode ser assegurada com a redundância, mas

prejudica o desempenho da integridade dos dados, que precisam ficar

sempre atualizados em cada replicação. A segurança também auxilia na

redução de desempenho, para que haja um controle eficiente é preciso

verificar a integridade em cada acesso. Quando ocorrer uma falha que faça

um dos servidores parar por um período curto de tempo, este precisa, ao

retornar, restabelecer a redundância e integridade dos dados. Estes são os

requisitos mínimos para obter-se confiabilidade em sistemas distribuídos.

● Performance – Um sistema distribuído além de ser transparente, flexível e

confiável precisa ter uma performance melhor do que executasse em um

único processador. Existem formas de calcular a performance de um sistema

distribuído pelo throughput2.

Um throughput para calcular a soma de 2 números em um processador é alto

em relação a execução do mesmo calculo em um sistema distribuído, pois a

comunicação entre os processadores toma um tempo significante. A partir

desta idéia que surge o termo granularidade, este especifica o tamanho do

2 É a quantidade de dados transferidos de um lugar a outro, ou a quantidade de dados processados em um determinado espaço de tempo

19

Page 20: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

processo que será executado no processador remoto.

Do termo granularidade surgem duas derivações:

Granularidade Fina, onde os milhares de processos distribuídos são

pequenos, consumindo pouco tempo de processamento, e muitas vezes cria

sobrecarga na rede.

Granularidade Grossa, os processos distribuídos tomam mais tempo de

processamento em cada processador remoto.

A questão de troca de mensagens entre os processadores, pode inviabilizar

um projeto de sistemas distribuídos, pois a sobrecarga de mensagens na

rede gera um atraso no processamento, mesmo em projetos que utilizem

granularidade grossa a troca de mensagens entre os processos pode ser

elevada.

● Escalabilidade – de modo bem sucinto este aspecto se refere a capacidade

que um sistema tem de crescer com o acréscimo de novas unidades, mas em

sistemas distribuídos o crescimento pela simples agregação é uma má

estratégia, visto que, para o crescimento em escala seja viável deve existir

uma descentralização de dados e algoritmos. Caso os dados ou algoritmos

estejam centralizados em um determinado nó do sistema este pode ser

sobrecarregado de requisições.

3.2. Sistemas Distribuídos

O surgimento deu-se a partir da criação das redes de computadores,

sistemas abertos e arquiteturas multiprocessador. Para Tanenbaum, 2006 um

sistema distribuído comparado com um sistema centralizado, como mainframes,

tem-se as seguintes vantagens:

● Economia - microprocessadores tem melhor custo beneficio por

preço/desempenho. Processadores ligeiramente mais rápidos podem custar

20

Page 21: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

mais que o dobro do preço que processadores padrão de mercado. O valor

de um processador que fosse desenvolvido para equivaler a milhares de

processadores de baixo custo, tem um custo inviável no que tange os valores

de um projeto de hardware de um processador.

● Velocidade - Um sistema distribuído pode ter mais poder computacional que

um sistema centralizado.

● Confiabilidade – Se uma máquina para de funcionar, o sistema permanece

intacto. Mais sobre este item em Aspectos de Projeto de Sistemas

Distribuídos.

● Crescimento Incremental – Sistemas distribuídos podem crescer

indefinidamente, juntamente com o seu poder computacional.

Existem formas de implementar um ambiente distribuído, uma destas está

baseada na taxonomia Múltiplas Instruções e Múltiplos Dados - MIMD, classificada

por Flynn, que estabelece a padronização para hardware de sistemas distribuídos

existentes de processamento e dados. Desta são derivados dois modelos de

arquiteturas computacionais (FLYNN, 1972).

● Multiprocessadores - Trata-se de um conjunto de processadores que

compartilham a mesma memória. Para esta arquitetura tem-se o termo

fortemente acoplado, pois o conjunto processador e memória estão em um

barramento em comum.

Multiprocessadores têm memória compartilhada entre processadores, quando

um processador A escreve um o valor X no endereçamento de memória Y, o

processador B lê o endereçamento de memória Y e encontra o valor X.

● Multicomputadores - Impõe um ambiente computacional formado por

inúmeros processadores, onde cada um tem sua própria memória local. E o

compartilhamento da memória entre os processadores é feita pela troca de

mensagens entre eles.

Este modelo recorda a arquitetura de Cluster, onde tem-se vários nodos ou

processadores interligados em rede de alta velocidade e compartilhamento de

21

Page 22: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

memória por troca de mensagem. Cada processador tem a sua própria memória, ou

seja, para que um processador tenha acesso ao conteúdo da memória de outro

processador é preciso que: o processador A solicite via troca de mensagem o valor

de uma variável do processador B, e que este envie como resposta o valor.

3.3. Formas de Paralelismo

Lógico - Vários processos executados na forma seqüencial em um elemento

processante, onde os mesmos são divididos em partes muito pequenas e assim

toma-se um tempo de processamento pequeno e imperceptível, deste modo da-se

uma falsa impressão de paralelismo.

Físico - Apresenta inicialmente vários elementos processantes que podem

executar um processamento fragmentado em várias partes, que serão processadas

ao mesmo tempo.

3.4. Computação Distribuída

É inclusa em sistemas distribuídos, e tornou-se possível graças a

comunicação em rede, assim facilita-se o compartilhamento de informações e a

chamada remota de procedimentos.

Na computação distribuída não exige-se que todos os processos executem

realmente em paralelo, mas que cada elemento processante execute uma tarefa

independente como parte de um todo (ATTIYA, 2004).

3.5. Programação Distribuída

O Modelo de Passagem de Mensagem é provavelmente a mais usada

atualmente na programação distribuída, pois é possível criar múltiplas tarefas, com

compartilhamento de dados entre os processos. Cada tarefa é identificada por um

nome único, e as tarefas interagem com envio e recepção de mensagens conforme

o algoritmo (FOSTER, 1995).

22

Page 23: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

3.5.1 LAM/MPI

A biblioteca LAM/MPI trata-se de uma implementação de alta qualidade da

padronização MPI3. MPI (Message Passing Interface) trata-se de uma padronização

para uma interface de troca de mensagem (MESSAGE PASSING INTERFACE

FORUM, 2007).

LAM/MPI proporciona alto desempenho em uma variedade de plataformas, e

possível utilizar a partir de pequenas plataformas com único CPU para grandes

Clusters compostos de computadores SMP4 com redes de alta velocidade, mesmo

em ambientes heterogêneos. Além de alto desempenho, LAM/MPI fornece um

número de características fundamentais para o desenvolvimento em larga escala de

aplicações (TRUSTEES OF INDIANA UNIVERSITY, 2007).

● Criação e gestão de processos

● Interação com C++

● Suporte a Threads

Uma maneira de conhecer a biblioteca LAM/MPI é pela verificação de um

código fonte com suas funções MPI básicas, vide Anexo 1.

Por padrão todas funções MPI inicializam-se pela nomenclatura “MPI_”. No

código fonte tem-se a função MPI_Init que indica o inicio do escopo da utilização da

biblioteca LAM/MPI e MPI_Finalize para indicar o fim. MPI_Comm_rank define o

identificador de cada unidade de processamento, e MPI_Get_processor_name

recupera o nome da estação de processamento.

Para dar suporte a compilação deste código é necessário a instalação da

biblioteca LAM/MPI e o compilador GCC.

mpicc -o mpiteste mpiteste.c

A execução do binário “mpiteste”, pode ser feito após o compartilhamento via

3 MPI, Message Passing Interface – Interface de Passagem de Mensagem.4 Multi Processadores Simétricos, tecnologia que permite usar dois ou mais processadores na

mesma placa mãe, onde os mesmos compartilham recursos como memória e outros periféricos.

23

Page 24: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

NFS5 do mesmo, e utilizar um canal seguro (SSH) para executar em todas unidades

de processamento pelo comando:

mpirun -np 5 mpiteste

3.6. CLUSTER

É conhecido como um sistema distribuído que envolve um conjunto de

unidades computacionais interligadas em rede, onde formam uma unidade de

processamento.

Os maiores computadores do mundo baseiam no modelo de Cluster segundo

o sitio TOP500, os seguimentos que utilizam Cluster na Figura 1 (TOP500, 2007).

A indústria é o ramo que mais utiliza Cluster devido as necessidades de

automação de processos de produção, pelo uso da robótica.

A lista dos TOP500 também fornece em quais áreas são empregados a

utilização de Cluster, conforme Figura 2.

5 Network File System.

24

Figura 1: Segmentos que utilizam Cluster (TOP500 Setembro de 2007)

57%

17%3% 2%

20%

IndustriaAcadêmicoGov ernoOutrosPesquisa

Page 25: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

“Uma das maiores empresas do mundo, o Google tem um Cluster que não

para de crescer” (SLOAN, 2004).

Uma nomenclatura atualmente usada é a sigla HPC6, que traduzido significa

Computação de Alto Desempenho, considerado um sinônimo para Cluster (SLOAN,

2004).

Aglomerado de computadores utilizados para criar um sistema

computacional de alto desempenho, também é uma das definições para Cluster.

O Cluster é utilizado em atividades como: previsão do tempo,

processamento de imagens, desenho industrial, estrutura molecular e modelos

astronômicos. Além de atividades científicas, também encontra-se seu uso em

servidores web para balanceamento de carga, massa crítica e alta disponibilidade.

Cluster foi desenvolvido para resolver problemas complexos que exigem

horas de processamento e que possam ser divididos em módulos de processos

menores. Mas para um problema simples, pode ser resolvido com a aquisição de

um computador com poder de processamento muito elevado.

6 High Performance Computing, computadores que atinges alta performance, capacidades de processamento em unidades de TeraFLOPS

25

Figura 2: Áreas onde Cluster é aplicado (TOP500 Setembro de 2007)

Aer

ospa

cial

Aut

omot

ivo

Ben

chm

arki

ng

Bio

log

ia

CF

D

Con

stru

ção

Ban

co d

e D

ados

Def

ensa

Eco

nom

ia

Ene

rgia

Am

bien

te

Fin

ança

s

Geo

físi

ca

Har

dwar

e

Ser

viço

de

Info

rmaç

ão

Ser

viço

de

Pro

cess

amen

to In

form

açõe

s

Man

ufat

ura

Med

icin

a

Míd

ia

Far

mác

ia

Pes

qui

sa

Ser

viço

s

Sof

twar

e

Tel

ecom

m

Tra

nspo

rte

Pes

qui

sa T

empo

e C

lima

WW

W

Sem

icon

duto

res

Míd

ia D

igita

l

Não

Esp

ecifi

cado

Jog

os

Var

ejo

0

50

100

150

200

250

Page 26: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

● Os Cluster podem ser divididos em:

Homogêneo - Ambiente formado por unidades de processamento com

características similares, mesmo hardware e sistema operacional em todos os nós,

utilizado por quem busca alto desempenho. Utilizar computadores com mesmas

configurações físicas garante que o Cluster obterá desempenho computacional

satisfatório, pois dispensa o balanceamento de carga de processamento para

equipamentos com maior poder computacional.

Heterogêneo - As unidades de processamento que compõe este Cluster tem

suas características variadas, hardware e sistemas operacionais diferentes entre as

unidades, empregado pela necessidade de utilizar um parque de computadores em

disposição, como em laboratórios de informática.

● Classificação de Cluster:

Cluster de Alto Desempenho - Suporta um grande número de processos

simultâneos. Aplicado na resolução de modelos matemáticos complexos que geram

milhares de cálculos.

Cluster de Alta Disponibilidade (HA – High Avaibility) - Cluster que consegue

manter seu funcionamento por longo período de tempo, e que tem capacidade de se

recuperar em uma situação critica. Utilizado em sistemas comerciais, onde uma

pequena falha pode causar prejuízos elevados. A redundância é a chave para o

funcionamento deste modelo de Cluster, pois se uma unidade parar, outra pode

tomar o lugar e manter o sistema funcional.

Cluster para Balanceamento de Carga (Load Balancing) - tem a habilidade

de controlar a distribuição dos processos de forma equilibrada, exige redundância

na comunicação entre os nodos e freqüente monitoramento. Este procedimento

pode ser complexo, pois se o algoritmo de balanceamento de carga realizar uma má

distribuição então todo o sistema pode ficar comprometido. Quando executado

corretamente trás o beneficio do aproveitamento de todos os recursos de

processamento.

26

Page 27: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

3.6.1 Desvantagens dos Clusters

Construir um Cluster com equipamentos antigos pode ser uma boa forma de

reaproveitar equipamentos, mas estes equipamentos antigos podem representar um

risco, pois além do consumo de energia elevado a capacidade de processamento de

dados pode ser muito baixa comparado com os novos processadores. Um

processador antigo AMD Athlon XP 3200+ pode consumir 40 Watts enquanto

processadores modernos como o AMD Athlon 64 3500+ consomem 3,2 Watts além

de processar muito mais dados (TOMSHARDWARE, 2008).

3.6.2 Cluster Beowulf

No ano de 1993, Donald Becker e Thomas Sterling iniciaram um projeto

para criar uma alternativa de baixo custo aos supercomputadores (BEOWULF.ORG,

2007).

Com auxilio do CESDIS7, foi possível montar o primeiro protótipo do Cluster

Beowulf, que fez bastante sucesso no meio acadêmico, era formado por 16 nodos

equipados com processadores Intel DX4 com tecnologia 486, interligados por rede

de 10Mbit/s Ethernet e sistema operacional GNU/Linux.

Resumidamente um Cluster Beowulf é um agregado de computadores

dedicados apenas para finalidade de processamento em paralelizado, que estão

interligados em rede dedicada para formar uma unidade maior de processamento.

3.6.3 Hardware do Cluster

Na arquitetura física do Cluster os itens: placa de captura de vídeo, placa

de áudio, bluetooth, IRDA8, e outros periféricos desnecessários na resolução do

problema a ser resolvido pelo Cluster, podem ser descartados.

Basicamente para se formar um nodo em um Cluster, bastam os seguintes

componentes: placa mãe, interface de rede, processador, memória principal,

dispositivo de armazenamento de dados e dispositivo de entrada (teclado) e saída

7 Center of Excellence in Space Data and Information Sciences, Centro de Excelência em Dados Espaciais e Ciência da Informação.

8 Dispositivo Infra Vermelho.

27

Page 28: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

(vídeo) de dados (IBM Clusters Hardware, 2007).

Alguns fatores importantes a serem verificados na aquisição de hardware

para bom desempenho do Cluster é: clock9 do processador, tamanho da memória

cache10, velocidade do barramento externo e interno, capacidade da memória

principal, tempo de acesso ao dispositivo de armazenamento, e tempo de latência

da interface de rede.

9 Freqüência do processador.10 Memória de acesso rápido do processador.

28

Page 29: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

4 MATERIAIS E MÉTODOS

4.1. MATLAB®

“MATLAB® é um poderoso sistema desenvolvido para trabalhar com análise

numérica envolvido em resolução de problemas científicos, de engenharia,

biomedicina e outros . O nome MATLAB® deriva de MATrix LABoratory, uma vez

que o sistema foi concebido para tornar a manipulação de matrizes particularmente

fácil” (HAHN, 2007).

O MATLAB® é um software de propriedade da MathWorks11 , desenvolvido

para ter uma linguagem script12 própria que assemelha-se com a descrição

matemática, pois facilita a manipulação de matrizes, analise numérica,

processamento de sinais e construção de gráficos (MATHWORKS, 2007).

A ferramenta MATLAB® inclui um compilador chamado de MCC, que

converte M-Files13 em código fonte C/C++ ou executáveis.

Para compilar “teste.m” em executável utiliza-se:

mcc -m -R -nojvm teste

11 Principal fornecedor de software para computação técnica baseada em modelagem. Fundada em 1984 e está sediada em Natick, Massachusetts, com escritórios e representantes em todo o mundo.

12 Lista de comandos em determinada linguagem de alto nível, que realiza determinada tarefa de forma automatizada.

13 Arquivo código fonte na linguagem MATLAB®, extensão “*.m”.

29

Page 30: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

4.2. BCCD

Bootable Cluster CD (CD de Inicialização de Cluster) ou simplesmente BCCD,

é uma distribuição GNU/Linux baseada no LNX-BBC14, onde não exige que o

computador tenha disco rígido, pois executa diretamente do CD-ROM, em versão

compacta de aproximadamente 180MB. (Bootable Cluster CD, 2007).

Apesar da distribuição BCCD ter seu kernel15 na versão 2.4.25, é apresentado

14 Sistema operacional em Live CD baseado no GNU/Linux, utilizado para manutenção de sistemas.15 Núcleo de um sistema operacional, que tem capacidade de alocar recursos básicos de hardware.

30

Tabela 1: Pacote de Programas do BCCD

Nome FunçãoPVM 3.4.4 ClusterX-PVM 1.2.5 ClusterMPICH 1.2.5 ClusterLAM-MPI 6.5.8 ClusterC3-tools 3.1 Clustergcc Programaçãog++g77 Programaçãocompilador GNU C ProgramaçãoC++ ProgramaçãoFORTRAN Programaçãompicc Programaçãompi77 ProgramaçãompiCC Programaçãompic++ Programaçãohcc Programaçãohcp Programaçãohf77 Programaçãoftp Auxiliarssh Auxiliarrsync Auxiliargnupg Auxiliarwget Auxiliartar Auxiliargpart Auxiliarparted Auxiliarhdparm Auxiliarraidtools Auxiliar

Page 31: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

com um grande leque de pacotes para programação paralela. Tem suporte para

vários modelos de interfaces de rede, e suporte para dispositivos de

armazenamento USB. Implementa segurança com utilização de ssh16 com chaves

criptografadas e compartilhamento de pastas.

4.2.1 Obter distribuição BCCD

A aquisição do BCCD pode ser feita com um acesso pela internet17 a partir do

seu repositório. O BCCD já vem com servidor DHCP (180MB), e pelo site oficial

<http://bccd.cs.uni.edu> do BCCD o seguinte arquivo bccd-2.2.1c7.iso está

disponível para download, este arquivo é uma imagem de extensão iso18 que deve

ser gravada em CD (Index of BCCD-Images, 2007)

No Apêndice A, informações adicionais sobre o BCCD são apresentadas.

16 Secury Shell, protocolo de comunicação que permite o acesso e a execução de comandos remotamente, em uma camada segura.

17 Rede mundial de computadores18 Padronização ISO-9660 para arquivos imagens de discos CD e DVD.

31

Page 32: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

5 DESENVOLVIMENTO DO TRABALHO

Inicialmente pretende-se analisar um algoritmo de processamento paralelo .

Em seguida monta-se um ambiente em Cluster para que o mesmo seja executado.

Para montar o Cluster é utilizado o BCCD (Bootable Cluster CD) que não

exige instalação em disco rígido. Com este ambiente pronto será possível adicionar

o pacote da ferramenta MATLAB® via compartilhamento NFS. Dentro deste

ambiente, pode-se desenvolver testes para apresentação posterior dos resultados

obtidos. As técnicas de análise de desempenho de processamento paralelo que

pode ser aplicada, serão: Granularidade, Latência e Fatores que limitam Speedup.

Para-se criar um ambiente em Cluster uma das exigências é: que se tenha

um comutador de alta velocidade, para que a comunicação entre os nós tenha

menos atraso possível.

5.1. Distribuição GNU/Linux

Para o desenvolvimento deste projeto, o sistema operacional GNU/Linux foi

selecionado como preferencial, pois conforme o site TOP500 dos 500

supercomputadores classificados, 426 utilizam este sistema operacional (TOP500,

2007).

O sistema operacional GNU/Linux também apresenta documentação

suficiente, e uma considerável comunidade de desenvolvedores e funciona em um

grande número de arquiteturas de hardware, além de não existir custo para sua

aquisição.

Como se pretendente utilizar uma versão de GNU/Linux que tenha suporte a

clusterização nativa, os sites LiveDistro e The LiveCD List fornecem uma lista

recente de clusters em Live CD.

Na lista destes sites pode-se observar as seguintes distribuições GNU/Linux:

● ParallelKnoppix – uma versão modificada do sistema operacional GNU/Linux

32

Page 33: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

Knoppix Live CD, que tem suporte a vários pacotes para programação

distribuída como a biblioteca para programação distribuída LAM/MPI e o

software de computação distribuída PVM (Parallel Virtual Machine).

Apresenta uma interface amigável KDE19, inclui modulo para boot remoto, o

tamanho da distribuição é de 676MB (PARALLELKNOPPIX, 2007)

● BCCD – baseada no sistema operacional GNU/Linux LNX-BBC, apresenta

vários pacotes de programação distribuída como: LAM/MPI e PVM já

explicitados anteriormente. E também inclui como adicional a biblioteca

MPICH baseada no padrão MPI-1 e MPI-2. Tem uma interface gráfica

simples, com servidor DHCP que é um protocolo de configuração dinâmica

de terminais de computadores, o tamanho da distribuição é de 180MB

(BCCD, 2007).

● Dyne:Bolic – destinado principalmente ao desenvolvimento e processamento

de multimídia. O suporte para clusterização utiliza a ferramenta openMosix

que destina-se a execução do software Blender para renderização de video, o

tamanho da distribuição é de 683MB (DYNE:BOLIC, 2007).

● Clusterix – projeto baseado no sistema operacional GNU/Linux Morphix, que

trás uma gama de pacotes para programação distribuída, e utiliza interface

gráfica Xfce, o tamanho da distribuição é de 275MB (CLUSTERIX, 2007).

Destes sistemas operacionais o escolhido foi o BCCD, pois além de ser

voltado para treinamento e desenvolvimento de Cluster, possui a opção para que

seja carregado para a memória principal na inicialização a partir do CD-ROM, e e

tem imagem de 180MB. Das distribuições selecionadas é a mais atualizada (2006).

Para maiores informações sobre o BCCD, veja o Apêndice A.

5.1.1 Servidor Principal

Em um ambiente Cluster, para se criar o servidor principal é preciso escolher

de forma mais exigente as configurações de hardware, verifica-se a capacidade de

memória primária, capacidade de processamento e interface de rede de alta

19 Sigla inglesa para K Desktop Environment, trata-se de um ambiente gráfico

33

Page 34: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

velocidade. Para a instância do sistema operacional em questão, verifique o

Apêndice A.

Após inicializar o servidor é preciso configurar a biblioteca LAM/MPI como

biblioteca padrão do sistema BCCD, estas instruções também estão disponíveis no

Apêndice A.

5.1.2 Nós Secundários

Qualquer outro computador que estiver na mesma rede do nó principal

poderá fazer parte do Cluster com auxilio do servidor DHCP; observa-se que o

BCCD tem um modo de inicialização que carrega todo conteúdo para a memória

principal, conforme referencias do BCCD (Apêndice A). Desta forma é possível

montar um Cluster com 20 computadores com apenas 1 CD de distribuição, para

esta operação é necessário pelo menos 512MB de memória RAM para cada

computador.

Para integrar a ferramenta MATLAB® com ambiente Cluster será preciso

gerar um pacote com os arquivos base do MATLAB®. O comando buildmcr

aplicado dentro do ambiente MATLAB® tem a capacidade de gerar um pacote

compactado com as bibliotecas comuns que servirão como referencia para executar

os binários em stand alone20 compilados no MATLAB® .

Este pacote precisa ser compartilhado para que entre todas as unidades de

processamento do Cluster. Também será necessário a definição das variáveis de

ambiente utilizadas pelo MATLAB®, pois a partir destas variáveis que pode-se

enxergar as dependências a serem sanadas para execução do binário gerado na

ferramenta MATLAB®.

5.2. MatlabMPI

É uma biblioteca criada na linguagem MATLAB® que implementa a

especificação MPI, permite que algoritmos de processamento paralelo MATLAB®

sejam executado em um Cluster. Esta biblioteca é encontrada em forma de código

20 Que funciona sozinho, dispositivo qualquer que não precisa de outros para funcionar

34

Page 35: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

livre no sitio do projeto MatlabMPI (MATLABMPI, 2008).

Os pré requisitos para utilização do MatlabMPI são:

● Licença do MATLAB®

● Sistema de arquivos visíveis para todos os processadores

O primeiro é solucionado a partir da aquisição e instalação da ferramenta

MATLAB®, e o segundo requisito resolve-se com a utilização do sistema de

compartilhamento NFS, que torna visível para todos os nós os arquivos da

instalação do MATLAB®.

Para que o MATLAB® possa identificar e executar as funções do MatlabMPI,

é preciso adicionar o endereçamento do pacote de instalação do MatlabMPI no

arquivo pathdef.m pertencente a instalação do MATLAB®.

Variáveis de ambiente como PATH, precisam ser configuradas conforme

documentação do MatlabMPI (MATLABMPI, 2008).

5.3. Algoritmo para processamento paralelo

Ian Foster sugere que sejam realizadas algumas fases para analise de um

algoritmo, a fim de expor oportunidades de paralelização. Esta metodologia é

conhecida como PCAM 21 (FOSTER, 1995).

● Particionamento – o algoritmo deve ser quebrado em partes pequenas de

código que podem ser executados de forma independente. Na fase inicial da

metodologia será necessário analisar todo o código fonte a fim de agrupar em

grupos que possam processar em paralelo.

● Comunicação – verificar as dependências de variáveis compartilhadas e o

fluxo de dados entre processos, como variáveis globais e locais do código

original. Com uma visão prática, procura-se estabelecer um caminho de

comunicação entre os pequenos grupos de código particionado.

21 Acrônimo para Particionamento, Comunicação, Aglomeração e Mapeamento.

35

Page 36: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

● Aglomeração – a partir do particionamento e da comunicação obtem-se

conjuntos de procedimentos que podem ser aglomerados para formar blocos

sólidos de processamento.

● Mapeamento – destina-se redirecionar onde cada processo será executado,

distribuindo cargas elevadas de processamento para nodos com maior poder

computacional.

36

Figura 3: Diagrama PCAM

Page 37: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

No passo 1 da Figura 3 tem-se um problema hipotético para aplicação da

técnica de particionamento, esta técnica procura oportunidades de

paralelização.

No passo 2 o problema está totalmente particionado, e pronto para entrar na

fase de comunicação (passo 3) que irá verificar quais são os melhores

caminhos entre os processos para resolução do problema.

Todos os pequenos grãos de processos estão se comunicando no passo 3, e

no passo 4 tem-se um agrupamento desta comunicação que divide os grupos

que mais se comunicam.

No passo 5 a distribuição dos processos entre os processadores é

estabelecida.

5.4. Testes de Benchmark

Na tentativa de obtenção de desempenho da implementação do Cluster

conforme esta documentação, um simples código, chamado blurimage.m,

disponível em anexo na biblioteca de paralelização MatlabMPI, foi utilizado para

gerar os resultados, o programa é código fonte livre e disponibilizado pelo MIT22 sem

nenhuma garantia ou responsabilidade pelos danos que possa por ventura causar

(MATLABMPI, 2008).

Este script, blurimage.m, implementa um processamento de imagem do

tipo convolução, a imagem é quebrada em vários pedaços, em seguida distribuída

em vários processadores que basicamente executam a função conv2, função

suportada pelo MATLAB®, no pedaço de imagem recebido, e por fim retornam as

imagens processadas para o processador principal, e este retorna o tempo de

execução e o desempenho em GFlops calculado pelo algoritmo interno do próprio

código fonte. O mesmo código encontra-se na seção Anexo.

22 Massachusetts Institute of Technology.

37

Page 38: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

6 AMBIENTE PARA TESTES

6.1. Ambiente de Processamento Distribuído

Na Figura 4 tem-se a estrutura em camadas do Cluster. Para a rede local

utilizou-se um HUB de 24 portas Fast Ethernet 3COM.

Neste modelo um servidor NFS é utilizado a fim de compartilhar os arquivos

executáveis do MATLAB, para que todos os nós visualizem-se e possam executar a

partir de um local em comum. Assim os resultados ao término da execução serão

armazenados em um local seguro.

O BCCD trás em sua distribuição um servidor DHCP pré-configurado, um

dos nodos precisa inicializar o modo servidor DHCP, o mesmo faz parte do Cluster

conforme Figura 4.

38

Figura 4: Estrutura em camadas do Cluster desenvolvido

Page 39: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

A Figura 5 mostra os passos da implementação do Cluster utilizando a

Técnica Desenvolvimento e Análise Estruturada – SADT, neste diagrama tem-se os

processos principais que se comunicam fornecendo instruções e possíveis resultados.

6.2.Configuração do Cluster

O tempo cronometrado para executar a configuração do Cluster é de

aproximadamente 1 hora e 15 minutos, visto que o servidor NFS já estava em

execução na espera por conexões. Onde apenas um CD da distribuição BCCD é

utilizado na realização desta tarefa, pois o sistema operacional é carregado

diretamente na memória RAM.

No total foram 11 computadores ligados em rede, 10 destes executaram o

sistema operacional BCCD, que ocupava 370MB de 512MB disponível, restou-se

aproximadamente 140MB para execução dos processos em cada nó.

39

Figura 5: passos da implementação utilizando a Técnica Desenvolvimento e Análise Estruturada - SADT.

Page 40: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

O primeiro computador que carrega o sistema operacional BCCD precisa

inicializar o servidor DHCP, este tem acesso irrestrito aos outros computadores via

ssh, pois na inicialização as chaves de acesso remoto são compartilhadas com o

servidor DHCP.

Em seguida a partição NFS pode ser montada a partir dos nós BCCD. Duas

configurações para montar a partição remota NFS é utilizada no teste do

desempenho no Cluster.

Uma descrição detalhada do hardware que compõe o Cluster esta listada na

Tabela 2. Nenhum dos computadores, a não ser o servidor NFS, sofreu alteração

nos arquivos originais ou instalação de software adicional no disco rígido.

40

Figura 6: Cluster pronto para testes no Labin 09 - UFT

Page 41: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

A executação do script blurimage.m é exemplificada na Figura 6, do

computador renedet-desktop um acesso realizado por ssh no host1 inicializa a

execução do script.

O código fonte blurimage.m faz parte do pacote MatlabMPI, e encontra-se

disponível sobre licença de código livre pelo MIT. Uma cópia está no Anexo.

A execução desta experiência, testes e resultados foi realizada dentro do

laboratório de informática Figura 6 (Bloco III, LABIN 09) da Universidade Federal do

Tocantins, com todo o auxilio e cooperação dos funcionários e Diretor do Campus

de Palmas-TO.

41

Tabela 2: Hardware do Cluster

Máquina Processador Placa Mãe Local Função IP1 renedet-desktop 512 AMD AthlonXP 2600+ L7VTA (KT400) LABIN 9/UFT Ubuntu/NFS 192.168.1.22 host1 512 P4 HT 3,0GHz IBM MT-M 8124-31P LABIN 9/UFT BCCD/DHCP 192.168.1.13 host93 512 P4 HT 3,0GHz IBM MT-M 8124-31P LABIN 9/UFT BCCD 192.168.1.934 host94 512 P4 HT 3,0GHz IBM MT-M 8124-31P LABIN 9/UFT BCCD 192.168.1.945 host95 512 P4 HT 3,0GHz IBM MT-M 8124-31P LABIN 9/UFT BCCD 192.168.1.956 host96 512 P4 HT 3,0GHz IBM MT-M 8124-31P LABIN 9/UFT BCCD 192.168.1.967 host97 512 P4 HT 3,0GHz IBM MT-M 8124-31P LABIN 9/UFT BCCD 192.168.1.978 host98 512 P4 HT 3,0GHz IBM MT-M 8124-31P LABIN 9/UFT BCCD 192.168.1.989 host99 512 P4 HT 3,0GHz IBM MT-M 8124-31P LABIN 9/UFT BCCD 192.168.1.99

10 host100 512 P4 HT 3,0GHz IBM MT-M 8124-31P LABIN 9/UFT BCCD 192.168.1.100

NoMemória

(MB)

Page 42: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

42

Figura 7: Terminal de linha de comando

Page 43: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

7 RESULTADOS E DISCUSSOES

7.1.Resultados adquiridos

O Figura 8 é baseado nas informações da Tabela 3, neste pode-se observar

que houve um tempo de computação menor quando o mesmo é comparado com o

Figura 8.

Para obter o tempo de acesso a partição remota NFS nos testes da Tabela

4, a montagem da partição remota NFS configurou-se para um valor menor de

tempo de acesso padrão.

A utilização dessa configuração pode ser uma vantagem quando se pensa

em obter desempenho por meio deste acesso.

Os testes resultados da Figura 9 desencorajam estabelecer um acesso com

tempo de acesso padrão a um servidor de arquivos compartilhados NFS, mas

43

Figura 8: Testes com script blurimage.m, tempo de acesso menor ao NFS, fonte Tabela 3

Page 44: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

estabelecer um tempo de acesso muito baixo pode ocasionar os resultados como:

● Excesso de colisões entre pacotes.

● Perda de conexão com servidor NFS.

Isto foi verificado no início do processo de execução do script blurimage.m,

pois para cada nó foi preciso uma instância da ferramenta MATLAB® em cada

processo requisitado, assim gerando um atraso no acesso a pasta compartilhada.

44

Tabela 3: Primeiro teste com tempo de aceso menor ao NFS

Page 45: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

O motivo pelo qual o teste número 34 da Tabela 3 não o suportou, é

explicitado pela Figura 9 que apresenta uma mensagem do sistema operacional que

acusou estouro de memória, pois como uma instância do MATLAB® exige muita

memória principal, no teste número 34 são instanciados 25 processos para 10

processadores, onde 5 processadores se sobrecarregaram com 3 processos

concorrentes cada. Assim os 5 processadores tiveram estouro de memória pelo

excesso de instâncias do MATLAB®. Este erro também é verificado na Tabela 5.

45

Figura 9: Testes com script blurimage.m, tempo de acesso padrão ao NFS, fonte Tabela 4

Page 46: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

46

Figura 10: Ocorrência de estouro de memória por excessos de processos concorrentes, referente ao teste 34 da Tabela 3

Page 47: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

47

Tabela 4: Segundo teste com tempo de aceso padrão ao NFS

Page 48: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

Os resultados obtidos com os testes das Tabelas 5, 6 e 7 foram cruzados e

dispostos nas relações Tempo x Número de Processos e Giga Flops Calculados

x Número de Processos, conforme Figura 12 e Figura 13.

Acompanhando os resultados, nas Figuras 12 e 13, a execução local não

teve continuidade acima de 3 processos porque não foi suportado devido a limitação

de memória (512MB).

48

Tabela 5: Terceiro teste, poucos testes gerados pelo estouro de memória

Figura 11: Testes com script blurimage.m, execução local, fonte Tabela 5

Média 1 Média 2

0,000

5,000

10,000

15,000

20,000

25,000

30,000

35,000

40,000

45,000

50,000

Tempo de Execução(seg) GigaFlops(Calculado) No de Processos

Page 49: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

A execução do Cluster com tempo de acesso alterado (Tabela 5) para o

servidor NFS garantiu um desempenho melhor na comparação com os valores do

Cluster com tempo de acesso padrão (Tabela 6).

49

Figura 12: Relação Tempo x Número de Processos, referencia Tabelas 5, 6 e 7

Figura 13: Relação GigaFlops x Número de Processos, referencia Tabelas 5, 6 e 7

Page 50: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

8 CONCLUSÃO E TRABALHOS FUTUROS

8.1. Conclusão

Neste trabalho, verificou-se possibilidade de montagem de um ambiente

expresso para processamento paralelo capaz de resolver problemas que exijam um

tempo de processamento elevado. Com exceção da ferramenta MATLAB®, todas as

ferramentas utilizadas são de código livre.

Os itens de aspectos de projeto de sistemas distribuídos que foram atendidos

são:

Transparência: Após o sistema encontrar-se totalmente configurado e pronto

para o uso, qualquer usuário que utiliza um programa de processamento paralelo a

partir do terminal principal não nota que está também utilizando outros

processadores na rede.

Flexibilidade: A idéia original que implementa este trabalho esta aberta para

mudanças de hardware e software.

Confiabilidade: Neste caso houve a preocupação com vários itens que

englobam este aspecto. Para atender a disponibilidade foi utilizado o sistema de

compartilhamento de arquivos em rede NFS. A segurança estava por conta do

protocolo ssh que foi necessário na invocação de comandos remotos. Na

integridade dos dados o controle de acesso do servidor NFS aplica regras de

acesso a faixa de IP. Caso um nó falhasse, os arquivos executáveis estavam

seguros no servidor NFS, atendendo a tolerância à falhas.

Performance: foi melhorada pelos testes realizados, onde inicialmente o

tempo de acesso ao servidor NFS era tolerável, mas com um pouco mais de

pesquisa em relação ao NFS, obteve-se melhores resultados em relação ao tempo

de acesso, melhorando o throughput do sistema distribuído. Em relação a

granularidade não houve testes, pois o objetivo explicitamente não se tratava em

criar um algoritmo, mas testa-lo.

50

Page 51: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

Escalabilidade: por questões de disponibilidade de computadores não foram

criados outros servidores NFS para auxiliar no incremento da escala do Cluster

implementado, mas de forma prática o incremento escalar foi possível com auxilio

de um HUB.

O BCCD mostrou-se útil, pois como trata-se de uma distribuição pequena,

pôde ser carregado para a memória do computador, além de fornecer suporte para

montar um Cluster, seu tamanho limitado reduz a quantidade de drivers disponíveis.

A biblioteca MatlabMPI de programação distribuída para a ferramenta

MATLAB®, possibilitou executar processos em paralelo tanto localmente como em

processadores remotos, mas a sobrecarga da memória em cada instância do

MATLAB® inviabiliza o excesso de processos paralelos em uma unidade de

processamento. Esclarece-se que a capacidade limitada de memória nos

computadores, também impossibilitou a instância de mais que 2 processos do

MATLAB® simultâneos por processador. Observa-se que de 512MB, 370MB foram

utilizados para o sistema operacional BCCD sem memória Swap disponível, o

restante, 142MB, para instâncias dos processos. Observando ainda que, todas as

outras distribuições pesquisadas necessitavam de muito mais memória que o

sistema operacional utilizado.

8.2. Trabalhos Futuros

● Criar uma distribuição Live CD Cluster, que seja pré-configurada e tenha

suporte a uma gama de interfaces de rede, inclusive as populares redes

Wireless. Buscando uma distribuição com o menor tamanho possível, a partir

de uma distribuição GNU/Linux existente.

● Utilizar uma rede com desempenho elevado, incluindo interfaces com

desempenho superior, deste modo diminuindo o gargalo na rede de

comunicação entre os processadores.

● Testar Cluster com um caso real para obter resultados mais práticos da

viabilidade do trabalho.

51

Page 52: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

● Implementar melhorias para o código fonte da biblioteca de programação

distribuída MatlabMPI, pois muitas funções padrão MPI não foram

implementadas.

● Comparar implementação do Cluster padrão com Cluster em Live CD.

52

Page 53: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

REFERÊNCIAS BIBLIOGRÁFICAS

ATTIYA, Hagit. WELCH, Jennifer. Distributed Computing: Fundamentals, Simulations, and Advanced Topics. Wiley IEEE. 2004. 432 páginas.

BCCD. Bootable Cluster CD. Desenvolvido por Paul Gray e e Kristina Wanous da Universidade de Northern Iowa. Disponível em:. <http://bccd.cs.uni.edu>. Acesso em: 01 de Dezembro de 2007.

BCCD. Index of /BCCD-Images. Lista de imagens em CD da distribuição BDDC. Disponível em:. <http://bccd.cs.uni.edu/BCCD-Images>. Acesso em: 01 de Dezembro de 2007.

BEOWULF.ORG. Beowulf Project Overview - History. Autor do artigo: Phil Merkey, Professor de Matemática e Ciência da Computação na Universidade de Tecnologia de Michigan. Disponível em: <http://www.beowulf.org/overview/ history.html>. Acesso em: 01 de Dezembro de 2007.

BHATTACHARYA, A; KONAR, A; MANDAL, A K. Parallel and Distributed Logic Programming: Towards the Design of a Framework for the Next Generation Database Machines, Holanda: Springer-Verlag. 2006.

CARVALHO, Job P; RODRIGUES, Thiago M. B. Cluster de Alto Desempenho para Processamento Paralelo de Imagens. Trabalho de Conclusão de Curso. Universidade Federal do Tocantins, 2007.

CLUSTERIX. Clustrix LiveCD. Disponível em:. <http://clusterix.livecd.net>. Acesso em: 01 de Dezembro de 2007.

CLUSTERVISION. CLUSTER HARDWARE. Disponível em: <http://www. clustervision.com/cluster_hardware.html>. Acesso em: 01 de Dezembro de 2007.

DANTAS, Mario. Computação Distribuída de Alto Desempenho: Redes, Clusters e Grids Computacionais. Axcel Books. 2005. 288 páginas.

DYNE:BOLIC. d y n e : b o l i c -- a free multimedia studio in a GNU/Linux live CD. Disponível em: <http://www.dynebolic.org>. Acesso em: 01 de Dezembro de 2007.

FLYNN, M. Some Computer Organizations and Their Effectiveness, IEEE Transactions on Computers, 1972.

FOKKINK , Wan, Modelling Distributed Systems. New York: Springer-Verlag. 2007. 151 páginas.

FOSTER, I. Designing and Building Parallel Programs: Concepts and Tools for Parallel Programs. Número da edição. Local de Publicação: Addison-Wesley, 1995. 430 páginas.

53

Page 54: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

GRAMACHO, Warley. Paralelização da Heurística de Otimização por Colônia de Formigas em Ambiente de Programação por Troca de Mensagens. Trabalho de Conclusão de Curso. Universidade Federal do Tocantins, 2006.

HAHN, Brian D; VALENTINE, Daniel T. Essential MATLAB® for Engineers and Scientists, 3ª Edição, Butterworth-Heinemann. 2007. 448 páginas.

IBM. IBM Clusters Hardware. Disponível em:. <http://www-03.ibm.com/systems/ clusters/hardware/>. Acesso em: 01 de Dezembro de 2007.

LIVECDLIST. The LiveCD List. Disponível em:. <http://www.livecdlist.com>. Acesso em: 01 de Dezembro de 2007.

LIVEDISTRO. Remaster : LiveCD : LiveDVD : USB Flash Drive : Build Tool Script : ISO : Torrent : Download. Disponível em: <http://www.livedistro.org>. Acesso em: 01 de Dezembro de 2007.

LNX-BBC. LNX-BBC GNU/Linux Bootable Business Card. Disponível em: <http://www.lnx-bbc.com>. Acesso em: 01 de Dezembro de 2007.

MATLABMPI. Parallel Programming with MatlabMPI, Dr. Jeremy Kepner. MIT - Massachusetts Institute of Technology. Disponível em: <http://www.ll.mit.edu/MatlabMPI>. Acesso em: 20 de Janeiro de 2008.

MATHWORKS. The MathWorks - MATLAB and Simulink for Technical Computing. Disponível em: <http://www.mathworks.com>. Acesso em: 01 de Dezembro de 2007.

MESSAGE PASSING INTERFACE FORUM. MPI: A Message-Passing Interface Standard. Disponível em: <http://www-unix.mcs.anl.gov/mpi/mpi-standard/mpi-report-1.1/mpi-report.htm>. Acesso em: 01 de Dezembro de 2007.

PARALLELKNOPPIX. ParallelKnoppix: Create a HPC cluster in 5 minutes. Disponível em: <http://pareto.uab.es/mcreel/ParallelKnoppix>. Acesso em: 01 de Dezembro de 2007.

PETERSEN, W P; ARBENZ, P. Introduction to Parallel Computing. Primeira edição. New York: Oxford University Press. 2004.

PS3GRID. PS3GRID: PLAYSTATION 3 SERVING SCIENCE. (Copyright © 2007 UPF). Disponível em:. <http://www.ps3grid.net>. Acesso em: 01 de 2007.

SLOAN, Joseph Donald. High Performance Linux Clusters with OSCAR, Rocks, OpenMosix, and MPI. Número da edição. Local de Publicação: O'Reilly, 2004. 360 páginas.

STERLING, Tomas. Beowulf Cluster Computing with Linux. MIT Press, Outubro 2001. 496 páginas.

TANAKA, H; MURAOKA, Y. The Massively Parallel Processing System JUMP-1. Amsterdam, Holanda: IOS Press, 1996. 246 páginas.

54

Page 55: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

TANENBAUM, Andrew S. Distributed Operating Systems. Prentice Hall. 1995. 648 páginas.

TANENBAUM, Andrew S; STEEN, Maarten. Distributed systems : principles and paradigms. Segunda edição. Pearson Prentice Hall, 2006. 704 páginas.

TANENBAUM, Andrew S. Sistemas Operacionais Modernos. Prentice Hall do Brasil, 1992. 487 páginas.

TOMSHARDWARE. Tom's Hardware. Disponível em: <http://www.tomshardware.com>. Acesso em: 07 de Julho de 2008.

TOP500. TOP500 Supercomputing Sites. Disponível em:. <http://www.top500.org>. Acesso em: 01 de Dezembro de 2007.

TRUSTEES OF INDIANA UNIVERSITY. LAM/MPI Parallel Computing. Disponível em:. <http://www.lam-mpi.org>. Acesso em: 01 de Dezembro de 2007.

WITTWER, T. An Introduction to Parallel Programming. Primeira edição. Holanda: VSSD, 2006. 53 páginas.

55

Page 56: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

APÊNDICE AI - BCCD

Bootable Cluster CD (CD de Inicialização de Cluster) ou simplesmente BCCD,

é uma distribuição GNU/Linux baseada no LNX-BBC, não exige que o computador

tenha disco rígido, pois executa diretamente do CD-ROM, em versão compacta de

aproximadamente 180MB. (BCCD, 2007).

Apesar da distribuição BCCD ter seu kernel23 na versão 2.4.25, é apresentado

com um grande leque de pacotes para programação paralela. Tem suporte para

vários modelos de interfaces de rede, e suporte para dispositivos de

armazenamento USB.

No BCCD traz incluso implementação de segurança com utilização de ssh24

com chaves criptografadas e compartilhamento de pastas.

O BCCD inclui as seguintes ferramentas para Cluster:

PVM 3.4.4, X-PVM 1.2.5, MPICH 1.2.5, LAM-MPI 6.5.8, C3-tools 3.1

Para programação, BCCD tem-se os seguintes compiladores:

gcc, g++, g77, compilador GNU C, C++, FORTRAN, mpicc, mpi77, mpiCC,

mpic++, hcc, hcp, hf77

Outros utilitários auxiliares do BCCD:

ftp, ssh, rsync, gnupg, wget, tar, gpart, parted, hdparm, raidtools, VNC client,

xterm

II - Adquirir BCCD

23 Núcleo de um sistema operacional, que tem capacidade de alocar recursos básicos de hardware.24 Secury Shell, protocolo de comunicação que permite a o acesso e a execução de comandos

remotamente, em uma camada segura.

56

Page 57: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

A aquisição do BCCD tem-se acesso pela internet a partir do seu repositório.

O BCCD já vem com servidor DHCP (180MB), e pelo site oficial do BCCD o seguinte

arquivo bccd-2.2.1c7.iso está disponível para download, este arquivo é uma

imagem de extensão iso25 que deve ser gravada em CD. (Index of /BCCD-Images,

2007)

No Linux é utilizdo o seguinte comando para gravar em CD:

cdrecord -vvv -eject dev=0,0,0 driveropts=burnfree bccd-2.2.1c7.iso

III - Inicializar BCCD

Com o CD e os computadores configurados para inicializar via CD-ROM,

pode-se iniciar o processo de criação do Cluster.

É recomendado que se utilize uma máquina mais robusta para o nó principal,

em questão de memória aproximadamente entre 512MB ou o máximo possível.

O BCCD é uma versão Live CD GNU/Linux, ou seja, não exige instalação e

25 padronização ISO-9660 para arquivos imagens de discos CD e DVD

57

Figura 14: Tela inicial BCCD

Page 58: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

executa diretamente a partir do CD ou na memória RAM do computador(adicionar

se for utilizado o comando runinram, ver referencias BCCD), não será necessário

que a máquina tenha disco rígido, isto significa uma economia no custo de

montagem de um Cluster. Para iniciar o BCCD através do CD é necessário

configurar a BIOS da placa mãe para que inicialize através do CD-ROM.

IV - Inicializar BCCD com servidor DHCP

Na versão bccd-2.2.1c7.iso, vem incluso um servidor DHCP. Para inicializar

este servidor precisa-se passar alguns parâmetros na tela de inicialização do BCCD.

boot: 3 startdhcp

Inicializar Servidor DHCP

Resolução da tela (o parâmetro 3 equivale a resolução 800x600)

Existem outros parâmetros que fazem parte desta pré-configuração, verifique

os referencias BCCD. Por exemplo ao utilizar o parâmetro runinram todo conteúdo

do CD é carregado para a memória, isto será interessante quando tem-se muita

memória.

Nesta solução utilizaremos parâmetros 3 startdhcp no nó principal, assim

como no exemplo. Nos outros nós que farão parte do Cluster, será utilizado o

comando de inicialização 1 nodemode.

A partir deste ponto, para ajudar no entendimento de como configurar o

servidor DHCP utiliza-se o BCCD, as figuras estão ordenadas em seqüencia de

aparecimento conforme o sistema é configurado, esta ordem pode variar em

distribuições futuras.

58

Page 59: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

V - Definir Senha

Ao inicializar o servidor tem-se que colocar uma senha para o usuário padrão

bccd, esta senha terá que ter pelo menos 5 caracteres ou no máximo 8, conforme

Figura 15.

Depois da senha, algumas telas de boas vindas são apresentadas, e em

seguida será preciso selecionar algumas opções conforme a seqüência de figuras.

A partir deste ponto, Figura 16, o comando trivial-net-setup é executado

automaticamente, e irá auxiliar na configuração da placa de rede.

Na Figura 17 tem-se uma previa da placa de rede que foi identificada. E na

Figura 18 o driver26 pode ser escolhido automaticamente ao selecionar a opção

auto, ou ao utilizar as setas seleciona-se o driver.

26Camada entre sistema operacional e o dispositivo de hardware.

59

Figura 16: Configuração da placa de rede

Figura 15: Inserir senha padrão para usuário bccd

Page 60: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

60

Figura 17: Aviso: é necessário que o computador tenha pelo menos uma interface de rede

Figura 18: Drivers disponíveis para a interface de rede

Page 61: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

Na Figura 21, é necessário escolher a opção No, pois deste modo será

possível definir um IP estático para o nó principal.

Para definir o IP desejado, é necessário marcar a opção Yes conforme

Figura 22.

61

Figura 19: Interface de rede configurada corretamente

Figura 21: Configurar automaticamente via servidor DHCP?

Figura 20: Mensagem padrão, aviso que interface de rede eth0 será configurada

Page 62: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

62

Figura 23: Aviso sobre a obrigatoriedade do uso de pontos no endereçamento do IP

Figura 22: Confirmar a configuração manual do IP

Figura 24: Inserção do IP desejado, valor padrão 192.168.1.1

Page 63: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

63

Figura 25: Inserção da mascara com a qual se deseja trabalhar

Figura 26: Definição do Gateway

Figura 27: IP do servidor DNS

Page 64: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

Para fazer login no sistema utilize usuário igual a bccd e a senha que foi

definida. O acesso como super usuário é feito com usuário root e a senha letmein,

estes valores são padrões do BCCD.

VI - Configurar IP do servidor DHCP

64

Figura 28: Rota padrão definida

Figura 29: O nome da maquina no domínio foi definido para host1, e o arquivo /etc/host foi

atualizado

Figura 30: Responder Yes libera acesso via ssh neste host

Page 65: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

Depois que o servidor DHCP for inicializado, para mudar o IP é necessário

autenticar-se como super usuário com o seguinte comando no console do BCCD: su

em seguida insira a senha letmein. E com o poder administrativo de super usuário

será possível alterar o arquivo dhcpd.conf de configuração do servidor DHCP que

está na pasta /etc, utilize o editor de texto pico, desta seguinte maneira:

pico /etc/dhcpd.conf

Verifica-se na Figura 32 o conteúdo do arquivo dhcpd.conf, na linha em que

se encontra shared-network, em seguida na variável shared onde houver

192.168.1.0 muda-se para o IP A.B.C.D pretendido. É possível alterar a mascara do

endereço IP padrão a ser adotada alterar a variável netmask.

Também é necessário que seja configurado o intervalo de IP que o servidor

irá utilizar. Na linha que tem pool encontra-se a variável range e os valores desta

estão os intervalos padrões de 192.168.1.2 até 192.168.1.101. Para que ocorra uma

boa configuração na rede deste Cluster o IP do nó principal não pode fazer parte

65

Figura 31: Após tudo configurado corretamente, tem-se a seguinte tela de login

Page 66: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

deste intervalo.

VII - Configurar LAM-MPI

Para configurar a utilização da biblioteca LAM-MPI, edita-se o arquivo bashrc,

com o comando pico ~/.bashrc, não é necessário a autenticação com super

usuário.

Agora com o arquivo bashrc aberto, localiza-se a seguinte linha:

export PATH=$PATH:/mpich/bin

66

Figura 32: Conteúdo do arquivo dhcpd.conf

Page 67: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

Esta linha precisa ser mudada para:

export PATH=/lam-mpi/bin:$PATH

Para salvar com o editor pico, utiliza-se CTRL+o, e CTRL+x para sair.

A validação das configurações estarão definidas ao se executar o comando:

. ~/.bashrc, conforme Figura 33.

E com o comando which mpirun, podemos verificar se a configurações

foram executadas com sucesso, pois se a resposta for /lam-mpi/bin/mpirun obteve-

se sucesso ao definir valor da variável de ambiente PATH.

Para utilizar a biblioteca LAM-MPI é necessário que o sistema de arquivo das

bibliotecas estejam carregadas, para isso autentica-se como super usuário e

executa-se o comando ldconfig -v | less no console.

Após este comando a seguinte tela com as novas configurações será

mostrada na Figura 35. Utiliza-se Q para sair.

Na Figura 30 o importante é o referencial descrito abaixo, que define a

alteração do sistema de arquivos da biblioteca LAM-MPI.

/lam-mpi/lib:

libmpi.so.0 -> libmpi.so.0.0.0

liblammpi++.so.0 -> liblammpi++.so.0.0.0

liblamf77mpi.so.0 -> liblamf77mpi.so.0.0.0

liblam.so.0 -> liblam.so.0.0.0

67

Figura 33: Validar configurações

Page 68: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

A partir deste ponto a biblioteca LAM-MPI esta pronta para ser utilizada.

VIII - Incluir nó secundário no Cluster BCCD

Para inicializar o nó secundário utiliza-se na tela de inicialização do BCCD

como parâmetro 1 nodemode, conforme Figura 25.

A seqüencia de inicialização é praticamente idêntica ao modo de inicialização

do nó principal.

Com o parâmetro nodemode tem-se o cliente de servidor DHCP pronto para

ser executado. A seqüencia de inicialização é similar ao do servidor DHCP.

68

Figura 34: Resposta do comando ldconfig -v | less

Page 69: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

Após inserir o comando na tela de inicialização, o próximo passo é definir a

senha padrão ver Figura 15.

Na Figura 16 até até Figura 19 tem-se a configuração do driver da placa de

rede como foi descrito na inicialização do servidor DHCP.

Com um servidor DHCP em execução em rede local, é possível selecionar a

opção Yes na Figura 21, pois deste modo o nó secundário detectará o servidor

DHCP. Se tudo ocorrer corretamente a mensagem será apresentada na Figura 36.

69

Figura 35: Inicialização nó secundário

Figura 36: O nó secundário agora faz parte do domínio, e seu nome foi definido para host101

Page 70: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

Para que o nó principal possa visualizar o nó secundário, será preciso fazer o

login com usuário padrão bccd, e aceitar a opção Yes na tela (Figura 30) que será

apresentada. Também será necessário executar o comando bccd-allowall para

aceitar automaticamente todas as chaves ssh publicas, isto é importante para que

todos os nodos se comuniquem livremente com segurança ao utilizar o protocolo

ssh.

A partir deste ponto o nó secundário já tem um IP definido, e o mesmo

poderá ser acessado do nó principal via ssh. Mas antes é preciso definir a biblioteca

LAM-MPI como padrão, verificar tópico Configurar LAM-MPI.

IX - Verificar conexão do nodo principal com nodos secundários

O pré-requisito para que o nó principal tenha controle dos nodos secundários

é importante que todos os nodos estejam configurados com a biblioteca LAM-MPI

por padrão. Em seguida o comando bccd-allowall precisa ser executado em todos

os nodos, e a opção Yes deve ser aceita, assim permite acesso via ssh a todos os

nodos.

No nodo principal executa-se no console o comando bccd-snarfhosts, isto

para que todos os nodos sejam listados em ~/machines. A visualização dos nodos

se faz com o comando more ~/machines no console.

E com o comando recon -v ~/machines, é possível verificar se a

70

Figura 37: Mensagem após executar o comando bccd-allowall

Page 71: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

comunicação entre os nodos foi inicializada.

Outro comando importante para que a rede de Cluster funcione é lamboot -v

~/machines, este trata-se de um teste para verificar se todos os nodos estão

disponíveis para receber chamadas remotas.

X - Referências BCCD

Parâmetros de inicialização

Primeiro parâmetro refere-se a resolução da tela:

1 framebuffer desativado, sem interface gráfica X11

2 para 640x480

3 para 800x600

4 para 1024x768

5 para 1280x1024

71

Figura 38: Resposta do comando recon -v ~/machines

Page 72: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

Segundo parâmetro referente as pré-configurações:

automode – modo automático para criar Cluster. Todos os nós

precisam inicializar por este modo, mas desativa a personalização de configurações

mais especificas.

nohotplug – desabilita suporte HotPlug para dispositivos USB, PCI e

firewire em computadores que tem esta funcionalidade.

quickboot – modo de inicialização que não exige entrada de

parâmetros na configuração de rede, este modo é apenas para teste.

runinram – carrega toda informação do CD para a memória RAM. Tem

a necessidade de pelo menos 512MB de RAM para funcionar. Este modo de

inicialização é também utilizado quando necessário liberar o Drive de CD-ROM ou

para utilizar a mesma mídia de CD na inicialização de outros nós.

startdhcp – utilizado para criar um servidor DHCP.

nodemoode – este modo atende como cliente de um servidor DHCP,

define automaticamente o nome e o IP do nó.

pxeserver – trata-se de um servidor de boot remoto, ou seja, uma

inicialização remota dos nós pela placa de rede, para este modo é necessário

passar os parâmetros startdahcp e tftpboot, devido a necessidade de um servidor

DHCP e o compartilhamento da imagem do BCCD na rede via TFTP. Exige-se

também neste uma versão servidora BCCD-PXE para o funcionamento.

tftpboot – inicializa automaticamente o servidor de TFTP para

compartilhar a imagem do BCCD na rede, é utilizado com pxeserver.

72

Page 73: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

ANEXOS

1 Código fonte C e MPI

#include <mpi.h> #include <stdlib.h> using namespace std; main( int argc, char **argv){

int myrank; int len;

char name [MPI_MAX_PROCESSOR_NAME];

MPI_Init(&argc, &argv); MPI_Comm_rank( MPI_COMM_WORLD, &myrank); MPI_Get_processor_name( name, &len );

cout << name <<": hello from "<< myrank <<"\n"; MPI_Finalize();

}

2 Código fonte blurimage.m

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% This script implements a basic image convolution% across multiple processors.% To run, start Matlab and type:%% eval( MPI_Run('blurimage',2,{}) );%% Or, to run a different machine type:%% eval( MPI_Run('blurimage',2,{'machine1' 'machine2'}) );%% Output will be piped into to%% MatMPI/blurimage.0.out% MatMPI/blurimage.1.out% ...%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% MatlabMPI% Dr. Jeremy Kepner% MIT Lincoln Laboratoy% [email protected]%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Initialize MPI.

73

Page 74: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

MPI_Init;

% Create communicator.comm = MPI_COMM_WORLD;

% Modify common directory from default for better performance.% comm = MatMPI_Comm_dir(comm,'/tmp');% comm = MatMPI_Comm_dir(comm,'/gigabit/node-a');

% Get size and rank.comm_size = MPI_Comm_size(comm);my_rank = MPI_Comm_rank(comm);

% Do a synchronized start.starter_rank = 0;delay = 30; % Secondssynch_start(comm,starter_rank,delay);

% Set image size (use powers of 2).% n_image_x = 2.^17;% n_image_x = 2.^12;n_image_x = 2.^(10+1)*comm_size;n_image_y = 2.^10;

% Number of points to put in each sub-image.n_point = 100;

% Set filter size (use powers of 2).n_filter_x = 2.^5;n_filter_y = 2.^5;

% Set the number of times to filter.n_trial = 2;

% Computer number of operations.total_ops = 2.*n_trial*n_filter_x*n_filter_y*n_image_x*n_image_y;

if(rem(n_image_x,comm_size) ~= 0) disp('ERROR: processors need to evenly divide image'); exit;end

% Print rank.disp(['my_rank: ',num2str(my_rank)]);

% Set who is source and who is destination.left = my_rank - 1;if (left < 0) left = comm_size - 1;endright = my_rank + 1;if (right >= comm_size) right = 0;end

% Create a unique tag id for this message (very important in Matlab MPI!).tag = 1;

74

Page 75: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

% Create timing matrices.start_time = zeros(n_trial);end_time = start_time;

% Get a zero clock.zero_clock = clock;

% Compute sub_images for each processor.n_sub_image_x = n_image_x./comm_size;n_sub_image_y = n_image_y;

% Create starting image and working images..sub_image0 = rand(n_sub_image_x,n_sub_image_y).^10;sub_image = sub_image0;work_image = zeros(n_sub_image_x+n_filter_x,n_sub_image_y+n_filter_y);

% Create kernel.x_shape = sin(pi.*(0:(n_filter_x-1))./(n_filter_x-1)).^2;y_shape = sin(pi.*(0:(n_filter_y-1))./(n_filter_y-1)).^2;kernel = x_shape.' * y_shape;

% Create box indices.lboxw = [1,n_filter_x/2,1,n_sub_image_y];cboxw = [n_filter_x/2+1,n_filter_x/2+n_sub_image_x,1,n_sub_image_y];rboxw = [n_filter_x/2+n_sub_image_x+1,n_sub_image_x+n_filter_x,1,n_sub_image_y];

lboxi = [1,n_filter_x/2,1,n_sub_image_y];rboxi = [n_sub_image_x-n_filter_x/2+1,n_sub_image_x,1,n_sub_image_y];

% Set start time.start_time = etime(clock,zero_clock);

% Loop over each trial.for i_trial = 1:n_trial

% Copy center sub_image into work_image. work_image(cboxw(1):cboxw(2),cboxw(3):cboxw(4)) = sub_image;

if (comm_size > 1) % Create message tag. ltag = 2.*i_trial; rtag = 2.*i_trial+1;

% Send left sub-image. l_sub_image = sub_image(lboxi(1):lboxi(2),lboxi(3):lboxi(4)); MPI_Send( left, ltag, comm, l_sub_image );

% Receive right padding. r_pad = MPI_Recv( right, ltag, comm ); work_image(rboxw(1):rboxw(2),rboxw(3):rboxw(4)) = r_pad;

% Send right sub-image. r_sub_image = sub_image(rboxi(1):rboxi(2),rboxi(3):rboxi(4)); MPI_Send( right, rtag, comm, r_sub_image );

% Receive left padding.

75

Page 76: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

l_pad = MPI_Recv( left, rtag, comm ); work_image(lboxw(1):lboxw(2),lboxw(3):lboxw(4)) = l_pad;

end

% Compute convolution. work_image = conv2(work_image,kernel,'same'); % Extract sub_image. sub_image = work_image(cboxw(1):cboxw(2),cboxw(3):cboxw(4));end

% Get end time for the this message.end_time = etime(clock,zero_clock);

% Print the results.total_time = end_time - start_time

% Print compute performance.total_ops;gigaflops = total_ops / total_time / 1.e9;disp(['GigaFlops: ',num2str(gigaflops)]);

% Write data to a file.outfile = ['blurimage.',num2str(my_rank),'.mat'];% save(outfile,'start_time','end_time','total_time','kernel','sub_image','work_image');% save(outfile,'start_time','end_time','total_time','kernel');

% Finalize Matlab MPI.MPI_Finalize;disp('SUCCESS');

% Don't exist if we are the host.if (my_rank ~= MatMPI_Host_rank(comm)) exit;end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Copyright 2002 Massachusetts Institute of Technology% % Permission is herby granted, without payment, to copy, modify, display% and distribute this software and its documentation, if any, for any% purpose, provided that the above copyright notices and the following% three paragraphs appear in all copies of this software. Use of this% software constitutes acceptance of these terms and conditions.%% IN NO EVENT SHALL MIT BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,% SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF% THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF MIT HAS BEEN ADVISED OF THE% POSSIBILITY OF SUCH DAMAGE.% % MIT SPECIFICALLY DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTIES INCLUDING,% BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS% FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.%

76

Page 77: AMBIENTE EXPRESSO PARA PROCESSAMENTO DISTRIBUÍDO COM MATLAB

% THIS SOFTWARE IS PROVIDED "AS IS," MIT HAS NO OBLIGATION TO PROVIDE% MAINTENANCE, SUPPORT, UPDATE, ENHANCEMENTS, OR MODIFICATIONS.

77