Aplicación para operaciones básicas en una matriz de 900x900 usando cluster vía Ethernet en una Red LAN.
Configuración Clúster MPI en Ubuntu.
Primero necesitamos 3 máquinas, con sistema operativo GNU/Linux. Para este caso usaremos Ubuntu 13.10. A su vez, el nombre de usuario de cada nodo, deben llamarse EXACTAMENTE IGUAL. Usaremos el nombre "cluster" (sin comillas). Al mismo tiempo definiermos cada nodo con un nombre de máquina propio.
- Nombre equipo maestro: n13 Ip maestro: 10.1.10.113
- Nombre equipo esclavo: n14 Ip maestro: 10.1.10.114
- Nombre equipo esclavo: n15 Ip maestro: 10.1.10.115
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install gcc g++
sudo apt-get install openmpi-bin openmpi-common
libopenmpi1.3 libopenmpi-dev
sudo apt-get install ssh
sudo apt-get install nfs-kernel-server nfs-common portmap
sudo apt-get install build-essential
- Posicionarse en carpeta cluster
cd /home/ cluster
mkdir .ssh
sudo chmod 777 .ssh
cd ../../
sudo mkdir /mpi
sudo chmod 777 /mpi
cd /mpi
sudo chown user /mpi
- Montar carpeta maestra compartida y en cada nodo cliente ejecutar:
sudo mount 10.1.10.113:/mpi /mpi
sudo gedit /etc/fstab
- Y escribir
10.1.10.113:/mpi /mpi nfs
- Luego
sudo mount –a
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install gcc g++
sudo apt-get install openmpi-bin openmpi-common
libopenmpi1.3 libopenmpi-dev
sudo apt-get install ssh
sudo apt-get install nfs-kernel-server nfs-common portmap
sudo apt-get install build-essential
- Posicionarse en carpeta cluster
cd /home/ cluster
mkdir .ssh
sudo chmod 777 .ssh
cd ../../
sudo mkdir /mpi
sudo chmod 777 /mpi
cd /mpi
sudo chown user /mpi
sudo gedit /etc/hosts
- Y escribimos lo siguiente
127.0.0.1 localhost
# “ip” “usuario” “equipo”
10.1.10.113 cluster n13 # nodo maestro
10.1.10.014 cluster n14 # nodo esclavo 1
10.1.10.015 cluster n15 # nodo esclavo 2
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
- Luego
sudo gedit /etc/exports
- Y escribimos lo suiguiente
# /etc/exports: the access control list for filesystems which may
be exported
# to NFS clients. See exports(5).
gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check )
/mpi *(rw,sync)
sudo service nfs-kernel-server restart
__ ESPERAR A QUE LOS ESCLAVOS MONTEN LA CARPETA __
- Luego
ssh-keygen -t rsa
- Posicionarse en carpeta .ssh
cd /home/cluster/.ssh
cat id_rsa.pub >> authorized_keys
ssh-copy-id 10.1.10.114
ssh-copy-id 10.1.10.115
- Confirmar si el proceso es correcto
ssh 10.1.10.114
Al ingresar al nodo esclavo este no debe pedir contraseña.
-Ingresar a carpeta maestra
cd /mpi
-Clonamos el repositorio e ingresamos a este
git clone https://github.com/cris-gar/cluster_Lad_Cobra
cd /mpi/cluster_Lad_Cobra
-Compilar
mpicc <nomArchivo>.c -o <nomAliasArchivo>
-Ejecutar programa
mpirun -np <numero de hilos> --hostfile /home/hostfile ./<nomAliasArchivo>
- Para revisar el estado de distribuición de carga, recomendamos utilizar htop. Se puede instalar como:
sudo apt-get install htop