Imprimir

Clusters Beowulf/PVM en Linux

En 1994 la NASA construyó un cluster bajo Linux con hardware barato, con 16 procesadores 486 conectados mediante una red local Ethernet, con el objetivo de conseguir alto rendimiento. Para ello se utilizó computación paralela por lo que los programas (escritos en C y Fortran) estaban paralelizados, es decir, utilizaban librerías de Message Passing (PVM y MPI) para que los procesos se ejecutasen en múltiples procesadores siguiendo el paradigma master/esclavo. El proyecto se llamó Beowulf y fue un gran éxito, por lo que actualmente cualquier sistema similar se denomina cluster tipo Beowulf.

La máquina virtual paralela PVM (Parallel Virtual Machine, csm.ornl.gov/pvm/pvm_home.html) permite realizar computación paralela y estará formada por todos los nodos en los que esté activo el demonio pvmd. Consta de los siguientes componentes:

  • el demonio pvmd.
  • el archivo de configuración ~/pvm.hosts.
  • la consola interactiva de PVM (pvm) y su frontal gráfico XPVM (xpvm).
  • las librerías PVM.
  • las herramientas de desarrollo (aimk...).

17 Comentarios en “Clusters Beowulf/PVM en Linux”

  • Darius dice:

    Demasiado bueno gracias!!, hacia falta una explicacion como esta en la web….
    Pero no me sirvio el comando para agregar slave1, me dice que no existe el fichero :s.

  • crash-n-burn dice:

    Darius, comprueba la configuración del archivo pvm.hosts y que los nombres de los nodos utilizados en pvm.hosts están en /etc/hosts.

  • Salomón Rincón dice:

    Soy muy nuevo usando pvm, sólo tengo una máquina (el master) sin esclavos y estoy intentando ejecutar los ejemplos pero al ejecutar hello me da esta salida
    pvm> spawn -> hello
    spawn -> hello
    [1]
    0 successful
    No such file
    pvm>
    Tengo algo mal configurado? que debo verificar?
    Saludos y gracias

  • crash-n-burn dice:

    Salomón, si no te funciona es que tienes algo mal configurado, tendrás que verificarlo todo. Comprueba la configuración, verifica el código fuente de hello y hello_other, prueba con los ejecutables ya compilados, prueba con otros ejemplos, googlea… Ánimo.

  • Salomón Rincón dice:

    He encontrado cual era mi problema. La carpeta examples la descomprimi en mi home, de ahi compile los ejemplos y generé los ejecutables. Esto creó la carpeta LINUX (y dentro de ella los ejecutables). El problema es que esa carpeta fue creada al mismo nivel de la carpta examples y debe estar dentro de /usr/lib/pvm3/bin ya que aparentemente ahi es en donde busca los ejecutables la consola pvm. En resúmen, el problema se soluciona teniendo los ejecutables en la ruta /usr/lib/pvm3/bin/LINUX
    Por si a alguien mas le sirve.
    Saludos

  • Roberto dice:

    Bueno, pues yo tengo un problema, para empezar soy nuevo en esto. Ya instalé PVM y PVM DEV a lo mismo XPVM, todo esta en Ubuntu 7.10 pero al momento de ejucutar PVM me marca un error que dice:
    libpvm [pid13828] /tmp/pvmd.0: No such file or directory
    libpvm [pid13828]: Console: Can’t start pvmd

    no sé como arreglar esto, me podrían ayudar por favor GRACIAS!!!

  • QuarK dice:

    Muy buenas, he seguido los pasos, en su día me funcionó a la primera, pero ahora no sé por qué pero no se comunicaban las dos máquinas que uso, me he instalado y configurado el ssh server, pero cuando hago: ssh host, me pide la contraseña igualmente.. al igual que cuando hago add host…
    ¿te ha pasado algo parecido? ¿tienes alguna idea de lo que pueda ser?
    Muchas gracias por tu tiempo.

  • crash-n-burn dice:

    QuarK, tienes que configurar el servidor SSH en los esclavos para que acepten conexiones desde el master sin pedir password ni pass-phrase. Y recuerda que para que no te pida password debes ejecutar los comandos en el master en la misma terminal en la que has activado ssh-agent. Más info en conexión remota segura con SSH.

  • Giover dice:

    libpvm [pid13828] /tmp/pvmd.0: No such file or directory
    libpvm [pid13828]: Console: Can’t start pvmd

    Tambien me aparece el mismo error luego de instalar el pvm.
    Estoy haciendolo el Debian, alguien tiene alguna idea? porfavor.

  • xavi dice:

    He seguido tu guía, para la configuración del pvm, pero me quedo estancado al añadir los esclavos, esto es lo que obtengo al intentar añadir-lo. El el esclavo el pvmd esta funcionando y la variables de entorno, están correctamente cargadas; además el ssh está correctamente configurado

    pvm> add node1
    add node1
    0 successful
    HOST DTID
    node1 No such host

  • Juan CLaudio dice:

    Muy buena es decir excelente guia
    Tuve que realizar lo mismo para la Universidad el año pasado pero no habia tanta info, asi que con mis compañeros de clases sufrimos harto xDDd
    Con esta guia esta todo claro y paso a paso to perfect te felicito.
    Para los que no hayan realizado esto, es bastante entretenido realizarlo y se aprende harto
    saludos

  • PAco dice:

    Hola, tengo problemas al aniadir un nodo.
    Al poner add slave1 me regresa:
    add slave1
    terminado
    y sale de pvm y no lo agrega
    que hago???

  • mvr1981 dice:

    Muchas gracias, aunque no tengo los conocimientos necesarios de Linux, voy a intentar crear un cluster, me gusta la idea, y será la oportunidad para aprender algo mas.

  • Tamara dice:

    Hola, tengo el mismo problema que tenía PAco:

    Al poner add host me devuelve:
    Terminado y sale del pvm.
    ¿Qué puedo hacer? PAco, ¿lo pusiste soluccionar al final? ¿Cómo?
    Muchas gracias,

  • alguien a quien le funciono (loretito) dice:

    errno=10 => tienes que llamar el pvm como sudo [=B]
    errno=22 => me parce que se me fue cuando cambie el localhost por el nombre del maestro y (importante) reinicie

    fe de erratas: primero hacer el paso de de “/etc/hosts” y luego el “add slave”y antes de usar scp usuario @ esclavo, es decir primero

    127.0.0.1 localhost
    192.168.0.200 master
    192.168.0.201 slave1
    192.168.0.202 slave2
    192.168.0.203 slave3

    i despues pvm> add slavel

    Suerte a todos

    —————-

    static char rcsid[] =
    “$Id: hello.c,v 1.2 1997/07/09 13:24:44 pvmsrc Exp $”;

    /*
    * PVM version 3.4: Parallel Virtual Machine System
    * University of Tennessee, Knoxville TN.
    * Oak Ridge National Laboratory, Oak Ridge TN.
    * Emory University, Atlanta GA.
    * Authors: J. J. Dongarra, G. E. Fagg, M. Fischer
    * G. A. Geist, J. A. Kohl, R. J. Manchek, P. Mucci,
    * P. M. Papadopoulos, S. L. Scott, and V. S. Sunderam
    * (C) 1997 All Rights Reserved
    *
    * NOTICE
    *
    * Permission to use, copy, modify, and distribute this software and
    * its documentation for any purpose and without fee is hereby granted
    * provided that the above copyright notice appear in all copies and
    * that both the copyright notice and this permission notice appear in
    * supporting documentation.
    *
    * Neither the Institutions (Emory University, Oak Ridge National
    * Laboratory, and University of Tennessee) nor the Authors make any
    * representations about the suitability of this software for any
    * purpose. This software is provided “as is” without express or
    * implied warranty.
    *
    * PVM version 3 was funded in part by the U.S. Department of Energy,
    * the National Science Foundation and the State of Tennessee.
    */

    #include
    #include “pvm3.h”

    main()
    {
    int cc, tid;
    char buf[100];

    printf(”Soy la tarea t%x\n”, pvm_mytid());

    cc = pvm_spawn(”hello_other”, (char**)0, 0, “”, 1, &tid);

    if (cc == 1) {
    cc = pvm_recv(-1, -1);
    pvm_bufinfo(cc, (int*)0, (int*)0, &tid);
    pvm_upkstr(buf);
    printf(” respuesta de la tarea t%x: %s\n”, tid, buf);

    } else
    printf(”No se ha podido lanzar hello_other\n”);

    pvm_exit();
    }

    —————-

    y esta sería la equivalente versión “ligeramente traducida” de hello_other.c:

    —————-

    static char rcsid[] =
    “$Id: hello_other.c,v 1.2 1997/07/09 13:24:45 pvmsrc Exp $”;

    /*
    * PVM version 3.4: Parallel Virtual Machine System
    * University of Tennessee, Knoxville TN.
    * Oak Ridge National Laboratory, Oak Ridge TN.
    * Emory University, Atlanta GA.
    * Authors: J. J. Dongarra, G. E. Fagg, M. Fischer
    * G. A. Geist, J. A. Kohl, R. J. Manchek, P. Mucci,
    * P. M. Papadopoulos, S. L. Scott, and V. S. Sunderam
    * (C) 1997 All Rights Reserved
    *
    * NOTICE
    *
    * Permission to use, copy, modify, and distribute this software and
    * its documentation for any purpose and without fee is hereby granted
    * provided that the above copyright notice appear in all copies and
    * that both the copyright notice and this permission notice appear in
    * supporting documentation.
    *
    * Neither the Institutions (Emory University, Oak Ridge National
    * Laboratory, and University of Tennessee) nor the Authors make any
    * representations about the suitability of this software for any
    * purpose. This software is provided “as is” without express or
    * implied warranty.
    *
    * PVM version 3 was funded in part by the U.S. Department of Energy,
    * the National Science Foundation and the State of Tennessee.
    */

    #include “pvm3.h”
    #include
    #include

    main()
    {
    int ptid;
    char buf[100];

    ptid = pvm_parent();

    strcpy(buf, “hello, world from “);
    gethostname(buf + strlen(buf), 64);

    pvm_initsend(PvmDataDefault);
    pvm_pkstr(buf);
    pvm_send(ptid, 1);

    pvm_exit();
    exit(0);
    }

    —————-

    Para compilar cada uno de ellos podríamos usar “aimk” o simplemente una línea de comandos como ésta:

    cc hello.c -o hello -lpvm3

    y lo mismo para el otro fuente:

    cc hello_other.c -o hello_other -lpvm3

  • Guille dice:

    Buenas
    Ya se que es muy tarde para hacer este comentario pero ayer encontré esta página navegando…
    Está genial el tutorial. Para PAco y Tamara (aunque ya sea tarde) pero en general para los que tengan el problema con el mensaje “Terminado” al añadir un host los pasos a seguir (por lo menos los que a mi me sirvieron) son los siguientes:
    - En el fichero /etc/hosts en vez de dejar la direccion de la máquina por defecto (127.0.0.1) cambiadla por la IP que tiene la máquina en la red
    - Si con este paso sigue sin funcionar puede ser un problema con rsh.

  • Qver dice:

    SOLUCION DE ALGUNOS ERRORES

    Error cuando:
    libpvm [pid13828] /tmp/pvmd.0: No such file or directory
    libpvm [pid13828]: Console: Can’t start pvmd

    Solucion:
    Verificar el archivo /etc/hosts en cada nodo
    o si lo editaste regresalo a como estaba con anterioridad

    Error cuando:
    pvm> spawn -> hello
    spawn -> hello
    [1]
    0 successful
    No such file

    Solucion: Verificar que esten los ejecutables y que esten bien definidas las variables de entorno en el archivo .bashrc
    Solucion2: intenta nuevamente el spawn, suele pasar que aveces no los ejecuta

    Error cuando:

    “Master Host IP Address is Loopback!”

    Solucion: Verifica nuevamente el archivo /etc/hosts que el nombre del host no apunte a 127.0.0.1 unicamente algo como “127.0.0.1 localhost.localdomain localhost”

    Solucion 2: usa el comando #:pvm -n(ip del master)
    ej: #pvm -n192.168.1.1

    Podran ahora agregar hosts con el comando “add slave” y ya no dira que es loopback

Deja un comentario