Cluster Beowulf

No seguimento deste artigo encontra-se a "construção" de um super computador, um cluster Beowulf.

[ Hits: 169.320 ]

Por: José Luiz Costa Neto em 25/01/2008


Instalando o MPI/MPICH



Salvar o arquivo mpich.tar.gz na pasta /usr/local. Execute as seguinte linha de comando:

# tar -zxvf mpich.tar.gz
# cd /usr/local/mpich-1.2.7
# ./configure --prefix=/usr/local
# make
# make install


Testando aplicação em MPI

# cd /usr/local/examples

Código em C:

O código fonte utilizado em nossa aplicação foi o cpi.c, que calcula o valor aproximado de Pi. O mesmo é incluso no pacote mpich.tar.gz, localizado em #usr/local/mpich-1.2.7/examples/basic.

#include "mpi.h"
#include <stdio.h>
#include <math.h>

double f( double );
double f( double a )
{
    return (4.0 / (1.0 + a*a));
}

int main( int argc, char *argv[])
{
    int done = 0, n, myid, numprocs, i;
    double PI25DT = 3.141592653589793238462643;
    double mypi, pi, h, sum, x;
    double startwtime = 0.0, endwtime;
    int  namelen;
    char processor_name[MPI_MAX_PROCESSOR_NAME];

    MPI_Init(&argc,&argv);
    MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
    MPI_Comm_rank(MPI_COMM_WORLD,&myid);
    MPI_Get_processor_name(processor_name,&namelen);

    fprintf(stderr,"Process %d on %s\n",
       myid, processor_name);

    n = 0;
    while (!done)
    {
        if (myid == 0)
        {
/*
            printf("Enter the number of intervals: (0 quits) ");
            scanf("%d",&n);
*/
       if (n==0) n=100; else n=0;

       startwtime = MPI_Wtime();
        }
        MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD);
        if (n == 0)
            done = 1;
        else
        {
            h   = 1.0 / (double) n;
            sum = 0.0;
            for (i = myid + 1; i <= n; i += numprocs)
            {
                x = h * ((double)i - 0.5);
                sum += f(x);
            }
            mypi = h * sum;

            MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);

            if (myid == 0)
       {
                printf("pi is approximately %.16f, Error is %.16f\n",
                       pi, fabs(pi - PI25DT));
      endwtime = MPI_Wtime();
      printf("wall clock time = %f\n",
             endwtime-startwtime);          
       }
        }
    }
    MPI_Finalize();

    return 0;
}

Compilando código em mpi C:

# mpicc cpi.c -o cpi

Executando o código, observando que o atributo do comando "-np" indica o número de processos que serão distribuídos no cluster.

# mpirun -np 4 cpi
pi is approximately 3.1416009869231254, Error is 0.0000083333333323
wall clock time = 0.000238

Monitoramento cluster

Para monitorar o cluster foi utilizado uma ferramenta chamada bWatch, para instalar esta ferramenta faça:

Copie o arquivo bWatch.tar.gz para a pasta /usr/local. Execute os comandos:

# tar -zxvf bWatch.tar.gz
# cd bWatch-1.1.0
# make bWatch
# bWatch.tcl


Página anterior     Próxima página

Páginas do artigo
   1. Definição
   2. Montagem física do Cluster
   3. Configuração servidor de tempo (NTPD)
   4. Servidor de NFS
   5. Programação Paralela (MPI, MPICH)
   6. Instalando o MPI/MPICH
   7. Resultados e conclusões
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Criando um servidor DNS com o DJBDNS

NGinx - Otimizando Recursos Externos Automaticamente

Instalando Lucent WinModem no Slackware10 sem complicações

Nagios - Instalação e configuração

Como converter sua partição de ext2 para ext3

  
Comentários
[1] Comentário enviado por liviocf em 25/01/2008 - 11:57h

Muito bom esse artigo! Queria saber se vocês tentaram utilizar ferramentas que automatizam a instalação e o gerenciamento do cluster como o OSCAR? E outra: por que usar o Fedora 4 (já bem desatualizado).
Pergunto isso pois tivemos muitos problemas para instalar e configurar nosso cluster do Lab. de Bioinformática da UFAM manualmente! Terminamos usando Fedora 5 e o OSCAR para resolver os problemas!
Mas concordo com vc, ainda é difícil encontrarmos informações completas sobre o assunto!
E uma das grandes aplicações de cluster no momento é em pesquisas de bioinformática, pois existe uma demanda cada vez maior para isso!!

Parabéns pelo artigo e gostaria de trocar mais informações sobre esse assunto!!

[2] Comentário enviado por infoslack em 25/01/2008 - 14:31h

ué, cadê os Resultados??? So tem:

Problemas encontrados
Considerações finais
Referências bibliográficas
Desenvolvimento e agradecimentos

[3] Comentário enviado por removido em 25/01/2008 - 14:45h

amigo jedi_soft, sei que não é da minha conta, mas o texto acima me pareceu muito bem explicado, já que não se trata de um cluster montado por uma grande equipe de pesquisadores... Porém nosso amigo joseluiz fez oque muitos de nós não teriam "coragem" e/ou "computadores" de fazer. Isso foi uma feliz êxperiencia, parabéns colega joseluiz, tá certo os outros amigos não querião um resultado com números gráficos e tabelas né?!

um forte abraço, até mais.

[4] Comentário enviado por nigthwing em 25/01/2008 - 15:55h

Uma dúvida:
O programa de exeplo utiliza a mpi. è necessário que todo programa que se utilize do cluster seja feito com a mpi?
Programas de processamento já criados sem a MPI se beneficiam do cluster?

[5] Comentário enviado por infoslack em 25/01/2008 - 16:48h

vanguarda, amigo so falei pq parece que quando ele foi publicar o artigo aki no vol, esqueceu de botar essa parte.. com certeza ele ia falar dos resultados dos teste perguntei isso pq tem o titulo:
Resultados e conclusões

foi so curiosidade mesmo, mas que o artigo ta ótimo com certeza ta!!

abraço!!


[6] Comentário enviado por joseluiz em 25/01/2008 - 17:01h

Caro nigthwing, é necessário a instalação dos pacotes mpi em todas os que fazem parte do mesmo.

No caso dos programas ja criados sem o mpi seria necessário vc estar fazendo algumas alterações no fonte, para que eles utilizem o mpi, que com certeza ganhara muito em sua performance

[7] Comentário enviado por joseluiz em 25/01/2008 - 17:06h

jedi_soft, desculpe-me pela falha do mesmo.. Talvez tenha me expressado mal no tópico...
Mas os resultados foram o seguinte.... Em uma aplicação de calculo para achar o intervalo de Pi com intervalo de 999999999. sendo executado em cluster foi encontrado o resultado em clock time = 0.000238 com uma taxa de erro de 00000000000987.00 ... E sendo executado em apenas 1 estação chegamos no resultado clock time = 0.089638 com uma taxa de erro de 00000000456987.00

[8] Comentário enviado por removido em 02/02/2008 - 12:59h

Olá joseluiz gostaria de parabeniza-lo pelo artigo, tenho uma duvida, ao executar o bWatch ele so apresenta Master com Num Users 2 isso é normal ele não deveria apresentar o Master e o Slave1?

[9] Comentário enviado por removido em 02/02/2008 - 16:55h

..Muito beleza seu artigo!
So lembrando ao amigo fonsecaf7 que para que apareça o nome
dos Slaves vc tem que por os nomes dos nós no arquivo .bWatchrc.tcl nas 1ª linhas do aquivo.Assim
set bWatchrcVersion 1.1.0a
set listOfHosts {Master nó01 nó02 nó02 etc..}

[10] Comentário enviado por gpr.ppg.br em 05/06/2008 - 01:28h

por curiosidade, gostaria de saber se o Cluster Beowulf, ajudaria no uso para renderizar comerciais?
ou para servidor web?

[11] Comentário enviado por sergin1rn em 19/08/2009 - 00:01h

Amigos que se interessaram pelo cluster.
Os resultados que o inforslack queria, acredito que seria o seguinte:
cluster@master:~$ mpirun -np 4 cpi
Process 2 on master
Process 0 on master
Process 1 on slave
Process 3 on slave
pi is approximately 3.1416009869231245, Error is 0.0000083333333314
wall clock time = 0.000278
cluster@master:~$

Obtive este resultado seguindo o tutorial deste site http://www.lca.ufms.br/ClusterDebian/
Mas seu artigo está muito bom mesmo o seu artigo!
Pena não ter visto ele anteriormente.

Parabéns!

[12] Comentário enviado por leandrojapa em 19/04/2010 - 15:07h

Boa tarde joseluiz..seguinte...estou precisando configurar um cluster na facudade e estou com problemas..
ja testei em casa com maquinas virtuais e esta tudo Ok.Mas quando vou executar um programa e vai mandar para os outros nós ele da um erro de execução : error mpirun :cannot run cpi in no1 :no such file directory ..
ja tentei varias maneiras, acho q o erro esta na resolução de nomes mas nao tenho certeza pois ja refiz tudo varias vezes e sempre continua esse erro..alguem pode me ajudar por favor ??
estou precisando com urgencia..fico mto grato..

[13] Comentário enviado por diogodf em 11/04/2012 - 08:33h

otimo artigo, bem esclarecedor, esse tipo de material é bem dificil de se encontrar na net. parabens!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts