Вы находитесь на странице: 1из 5

PORTADA PelicanHPC

Andrea Danti, Fotolia

Cmo convertir nuestra mquina de escritorio en un clster de alto rendimimento con PelicanHPC

DE CAOS A CLSTER
Manejando nmeros enormes con nuestro propio clster computacional de alto rendimiento. POR MAYANK SHARMA
i los usuarios reclaman la potencia de un centro de datos, y el tacao del jefe dice que hay que hacerlo con el hardware que ya tenemos, no hay que perder la esperanza. Con un poco de tiempo, algo de esfuerzo y unas cuantas herramientas de cdigo abierto, se puede transformar un conjunto de insulsas mquinas de escritorio en una supercomputadora capaz de machacar grandes cifras. Perfecto para el impaciente, PelicanHPC Live CD emplea cualquier hardware vlido para montar un clster. Michael Creel desarroll PelicanHPC para sus propios trabajos de investigacin. Creel quera aprender sobre clustering y, debido a que aadir paquetes resultaba tan fcil, aadi PVM, herramientas de clustering como

ganglia monitor y aplicaciones como GROMACS. Incluy adems ejemplos simples de computacin paralela en Fortran, C, Python y Octave para proveer al principiante de algunos ejemplos bsicos. No obstante, el proceso de mantenimiento de una distribucin llevaba su tiempo, especialmente cuando se trataba de actualizar paquetes como el de las X o KDE. Fue entonces cuando Creel descubri Debian Live, invirti algn tiempo en comprender el funcionamiento del paquete live-helper y cre un modo ms sistemtico de hacer una distro Live para clustering. As que, en esencia, PelicanHPC es simplemente un script que se encarga de obtener los paquetes necesarios desde un repositorio de Debian,

aade scripts de configuracin y software de prueba, y devuelve una ISO arrancable.

Arrancar PelicanHPC
Ms adelante usaremos el script para crear una versin personalizada. Por ahora, usaremos la versin (v.1.8) de PelicanHPC publicada en su sitio web [1] para conseguir hacer funcionar varios ncleos a la vez. Estn disponibles ambas versiones, de 32 y 64 bits, por lo que se hace necesario elegir la adecuada al hardware que se emplear. El desarrollador de PelicanHPC asevera que es posible tener un clster funcionando en cinco minutos. Es realidad esto es una completa exageracin se pueden tener en tres.

28

Nmero 52

WWW.LINUX- MAGAZINE.ES

PelicanHPC PORTADA

servidores y de conectar con los nodos esclavos. Para comenzar con la configuracin del clster, abrimos una ventana de terminal e introducimos:
sh pelican_hpc

Figura 1: En caso de que disponga de un monitor, un nodo esclavo muestra este aviso.

Primero hemos de asegurarnos de que disponemos de todos los ingredientes: Una mquina que har de nodo primario y otras que sern los nodos esclavos. La mquina principal y las esclavas se conectan a travs de la red, por lo que deben formar parte de una misma LAN. Aunque es posible conectarlas de forma inalmbrica, dependiendo de la cantidad de datos que vayan a intercambiarse, podran producirse cuellos de botella. Adems, debemos asegurarnos de que el router que conecta la mquina primaria con las esclavas no est ejecutando un servidor de DHCP, ya que la primaria reparte direcciones IP al resto. Aunque no hagan falta monitor ni teclado en ninguna mquina esclava, los necesitaremos en la primaria. Si se dispone de un doble ncleo con suficiente memoria, no es tan descabellada la idea de ejecutar el nodo primario en una mquina virtual y los esclavos en mquinas fsicas. PelicanHPC se ejecuta principalmente en memoria, por lo que hay que disponer de mucha. Si se van a hacer trabajos serios en el clster, se puede configurar ste para que guarde los datos en disco duro, en cuyo caso hara tambin falta uno. De hecho, se puede probar PelicanHPC ejecutndolo completamente en hardware virtual y conexiones de red virtuales, suponiendo que se disponga de la suficiente potencia como para generar tal cantidad de recursos virtuales. Una vez est todo en su sitio, metemos el Live CD en la mquina primaria y la arrancamos con l. Se puede elegir un idioma personalizado, desactivar ACPI o personalizar otras opciones desde los parmetros de arranque. El acceso a los mismos lo proporciona la tecla F1; pulsando Intro son las opciones predeterminadas las que prevalecen. Durante el arranque, PelicanHPC nos pregunta tres cosas. En primer lugar nos pide que seleccionemos un dispositivo de almacenamiento permanente para usarlo como /home. La

