Introduction: Dragonboard Cluster

  • 2 ou mais Dragonboards
  • 2 ou mais cartoes SD

  • Um roteador

Step 1: Instalacao Do MPICH

Antes da instalação do MPICH, você ira precisar do Fortran:

  • sudo apt install gfortran

MPICH precisa de três diferentes pastas:

  1. A primeira para fazer download e extrair o código fonte
  2. A segunda para compilar o código
  3. A terceira servira para o caminho da instalação.

Sendo assim, podemos crias as pastas assim:

  • sudo mkdir /opt/mpi
  • sudo mkdir /opt/mpi-dl
  • sudo mkdir /opt/mpi-build

Acesse a pasta de download:

  • cd /opt/mpi-dl

Faca o download do MPICH diretamente do site oficial do MPICH, por exemplo:

Mude para algum link com versão mais recente caso exista.

Extraia os arquivos necessários:

  • tar zxvf mpich-3.3.tar.gz

Acesse a pasta de compilação:

  • cd /opt/mpi-build

Rode o processo de configuração:

  • sudo /opt/mpi-dl/mpich-3.3/configure --prefix=/opt/mpi
    Isso pode demorar alguns minutos, entao seja paciente...

Use o make para compilar:

  • sudo make
    Isso pode demorar um pouco... Então, pode ir jogar uma partida de Fortnite, depois volte e veja se tudo ocorreu ok.

Finalmente, você pode instalar com:

  • sudo make install

Quando finalizado, cheque se tudo esta correto com esse comando:

  • /opt/mpi/bin/mpiexec -n 1 date

Step 2: Instalacao Do MPI4PY

Instale algumas dependências com:

  • sudo apt install python-pip python-dev libopenmpi-dev

Instale o MPI4PY com o pip:

sudo pip install mpi4py

Crie um arquivo teste em python, por exemplo:

  • cd /home/linaro
  • nano test.py

E digite uma linha de código para testar:

  • print("Quero passar em SD")

Teste se o seu codigo esta rodando:

  • python test.py

Agora, teste o codigo com o MPI:

  • /opt/mpi/bin/mpiexec -n 4 python test.py
    Isso serve apenas para testar o sistema, e deve imprimir a frase "Quero passar em SD" 4 vezes

Step 3: Duplique Esse Cartao SD

  • Remova o cartão SD da Dragonboard e coloque em um computador Windows.
  • Duplique esse cartão como uma imagem, para isso você pode utilizar o https://sourceforge.net/projects/win32diskimager/
  • Remova o cartão do PC e insira um vazio, grave nele a imagem salva no ultimo item. Faca isso para todos os cartões SD que você ira utilizar.

Pronto, passo feito! Vamos para o proximo.

Step 4: Inicie E Conecte Todas As Dragonboards

    • Coloque os cartoes SD em cada Dragonboard e as ligue, lembre de conectar cada uma na mesma rede
    • Entre na Dragonboard principal (o nó mestre) por SSH
    • Descubra os ips das outras dragonboards com o comando:
      • nmap -sP 192.168.1.* | grep master

    Agora voce deve ter todos os ips dos outros nos listados, iremos salvar eles em um arquivo:

    • cd /home/linaro
    • nano nodesips

    Escreva agora os ips listados acima, no meu caso, são:

    192.168.1.15

    192.168.1.16

    192.168.1.17

    192.168.1.18

    A partir do nó mestre, acesse cada uma das Dragonboards e mude o hostname delas:

    • ssh linaro@192.168.1.18
      Mude para o ip de cada dragonboard, responda yes para cada uma e insira a senha do SSH
    • Entre nas opcoes de rede e mude o hostname para, por exemplo No1, No2, etc...
    • Saia do ssh com: exit

    No nó mestre, crie uma chave SSH:

    • ssh-keygen -t rsa

    Para cada nó, copie essa chave com:

    • scp /home/linaro/.ssh/id_rsa.pub pi@192.168.1.18:/home/pi/master.pub

      Lembre de mudar o ip para cada nó!

    Acesse cada nó e salve essa chave como uma chave autorizada:

    • ssh linaro@192.168.1.18
    • cat master.pub >> .ssh/authorized_keys exit

    Pronto! Seu cluster está pronto e configurado.

    Step 5: Teste Seu Cluster

    Execute o comando:

    • /opt/mpi/bin/mpiexec -f nodesips -n 2 hostname

    Mude 2 para o numero de nós que você possui.

    Para testar o código python que criamos mais cedo, podemos executar:

    • /opt/mpi/bin/mpiexec -f nodesips -n 2 python test.py

    Novamente, troque 2 pelo numero de nós que você possui!

    Pronto, tudo certo!