¿Qué es un Cluster Beowulf?
Un Cluster Beowulf es un conjunto de ordenadores conectados en red privada que
puede ser utili...
Una de las máquinas será el nodo maestro, esta es la máquina desde la que podrás
controlar el cluster y ejecutar los progr...
En Debian, esto se puede hacer como root con:
$ Apt-get install openssh-cliente
Mientras está conectado como mpiuser , cre...
que se pasan se pasan a su normal 'C' del compilador.
Si desea utilizar mpicc para compilar "C" fuente de un archivo llama...
# Include # include # include <stdlib.h> <mpi.h> int main (int argc,
char * argv []) {int MASTER const = 0; const int TAG_...
¿Dónde puedo encontrar más información?
¿Dónde puedo encontrar más información?
Upcoming SlideShare
Loading in...5
×

Qué es un cluster beowulf

296

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
296
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Qué es un cluster beowulf "

  1. 1. ¿Qué es un Cluster Beowulf? Un Cluster Beowulf es un conjunto de ordenadores conectados en red privada que puede ser utilizado para el cálculo paralelo. Se componen de productos de hardware con software de código abierto como Linux o BSD uno, a menudo junto con PVM (Parallel Virtual Machine) o MPI (Message Passing Interface). Un estándar creado consistirá en un nodo principal que controlará una serie de nodos esclavos. Los nodos esclavos están normalmente sin cabeza y en general todos los accesos a los mismos archivos desde un servidor. Han sido denominados clusters Beowulf desde antes de 1998, cuando el original Cómo Beowulf fue puesto en libertad. ¿Qué es MPI abierta? Open MPI es una de las principales implementaciones de MPI-2 utilizado por muchos de los superordenadores TOP 500. Es de código abierto y es desarrollado y mantenido por un consorcio de, académicas, de investigación y socios industriales. El proyecto Open MPI tiene el objetivo declarado de crear el mejor Message Passing Interface (MPI), la colección disponible, que a juzgar por el lugar donde se utiliza, yo diría que está bien en su manera de hacer. La principal forma en que se utiliza es para iniciar un programa desde el nodo principal y especificar cuántos procesos que desea utilizar, el programa se pone en marcha para cada uno de estos procesos si se trata en el mismo equipo o en varios equipos. Los procesos pueden comunicarse con la biblioteca MPI y todos los datos enviados a STDOUT de los nodos esclavos se canaliza a STDOUT en el nodo maestro. Configuración de las máquinas Estoy haciendo varias suposiciones en este artículo: • Usted tiene por lo menos dos máquinas conectadas a través de una red TCP / IP. • Cada máquina está usando la misma arquitectura de procesador, para facilitar su • participación en programas ejecutables. Las máquinas tienen Linux instalado. Cada máquina tiene un inicio de sesión nombre de usuario común, • como mpiuser . Me voy a referir a la entrada común mpiuser para el resto de este artículo. Cada máquina tiene mpiuser de compartir la carpeta misma casa, generalmente a • través de NFS, o tiene las partes pertinentes de la carpeta de inicio sincronizado, tal vez con rsync . Me referiré a cada uno de los nodos esclavos como SLAVE1 , SLAVE2 , etc, sin • embargo, puede elegir cualquier nombre de host que desee.
  2. 2. Una de las máquinas será el nodo maestro, esta es la máquina desde la que podrás controlar el cluster y ejecutar los programas. Los otros nodos se conoce como esclavos. Instalación y configuración de MPI abierta a todos los nodos En Debian Lenny es necesario instalar los siguientes paquetes: • openmpi-bin • openmpi-common • libopenmpi1 • libopenmpi-dev (No es realmente necesario para un nodo esclavo.) Esto se puede hacer como root, en Debian, con: $ Apt-get install openmpi openmpi-bin-common-dev libopenmpi1 libopenmpi Los nombres pueden variar en su distribución, pero lo más importante es recordar que usted debe tener la misma versión de Open MPI en todas las máquinas, para que funcione correctamente. En Debian Lenny, el MPI ejecutables Abrir instalar en / usr / bin . Si se instalan en una ubicación diferente, entonces usted tendrá que asegurarse de que este lugar está en el PATH para mpiuser . También puede ser necesario para asegurar que los puntos de LD_LIBRARY_PATH a / usr / lib Los nodos esclavos Para que el nodo maestro puede controlar los nodos esclavos, cada nodo esclavo necesita un servidor SSH instalado. En Debian, instale el siguiente paquete: • openssh-server En Debian, esto se puede hacer como root con: $ Apt-get install openssh-server Master Nodo Configuración de SSH Antes de continuar con la creación de Open SSH , por favor vaya a su sitio. Hago entrega de la información suficiente aquí para obtener el trabajo del clúster y no hacen garantías en cuanto a qué tan seguro es este método. Para poder controlar los nodos esclavos desde el nodo principal que necesita un cliente SSH instalado. En Debian, instale el siguiente paquete: • openssh-cliente
  3. 3. En Debian, esto se puede hacer como root con: $ Apt-get install openssh-cliente Mientras está conectado como mpiuser , crear pública SSH / pares de clave privada con contraseña: ! h475k2 4553ffe (Elige tu propia contraseña) utilizando el archivo: / home / mpiuser / .ssh / id_dsa . dsa $ ssh-keygen-t Asegúrese de que cada equipo sabe que este usuario está autorizado a acceder a ellos. $ Cp / home / mpiuser / .ssh / id_dsa.pub / home / mpiuser / .ssh / authorized_keys Si no está compartiendo el / home / mpiuser carpeta continuación, asegúrese de que cada nodo esclavo sabe que mpiuser en el nodo principal está autorizado a acceder a ellos. Para SLAVE1 uso: $ Scp / home / mpiuser / .ssh / id_dsa.pub mpiuser @ SLAVE1: .ssh / authorized_keys Corregir permisos de archivo (Esto también tendrá que hacerse en los nodos esclavo si no compartir la carpeta de inicio): $ Chmod 700 / home / mpiuser / .ssh $ Chmod 600 / home / mpiuser / .ssh / authorized_keys Para probar que esto ha funcionado tratar de usar SSH para conectarse a sus esclavos del amo, con la contraseña que introdujo al crear los pares de clave anterior: $ Ssh SLAVE1 Configuración de MPI Abierto Para que Open MPI sabe que las máquinas para ejecutar sus programas, usted puede crear un archivo para guardar esto. Voy a llamar a este archivo / home / mpiuser / .mpi_hostfile y podría contener lo siguiente: # El HOSTFILE para Open MPI # El nodo maestro, ranuras = 2 se utiliza porque es una máquina con procesador dual. ranuras localhost = 2 # Los nodos esclavos siguientes son máquinas de un solo procesador: SLAVE1 SLAVE2 slave3 Compilación de programas OpenMPI se puede utilizar con una variedad de idiomas, dos de los más populares son FORTRAN y "C". Si los programas están escritos en 'C', entonces usted puede utilizar mpicc en lugar de su habitual "C" del compilador o puede pasar los argumentos adicionales directamente al teléfono de la 'C' del compilador. Con mpicc los argumentos
  4. 4. que se pasan se pasan a su normal 'C' del compilador. Si desea utilizar mpicc para compilar "C" fuente de un archivo llamado testprogram.c : $ Mpicc testprogram.c Si quieres ver lo que va a pasar a su 'C' de compilador al compilar y enlazar: $ Mpicc-showme Ejecución de programas en el clúster Asegúrese de que SSH no pide una contraseña Porque Open MPI utilizará SSH para conectarse a cada una de las máquinas y ejecutar el programa, usted necesita asegurarse de que la contraseña no tiene que ser introducido para cada conexión. El uso de ssh-agent para recordar la contraseña mientras está conectado como mpiuser : $ Eval `ssh-agent» Dile a ssh-agent la contraseña de la clave SSH: $ Ssh-add ~ / .ssh / id_dsa Prueba entrando en uno de los nodos esclavos, mientras está conectado como mpiuser, lo que no debe pedir una contraseña: $ Ssh SLAVE1 A partir de un programa en el clúster Usted puede iniciar un programa en una sola máquina, y la tengan en ejecutar en varios procesadores / núcleos. Esto es útil si usted tiene una máquina potente o la depuración / pruebas de un programa. Alternativamente, puede ejecutar el programa en el clúster y solicitar tantos procesos como desea que se ejecute sobre él. Para ejecutar myprogram en dos procesos en el equipo local: mpirun-np 2. / myprogram Para ejecutar myprogram más de cinco procesos en el grupo con el . mpi_hostfile creado anteriormente (Tenga en cuenta que myprogram debe estar en el mismo lugar en cada equipo): mpirun-np 2 -. HOSTFILE mpi_hostfile / myprogram. Un Programa de Ejemplo de prueba El siguiente programa le enviará un número al azar desde el nodo maestro para todos los nodos esclavos.
  5. 5. # Include # include # include <stdlib.h> <mpi.h> int main (int argc, char * argv []) {int MASTER const = 0; const int TAG_GENERAL = 1; numTasks int, int rango; int fuente; dest int; int cuenta;; int rc dataWaitingFlag int; inMsg char; outMsg char; Est. MPI_Status; / / Inicializa el MPI pila. Esto también pasará 'argc' y 'argv' a cada uno de los nodos esclavos. MPI_Init (& argc, & argv); / / Pone el número de tareas y procesos que este programa se está ejecutando en numTasks MPI_Comm_size (MPI_COMM_WORLD, y numTasks); / / Obtiene el rango (proceso / número de tarea) que este programa se está ejecutando en MPI_Comm_rank ( MPI_COMM_WORLD, y clasificación); / / Si el nodo maestro si (clasificación == MASTER) {/ / Enviar mensajes a todos los sub-procesos (dest = 1; dest numTasks <; dest + +) {outMsg = rand ()% 256 / / Generar un mensaje al azar para enviar a los nodos esclavo / / Enviar un mensaje a la RC destino = MPI_Send (y outMsg, 1, MPI_CHAR, dest, TAG_GENERAL, MPI_COMM_WORLD); printf ("% Tarea d:% de mensajes enviados d para tarea% d con etiquetas% d n ", rango, outMsg, dest, TAG_GENERAL);}} / / ventas un nodo esclavo else {/ / Espera hasta que un mensaje se haya recibido MPI_COMM_WORLD do {MPI_Iprobe (MASTER, 1, e dataWaitingFlag, MPI_STATUS_IGNORE); printf ("Esperando n");} while (dataWaitingFlag);! / / Obtener el mensaje y ponerlo en rc 'inMsg' = MPI_Recv (y inMsg, 1, MPI_CHAR, MASTER, TAG_GENERAL, MPI_COMM_WORLD, y Stat); / / Obtener el tamaño del mensaje y ponerlo en rc 'count' = MPI_Get_count (y Stat, MPI_CHAR, y cuenta); printf ("% Tarea d: Recibido% d caracteres (s) (% d) de la tarea% d con etiquetas % d n ", rango, contar, inMsg, Stat.MPI_SOURCE, Stat.MPI_TAG);} MPI_Finalize ();} Si guarda el código fuente de arriba para un archivo llamado testprogram.c luego compilarlo con: $ Mpicc testprogram.c A continuación, ejecute cualquiera de más de 20 procesos en la máquina local: mpirun-np 20. / a.out O más de 5 procesos en el clúster: mpirun-np 5 - HOSTFILE mpi_hostfile / a.out.. Usted debe ver en el nodo maestro que la salida a STDOUT de los nodos esclavos se redirige a STDOUT en el nodo maestro. El nodo maestro es la salida lo que es el envío y cada nodo esclavo de salida lo ha recibido o si se está esperando. Una vez que cada nodo ha terminado, el nodo maestro se cerrará y volverá a la línea de comandos.
  6. 6. ¿Dónde puedo encontrar más información?
  7. 7. ¿Dónde puedo encontrar más información?

×