opcin predeterminada ram1 almacena los datos en la memoria RAM fsica. Si se opta por una opcin con ms permanencia, slo hay que introducir el dispositivo, como hda1 o sda5. El dispositivo puede ser una particin de disco o un disco USB (slo hay que asegurarse de que su formato es ext2 o ext3). Si reemplazamos la opcin predeterminada ram1 por un dispositivo, PelicanHPC crea un directorio de inicio en el dispositivo especificado. Si es la primera vez que se ejecuta PelicanHPC, querremos elegir Yes. Si hemos seleccionado una ubicacin para almacenamiento permanente, como una particin de disco, en los siguientes arranques elegiremos No. Claro est que si elegimos ejecutar PelicanHPC desde la RAM, tendremos que elegir siempre Yes. Finalmente, se nos pide que introduzcamos la clave predeterminada. Esta clave servir tanto para las mquinas primarias como para las esclavas. PelicanHPC est diseado para un solo usuario, y la clave es en texto plano. Una vez disponga de toda esta informacin, PelicanHPC arrancar el nodo primario con un entorno de escritorio Xfce.

Instalacin del Clster


Ahora que ya est configurado y en ejecucin el nodo primario, ha llegado la hora de configurarlo para el clustering. PelicanHPC proporciona una serie de scripts para este fin. Se puede llamar a los scripts manualmente o ejecutar el script maestro pelican_setup, que llama a su vez al resto de scripts encargados de iniciar los distintos

Si tenemos varias interfaces de red en la mquina, se nos pregunta cul de ellas es la que se debe utilizar para conectar con el clster. Lo siguiente que se nos pregunta es si damos permiso a los scripts para iniciar el servidor de DHCP, seguido de la confirmacin para iniciar los servicios que permitirn entrar en el clster a los nodos esclavos. En un primer momento, las constantes confirmaciones pueden parecer irritantes, pero son necesarias si quiere evitarse el desastre por culpa de servicios de DHCP conflictivos o por interrumpir accidentalmente clculos en curso. Una vez cuente con permiso nuestro para iniciar el clster, el script nos preguntar si deseamos iniciar los nodos esclavos. Los nodos esclavos se arrancan por red, por lo que debemos asegurarnos de dar prioridad en la BIOS al arranque por red sobre el resto de modos de arranque de cada mquina. Al ver al nodo primario, los esclavos muestran la pantalla de PelicanHPC y nos permiten introducir parmetros de arranque, del mismo modo que hicimos con el nodo primario. En vez de arrancar escritorios Xfce, los nodos esclavos muestran un aviso advirtiendo sobre la pertenencia de la mquina a un clster y el peligro que supondra apagarla (Figura 1). Claro est que si los nodos esclavos no disponen de

Figura 2: Dos nodos configurados y en ejecucin escaneando en busca de ms.

WWW.LINUX- MAGAZINE.ES

Nmero 52

29

PORTADA PelicanHPC

el directorio /home/ user/Econometrics, es un buen punto de partida. Tambin es interesante ParallelEconometrics.pdf, que est en /home/user/Econometrics/ParallelEconometrics. Esta presentacin es una buena introduccin a la computacin paralela en conjuncin con la econometra. Para el nefito, Figura 3: Hay dos nodos configurados y en ejecucin adems del GNU Octave [2] es principal. un lenguaje de computacin de alto nivel monitor, slo hemos de encender la para clculo numrico. Es la alternativa mquina tras asegurarnos de que los de cdigo abierto al programa propietaparmetros de la BIOS son los correctos. rio MATLAB, usados ambos en aritmUna vez en funcionamiento el nodo tica extrema. esclavo, volvemos al nodo primario y Tambin hay cdigo de ejemplo en el pulsamos el botn No, que vuelve a directorio /home/user/Econometrics/ escanear el clster y actualiza el nmero Examples/ para la realizacin de pruede nodos conectados (Figura 2). Cuando bas como la densidad del kernel [3] y el nmero de nodos conectados conlas estimaciones de probabilidad cuerda con el nmero de esclavos que mxima, as como para la ejecucin de hemos activado, pulsamos Yes. Pelisimulaciones Monte Carlo sobre el rencanHPC muestra un mensaje de confirdimiento de un nuevo estimador econmacin y nos indica el script que se est metro. usando para configurar el clster cuando decidimos aadir o Listado 1: Hola Mundo en C con eliminar un nodo (Figura 3). MPI Para reajustar el tamao del 01 #include <stdio.h> clster, ejecutamos el siguiente 02 #include mpi.h script:
03

