26 de junho de 2012

Convite para Defesa de Projeto de TCC

Nesta sexta-feira (29/06), ocorre a defesa do projeto do Trabalho de Conclusão de Curso  de dois integrantes do GEMPP.  Os alunos Arthur  (Orientado pela Prof. Márcia Cera e Co-orientação de Fábio Rossi) e Henrique (Orientado pela Prof. Márcia Cera), irão defender seus projetos. Ambos  estão trabalhando com programação paralela.

O aluno Arthur está trabalhando com programação paralela para memória distribuída (MPI-1 e MPI-2) enquanto que o aluno Henrique está trabalhando com programação paralela em memória compartilhada através da API OpenMP.


Fica a dica para o pessoal que participa do GEMPP, e a todos que se interessam pela área. No link abaixo podem ser encontradas maiores informações.

https://docs.google.com/spreadsheet/pub?key=0AsL79aha84XEdDFNN2N2OHphQk5QMHF1RXBLNDNTNFE&single=true&gid=7&output=html
A defesa começará as 17:30 hs na sala 204 com o Arthur, e logo em seguida é a apresentação do Henrique. 

Todos estão convidados a participar da defesa!

16 de junho de 2012

Como Montar seu Cluster Beowulf em Casa

Introdução

      Aqui vai um rápido tutorial para auxiliar na montagem de um cluster caseiro. Este tutorial foi montado após a instalação do Cluster Beowulf do GEMPP.
      Um cluster é definido como um agregado, conjunto de máquinas para computação paralela distribuída. Cluster é um termo bastante utilizado para definir a utilização de dois ou mais computadores independentes, interligados via rede, que trabalham em conjunto trocando informações entre si em torno de uma única tarefa.
      Os cluster são divididos em:
  • Alta Disponibilidade: Mantém um serviço de forma estável pelo maior tempo possível.
  • Alta Performance: O cluster é designado para prover grande poder computacional.
   Cluster Beowulf são clusters de desempenho escaláveis, baseados numa infraestrutura de hardware comum, rede privada e software 'open source' (Linux).  Para Clusters Beowulf, existe um servidor responsável ("frontend") por controlar todo o cluster, principalmente quanto à distribuição de tarefas e processamento. 

Equipamentos necessários

      Para  montagem do cluster, você precisará ter em mãos:
  • 2 ou mais computadores.
  • CD/DVD de distribuição Linux.
  • Switch.
  • Computadores interligados através do switch.
  • Cabo UTP conectorizado. (De preferência homologado).

Instalação

    Demonstraremos a instalação do cluster, utilizando três computadores (1 frontend, 2 slaves). A instalação do cluster pode ser dividida em duas etapas: a instalação e configuração do servidor; e a instalação e configuração dos nodos "slaves". Primeiro será descrita a configuração necessária para ambos, e depois as configurações separadas.
  • Instalação do Sistema Operacional (em nosso caso, Debian Squeeze, 6.0.5). A instalação deve contemplar somente o sistema básico. (SSH, Servidor Web, ambiente gráfico...) devem ser instalados em separado ao finalizar a instalação.
  • Após a instalação do SO, se faz necessário instalar os pacotes que serão essenciais: 
         SSH: Necessário para acessar os nodos:
                       # apt-get install openssh-server && apt-get install ssh
       GCC e G++: Utilizado para compilação dos códigos fonte:
                      # apt-get install gcc && apt-get install g++
       NFS: Network File System, utilizado para configuração do sistema de arquivos:
                       # apt-get install nfs-kernel-server      


Configuração da Rede:

# vim /etc/network/interfaces 
  •  No servidor:                  auto eth0
                                               iface eth0 inet static
                                               address 172.0.0.2
                                               netmask 255.255.255.0 

                                               network 172.0.0.0
                                               broadcast 172.0.0.255
                                               gateway 172.0.0.1
  • no01:                                 auto eth0
                                               iface eth0 inet static
                                               address 172.0.0.3
                                               netmask 255.255.255.0 

                                               network 172.0.0.0
                                               broadcast 172.0.0.255
                                               gateway 172.0.0.1
     
       
  •  no02:                               auto eth0
                                               iface eth0 inet static
                                               address 172.0.0.4
                                               netmask 255.255.255.0 

                                               network 172.0.0.0
                                               broadcast 172.0.0.255
                                               gateway 172.0.0.1

Configuração do Hostname:

  • Editar o arquivo /etc/hostname inserindo o nome do "nó" caso não possua.

Configuração Hosts:

  • Editar o arquivo /etc/hosts inserindo o nome e ip dos nodos do cluster, por exemplo:
    frontend 172.0.0.2
    no01         172.0.0.3
    no02         172.0.0.4
  • Reiniciar o Serviço: /etc/init.d/networking restart

Configuração NFS:

  •  No Servidor: Editar o arquivo /etc/exports inserindo as seguintes linhas:
    /usr *(rw,sync,no_root_squash)
                                  /lib *(rw,sync,no_root_squash)
                                  /home *(rw,sync,no_root_squash)
  • No Cliente:
    • Montar o NFS: 
      • # mount  frontend:/usr  /usr -t nfs
      • # mount  frontend:/lib  /lib -t nfs
      • # mount  frontend:/home  /home -t nfs
    • Editar o arquivo /etc/fstab inserindo as seguintes linhas: 
    frontend:/usr  /usr  nfs defaults 0 0
    frontend:/lib  /lib  nfs defaults 0 0
    frontend:/home  /home  nfs defaults 0 0
     

SSH sem senha:

  • Repetir o procedimento abaixo para todos os nós.
  •  Gerar chave pública:  # ssh-keygen -t rsa
    • Ao ser perguntado o arquivo onde será salvo, definir:
      • /home/"usuario"/.ssh/id_rsa_"nomedonó" 
  • Copiar todas as chaves geradas de forma concatenada para o authorized_keys.
    •  cat /home/"usuario"/.ssh/id_rsa_"nomedonó" >> /home/"usuario"/.ss/authorized_keys

Instalação MPI no Servidor

  • O MPI deve ser instalado somente no Servidor.
    • # apt-get install libopenmpi-dev
    • # apt-get install mpi-default-bin
  •  O MPI também pode ser instalado manualmente. Para isto, basta baixar o tar.gz do site do openmpi e instalar.                    

Sites e documentos interessantes e que foram utilizados no desenvolvimento deste tutorial:

Referências

NFS -> http://nfs.sourceforge.net/nfs-howto/
OpenMPI -> http://www.open-mpi.org/
Debian -> http://www.debian.org/
Cluster Beowulf -> http://www.infowester.com/cluster.php



A partir de então, é só partir para brincadeira =)
Dúvidas podem ser tiradas através do e-mail af.lorenzon@gmail.com.