Realizacin de Pruebas
Para llevar a cabo las pruebas, abrimos una terminal e iniciamos Octave mediante la introduccin del comando octave en la lnea de comandos. De este modo accedemos a su interfaz grfica. Aqu podemos ejecutar varios ejemplos de cdigo introduciendo un nombre. Por ejemplo, las estimaciones del kernel se realizan introduciendo kernel_example. De forma similar, pea_example muestra la implementacin paralelizada del algoritmo pea (parameterized expectation algorithm), mientras que mc_example2, mostrado en la Figura 4, nos ensea los resultados de la prueba Monte Carlo. Creel sugiere adems que PelicanHPC puede ser usado en dinmica molecular mediante el uso del software de cdigo abierto GROMACS (GROningen MAchine for Chemical Simulations). El proyecto distribuido para el estudio del despliegue protenico, Folding@ home, hace uso tambin de GROMACS, y Creel piensa que uno podra replicar esta configuracin en un clster creado con PelicanHPC. Creel sugiere adems al usuario interesado nicamente en la computacin de alto rendimiento, que eche un vistazo a ParallelKnoppix, cuya ltima versin est disponible para descarga [4].

Programacin Paralela con PelicanHPC


Uno de los mejores usos que se puede dar a PelicanHPC es la compilacin y ejecucin de programas paralelizados. Si para esto es para lo nico que se pretende usar PelicanHPC, no hacen falta en realidad nodos esclavos, ya que las herramientas pueden compilar los programas en el mismo nodo primario. PelicanHPC incluye varias herramientas para la escritura y el procesamiento de cdigo paralelo. OpenMPI compila programas escritos en C, C++ y Fortran. SciPy y NumPy [5] son aplicaciones basadas en Python para clculo cientfico. PelicanHPC incluye adems la caja de herramientas MPI (MPITB) para Octave, que permite llamar a rutinas de las libreras de MPI desde Octave.

sh pelican_restarthpc

04 int main(int argc, char *argv[ ]) 05 { 06 07 08 09 10 11 12 13 14 15 16 17 } MPI_Finalize(); return 0; printf(Somos borg! Soy el %d de %d\n, rank, size); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &size); MPI_Init(&argc, &argv); int rank, size;

Y listos. El clster ya est configurado y en ejecucin, en espera de rdenes.

Procesamiento
El desarrollador de PelicanHPC es profesor de economa en la Universidad Autonmica de Barcelona en Catalua, Espaa. Trabaja en econometra, ciencia que hace un uso intensivo de procesamientos numricos. Por tanto, encontraremos textos y ejemplos de cdigo para Octave relacionados con la investigacin de Creel y su docencia. Si se est interesado en econometra, el archivo econometrics.pdf, bajo

Pasar la Pelota
Todo principiante en programacin paralela puede haber pasado por alto la exis-

30

Nmero 52

WWW.LINUX- MAGAZINE.ES

PelicanHPC PORTADA

tencia de MPI ( Message-Passing Interface ), que es la clave de la computacin paralelizada. Se trata de un sistema de software que nos permite escribir programas que se ejecutan en un clster y pasar mensajes. MPI no es un lenguaje de programacin, sino una librera capaz de pasar mensajes entre varios procesos. El proceso puede estar ubicado tanto en una mquina local como varios nodos ms all en un clster. MPI se puede escribir en varios lenguajes, como C, C++ y Fortran. MPICH fue la primera implementacin de la especificacin MPI 1.x. LAM/MPI es otra implementacin, que cubre adems partes significativas de la especificacin MPI 2.x. LAM/MPI es capaz de pasar mensajes a travs de TCP/IP, memoria compartida e Infiniband. La implementacin ms popular de MPI es OpenMPI, desarrollada y mantenida por un consorcio, que combina lo mejor de varios proyectos, como el de LAM/MPI. Muchos de los 500 mayores supercomputadores hacen uso de l, incluido el Roadrunner de IBM, que es actualmente el ms rpido.

MPI
PelicanHPC incluye dos implementaciones de MPI: LAM/MPI y OpenMPI. A la hora de escribir programas paralelizados en C o C++, debemos asegurarnos de incluir el archivo de cabecera mpi.h (#include <mpi.h>). Para compilar los programas, necesitamos mpicc para programas Figura 4: Gnuplot genera los resultados del test de ejemplo Monte Carlo. C, mpic++ o mpiCC para programas C++, y mpif77 mpicc borg-greeting.c U para Fortran. -o borg-greeting El Listado 1 muestra un ejemplo de programa Hola Mundo, escrito en C, Para ejecutar los programas hay que usar que usa la librera MPI para mostrar un mpirun: mensaje en todos los nodos del clster. Lo compilamos con mpicc: mpirun -np 4 U
borg-greeting

Listado 2: Paquetes para el Live CD PelicanHPC


01 ### paquetes a aadir - coloca aqu los nombres de los paquetes que desee ### 02 cat <<PACKAGELIST > addlist 03 # Bsico para la instalacin del clster 04 ssh dhcp3-server nfs-kernel-server nfs-common atftpd ifenslave 05 # Binarios para networking 06 # firmware-bnx2 firmware-iwlwifi firmware-ralink linux-wlan-ng-firmware 07 # gestin de recursos 08 slurm-llnl slurm-llnl-sview slurm-llnl-basic-plugins 09 # configuracin y herramientas 10 wget bzip2 dialog less net-tools rsync fping screen 11 make htop fail2ban locales console-common 12 # soporte para el correo 13 bsd-mailx liblockfile1 mailx postfix ssl-cert 23 gromacs 24 # para las X 25 xorg xfce4 konqueror ksysguard ksysguardd kate kpdf 26 konsole kcontrol kdenetwork kdeadmin abiword 27 PACKAGELIST 28 ### END OF PACKAGELIST ### 20 # otros cientficos 21 gfortran libatlas-headers libatlas3gf-base 22 # GROMACS 14 # MPI 15 lam-runtime lam4-dev openmpi-bin openmpi-dev 16 # Octave 17 octave3.0 octave3.0-headers gnuplot 18 # Python 19 python-scipy python-matplotlib python-numpy ipython lampython

Este comando indica a la librera MPI que debe ejecutar explcitamente cuatro copias de la aplicacin hola, programndolas en las CPUs del clster de un modo round-robin. Dependiendo del nmero de nodos del clster, veremos algo como:
Somos Somos Somos Somos borg! borg! borg! borg! Soy Soy Soy Soy el el el el 1 3 0 2 de de de de 4 4 4 4

Hay varios tutoriales sobre MPI en la web [6]. El profesor Jos Luis de la Universidad de Sevilla usa PelicanHPC para impartir su curso sobre computacin paralela. Siempre recomienda a los programadores novatos que prueben los ejemplos disponibles online del libro de Peter Pacheco, Programacin Paralela con MPI [7]. Consultar el sitio web de OpenMPI para obtener documentacin adicional, entre la que se incluye una FAQ muy detallada [8].

Montar Nuestro Propio PelicanHPC


Si slo se est interesado en aprender sobre programacin paralela, Peli-

WWW.LINUX- MAGAZINE.ES

Nmero 52

31

PORTADA PelicanHPC

de los repositorios de la distribucin, su nombre se ha de especificar tal cual aparece en stos. GROMACS tiene varias dependencias, pero no deben ser motivo de preocupacin, puesto que se obtienen automticamente. Figura 5: Podemos personalizar el script make_pelican para crear La siguiente parte nuestros propios prompts. del script make_pelican que tenemos que canHPC proporciona medios ms que tocar es la arquitectura para la que se va suficientes. Pero el objetivo principal del a crear la ISO, as como si lo que deseaLive CD es ayudarnos a montar un clsmos es una imagen ISO o por el contrario ter sin demasiado esfuerzo. Su enfoque una imagen USB. se centra en el mantenimiento y la fcil Esta seccin define tambin las series personalizacin, motivos por los cuales de direcciones de red que asignar Pelila publicacin no incluye un gran canHPC: nmero de paquetes. Una vez probado el Live CD, si vemos 01 PELICAN_NETWORK= que se ajusta a nuestras necesidades, lo 10.11.12 ms recomendable es crear una versin 02 MAXNODES=100 propia mediante el paquete live-helper de 03 #ARCHITECTURE= Debian y el script make_pelican de Peliamd64 can. Adems necesitaremos una instala04 #KERNEL=amd64 cin Debian o Ubuntu para la creacin del 05 ARCHITECTURE= Live CD, pudiendo tratarse de una instalai386 cin mnima, o incluso una mquina vir06 KERNEL=686 tual dentro de una mquina con grandes 07 IMAGETYPE=iso cantidades de RAM y un procesador de 08 #IMAGETYPE=usb-hdd doble ncleo, que es lo que usamos aqu. 09 DISTRIBUTION= As que para elaborar nuestra propia lenny imagen ISO o de USB, debemos instalar 10 MIRROR=en primero una Debian o una Ubuntu. Nosotros hemos usado Lenny para crear El resto del script tiene que ver con el nuestra versin personalizada de Pelifuncionamiento de PelicanHPC y no canHPC. Luego hay que obtener el debe tocarse a menos que se sepa muy paquete live_helper desde el repositorio bien lo que se est haciendo. De cualde la distro. Finalmente, hay que consequier modo, conviene moverse por el guir la ltima versin del script resto de secciones para tener una idea make_pelican (v1.9.1 en el momento de ms aproximada sobre cmo PelicanHPC escribir estas lneas) desde la pgina de transforma mquinas ordinarias en magdescargas de Pelican [4]. nficos clsteres de computacin. Abrimos el script en nuestro editor de Una vez modificado el script, lo ejecutextos favorito. El script est dividido en tamos desde consola: varias secciones. Tras los comentarios iniciales, que incluyen un breve changesh make_pelican log, la primera seccin lista los paquetes que estarn disponibles en la ISO. Aqu Ya slo queda sentarse y disfrutar. Aunes donde debemos hacer los cambios. que si se tiene una conexin lenta, o se En el Listado 2 se muestra una versin est ejecutando en una mquina tamya modificada de esta seccin, en la que bin lenta, mejor ser aprovechar para se ha comentado la parte de los binarios hacer otras cosas mientras tanto, porque para red. Se han aadido adems los le llevar un buen rato obtener todos los paquetes de AbiWord y GROMACS. paquetes y compilarlos dentro de la imaDebido a que estos paquetes se obtienen gen de la distribucin.

Al acabar, ya tendremos una nueva y reluciente ISO llamada binary.iso bajo el directorio i386/ o amd64/, dependiendo de la arquitectura para la que la hayamos creado. Luego, transferimos la imagen USB a un pendrive, o testeamos la imagen ISO con VirtualBox o Qemu, antes de grabarla en un disco. La Figura 5 muestra la pantalla de password de un Live CD modificado con PelicanHPC. PelicanHPC est diseado con la facilidad de uso en mente, para cualquier persona con el deseo de usar sus mquinas ociosas como una herramienta de clculo numrico complejo. Creada bajo la experiencia de ParallelKnoppix, el desarrollador ha puesto mucho empeo en que podamos crear un clster en un santiamn y de una forma muy sencilla con PelicanHPC. Las capacidades de personalizacin son la guinda del pastel, dando como resultado una plataforma ideal para la creacin de entornos de clster personalizados como PeliI canHPC.

RECURSOS
[1] PelicanHPC: http://pareto.uab.es/ mcreel/PelicanHPC/ [2] GNU Octave: http://www.gnu.org/ software/octave/ [3] Estimacin de la densidad del Kernel: http://en.wikipedia.org/wiki/ Kernel_density_estimation [4] Descarga de ParallelKnoppix: http:// pareto.uab.es/mcreel/PelicanHPC/ download/ [5] SciPy y NumPy: http://www.scipy. org/ [6] Tutorial de MPI: http://www. dartmouth.edu/~rc/classes/ intro_mpi/ [7] Programacin Paralela con MPI: http://www.cs.usfca.edu/mpi/ [8] FAQ de OpenMPI: http://www. open-mpi.org/faq/ ?category=mpi-apps

Mayank Sharma ha sido autor de varias publicaciones sobre Linux, como Linux.com, IBMdeveloperWorks o Linux Format. Tambin ha publicado dos libros mediante Packt sobre administracin de Elgg y Openfire. Ocasionalmente ensea tecnologas FLOSS. Se le puede encontrar en: http://www. geekybodhi.net.

32

Nmero 52

WWW.LINUX- MAGAZINE.ES

EL AUTOR

Вам также может понравиться