Universidad de Carabobo Facultad experimental de ciencia y tecnología Departamento de Computación INFORME DE PASANTIA Clúster de Consolas de PlayStation 3 Tutor Académico: Dr. Germán Larrazábal Tutor Empresarial: Dr. Germán Larrazábal Pasante: Juan Ernesto García Álvarez CI: 18859052 Valencia, mayo de 2010 RESUMEN DE LAS ACTIVIDADES REALIZADAS OBJETIVO Armar un clúster de cuatro consolas de PlayStation 3 con un disponible ambiente de trabajo bajo código cell, usando para este fin el CELL SDK disponible de IBM, con un front-end (PC común) habilitado para control total del clúster y de cada nodo (o consola) en donde se pueda tener un simulador para que al momento de programar bajo código cell, nos pueda indicar si hay errores y cuales, con un ambiente grafico diseñado para dicho propósito Para realizar la configuración e instalación del clúster se tuvo que hacer lo siguiente: Etapa1.- Configuraciones básicas tanto al servidor como a cada nodo por igual Etapa2.- Configuración del servidor para control del clúster Etapa3.- Instalación de un entorno grafico en el servidor para programa bajo código cell Etapa4.- Pruebas del clúster haciendo Benchmarks Etapa5.- Compilación y ejecución de programas A continuación se explica que se hizo en cada etapa. ETAPA 1 Configuraciones básicas (Servidor y nodos por igual): En esta etapa se explican procedimiento que conforman la base para poder desarrollar dicho clúster esto se debe hacer y se hizo tanto en el servidor (front-end) como en cada uno de los nodos por igual Esta etapa se divide en ciertos puntos: .- Formateo e Instalación del Sistema Operativo .- Instalación de programas claves para el funcionamiento del clúster (mpi, ssh, nfs) .- Configuración de cada máquina (nombres, permisos, etc.) .- Instalación de librerías y ambiente de trabajo para código cell (CELL SDK) Formateo e Instalación del Sistema Operativo Ahora se explicaran los procedimientos realizados para la instalación del Sistema Operativo tanto en el servidor como en los nodos Servidor (Front-End): .- Descargar la imagen del CD de Fedora Core 9 disponible para arquitecturas x86 .- Iniciar una instalación “limpia” de Fedora sin actualizaciones, en esta instalación se agregó al igual que los nodos un usuario llamado “PlayStation” y la clave tanto del root como del usuario es “fedora” Nodo (Consola PlayStation): esto se debe hacer y se hizo en cada nodo o consola Descargar la imagen ISO de Fedora Core 9 para PPC, y quemarla en un DVD. Para hacer la descarga de Fedora 9 se utilizó el siguiente enlace http://mirrors.fedoraproject.org/publiclist/Fedora/9/ Descargar la imagen personalizada de arranque http://www.ps3cluster.org/distros/ps3.zip Descomprimir el archivo. (Esta carpeta llamada "PS3" debe contener la subcarpeta "otheros" y el archivo TRANS.TBL). Colocar esta carpeta en cualquier unidad flash USB vacía Formateo de la consola Conectar un teclado USB Encender la consola Navegar a: "System Settings/Format Utility/Format HD/Custom/" Seleccionar "10gb for PS3" Instalación de Other OS Reiniciar el Sistema Insertar la unidad USB FLASH que tiene la imagen de arranque Navegar a "System Settings/Install Other OS" Esto cargara automáticamente la imagen de arranque. En "/System Settings/Install other OS/Default Systems/" configurar como sistema predeterminado 'Other OS' o Reiniciar la consola Instalar Fedora 9: Se arranca automáticamente Linux. En el kboot del sistema, escribir: "linux64 xdriver texto" = fbdev”, pulsar enter. (Lo que se está haciendo es establecer la imagen de instalación de 64 bits, en lugar del predeterminado de 32 bits.) ahora Instalar el sistema operativo con una memoria swap de 2GB, en este clúster a todos los nodos se les agrego un usuario llamado “PlayStation” y la clave tanto del root como del usuario es “fedora” Cuando Linux Fedora arranque, esperamos ver 8 pingüinos. Esto indica que el sistema operativo está utilizando todos los núcleos de su sistema. Ahora se puede acceder al sistema Fedora desde la consola PS3. Instalación de programas claves para el funcionamiento del clúster (mpi, ssh, nfs) Esta instalación es igual tanto para las consolas PS3 como para el computador (Front-End) Instalación de SSH: ssh se utiliza para las comunicaciones de red seguras en MPI. Se usó el instalador yum para instalar primero el componente del servidor ssh. Escribiendo "yum install openssh-server" Una vez instalado, se necesita comenzar este proceso de servidor (sshd). Para iniciar el servidor, escribir "start sshd yum" Por último, se necesita instalar los componentes de cliente ssh escribiendo "yum install openssh-clients". Este proceso debería terminar sin preguntar, y ssh debe estar completamente instalado. Prueba de la conexión: SSH requiere una contraseña entre los nodos de forma predeterminada. Por lo tanto, cuando pida una contraseña de cada nodo indica una conexión correcta. Para probar la conexión se escribe "ssh root@IPADDR" (donde IPADDR = La dirección IP de ese nodo). Si aparece un mensaje para colocar la contraseña indica una conexión con éxito. MPI (Message Passing Interface) MPI ("Message Passing Interface", Interfaz de Paso de Mensajes) es un estándar que define la sintaxis y la semántica de las funciones contenidas en una biblioteca de paso de mensajes diseñada para ser usada en programas que exploten la existencia de múltiples procesadores. El paso de mensajes es una técnica empleada en programación concurrente para aportar sincronización entre procesos y permitir la exclusión mutua, de manera similar a como se hace con los semáforos, monitores, etc. Su principal característica es que no precisa de memoria compartida, por lo que es muy importante en la programación de sistemas distribuidos. Los elementos principales que intervienen en el paso de mensajes son el proceso que envía, el que recibe y el mensaje. Dependiendo de si el proceso que envía el mensaje espera a que el mensaje sea recibido, se puede hablar de paso de mensajes síncrono o asíncrono. En el paso de mensajes asíncrono, el proceso que envía, no espera a que el mensaje sea recibido, y continúa su ejecución, siendo posible que vuelva a generar un nuevo mensaje y a enviarlo antes de que se haya recibido el anterior. Por este motivo se suelen emplear buzones, en los que se almacenan los mensajes a espera de que un proceso los reciba. Generalmente empleando este sistema, el proceso que envía mensajes sólo se bloquea o para, cuando finaliza su ejecución, o si el buzón está lleno. En el paso de mensajes síncrono, el proceso que envía el mensaje espera a que un proceso lo reciba para continuar su ejecución. Por esto se suele llamar a esta técnica encuentro, o rendezvous. Dentro del paso de mensajes síncrono se engloba a la llamada a procedimiento remoto, muy popular en las arquitecturas cliente/servidor. La Interfaz de Paso de Mensajes (conocido ampliamente como MPI, siglas en inglés de Message Passing Interface) es un protocolo de comunicación entre computadoras. Es el estándar para la comunicación entre los nodos que ejecutan un programa en un sistema de memoria distribuida. Las implementaciones en MPI consisten en un conjunto de bibliotecas de rutinas que pueden ser utilizadas en programas escritos en los lenguajes de programación C, C++, Fortran y Ada. La ventaja de MPI sobre otras bibliotecas de paso de mensajes, es que los programas que utilizan la biblioteca son portables (dado que MPI ha sido implementado para casi toda arquitectura de memoria distribuida), y rápidos, (porque cada implementación de la biblioteca ha sido optimizada para el hardware en la cual se ejecuta). Para instalar el openmpi escribir "yum install gcc openmpi openmpi-devel openmpilibs" NFS (Network File System) Es el sistema Unix / Linux estándar para el intercambio de archivos de red. MPI específicamente tiene que encontrar el programa que se ejecutan en el clúster en cada uno de los nodos del clúster. NFS proporciona una ubicación publicada para cada sistema. Para instalar NFS, escribir "yum install nfs-utils" Configuración de cada máquina (nombres, permisos, etc.) Los siguiente es colocarle un nombre a cada máquina, como el clúster se llama Rocinante, a cada nodo se lo coloco, Rocinante1, Rocinante2, Rocinante3, Rocinante4, y al servidor RocinanteServer En Fedora cambiar el nombre de una maquina se hace mediante el archivo /etc/sysconfig/network allí se busca la línea “HOSTANME=” y al lado se coloca el nombre de la maquina Configurar los nombres de las maquinas Como estamos usando Fedora el archivo encargado de reconocer los nombres que le ponemos a nuestras maquinas mediante los ips se encuentra en /etc/hosts, la manera de configurar este archivo es muy simple, solo al final hay que colocar el ip de la maquina seguido por el nombre de dicha máquina, en el caso del clúster que se armó se usaron los siguientes ips con los siguientes nombres: 190.170.87.70 Rocinante1 190.170.87.71 Rocinante2 190.170.87.72 Rocinante3 190.170.87.73 Rocinante4 190.170.87.74 RocinanteServer Esto hay que hacerlo tanto en la maquina servidor como en cada uno de los nodos del clúster, en este caso para acceder a cada consola PlayStation y configurar los archivos se usó ssh desde la maquina servidor Configurar Permisos para NFS: esto se debe hacer solo en los nodos Para configurar el NFS, se crea un archivo llamado “exports” en la carpeta “etc.”, este un simple archivo de texto en donde se colocan los ip de las maquinas antecedidos por la carpeta que se quiere que tengan acceso por medio de nfs a la maquina presente, ejemplo “/ 190.187.70.87” Para la configuración del clúster este archivo quedo de la siguiente forma en cada nodo dándole acceso de lectura y escritura al servidor en la carpeta asignada: /home/PlayStation/Documentos/Cluster RosinanteServer(rw, nohide) Instalación de librerías y ambiente de trabajo para código cell (CELL SDK) En cada Nodo y en el Servidor se realizó lo siguiente: Descargar las siguientes imágenes de http://www.ibm.com/developerworks/power/cell/downloads.html .- CellSDK-Devel-Fedora_3.1.0.0.0.iso .- CellSDK-Extra-Fedora_3.1.0.0.0.iso Instalación de Paquetes necesarios usando yum .- yum install glibc-devel.ppc64 rsync sed tcl wget Instalación del instalador del SDK que se encuentra en CellSDK-DevelFedora_3.1.0.0.0.iso .- rpm -ivh cell-install-3.1.0.0.0.noarch.rpm Instalación del SDK usando el SDK script .- /opt/cell/cellsdk --iso /tmp/cellsdkiso install .- Leer y aceptar Licencias Prevenir actualización de paquetes que puedan poner inestable el sistema .- En /etc/yum.conf agregar exclude=blas blas-devel elfspe2 kernel lapack lapack-devel libspe2 libspe2-debuginfo libspe2-devel oprofile oprofile-devel ETAPA 2 Configuración del servidor para control del clúster Configuración de Open-MPI: Open-MPI se configura mediante un archivo /etc/openmpidefault-hostfile. Si este archivo no se encuentra escribir "touch /etc/openmpi-defaulthostfile" Es necesario editar este archivo añadiendo la dirección IP de cada nodo y el número de 'slots'. El número slots es el número de núcleos disponibles para procesar ejemplo “190.187.70.72 slots=6”. Para la configuración del clúster este archivo quedo de la siguiente manera. Rocinante1 slots=6 max_slots=8 Rocinante2 slots=6 max_slots=8 Rocinante3 slots=6 max_slots=8 Rocinante4 slots=6 max_slots=8 Para poder ejecutar un programa en un clúster en paralelo con mpi, es necesario que dicho programa se encuentre exactamente en el mismo lugar dentro de cada nodo y en el servidor. Para poder lograr que el usuario final, no tenga una tarea engorrosa, de cada ves que vaya a ejecutar un programa tener que manualmente instalar el programa en cada nodo, y sincronizar las carpetas, se creó un lugar específico para dicho propósito, /home/PlayStation/Documentos/Clúster En esta carpeta el usuario simplemente toma el programa y lo pega en cada uno de los nodos en la misma carpeta, para hacer esto de manera sencilla, se usa el programa nfs que se explicó anteriormente para pasar archivos en red, para automatizar el procesó se agregaron las siguientes líneas en el archivo /etc/fstab Rocinante1: /home/PlayStation/Documentos/Cluster /mnt/Nodo01 nfs rsize=8192,wsize=8192,timeo=14,intr 0 0 Rocinante2: /home/PlayStation/Documentos/Cluster /mnt/Nodo02 nfs rsize=8192,wsize=8192,timeo=14,intr 0 0 Rocinante3: /home/PlayStation/Documentos/Cluster /mnt/Nodo03 nfs rsize=8192,wsize=8192,timeo=14,intr 0 0 Rocinante4: /home/PlayStation/Documentos/Cluster /mnt/Nodo04 nfs rsize=8192,wsize=8192,timeo=14,intr 0 0 Se hizo un enlace simbólico de cada punto de montaje en el escritorio De manera que el usuario cuando entre escriba como root en la consola “mount –a” y ya pueda tener acceso a dicha carpeta en cada nodo mediante el escritorio, y así copiar sus programas en cada nodo para poder ejecutarlos El último paso pero no el menos importante, es configurar el ssh para que funcione sin clave ya que así el openmpi podrá conectarse satisfactoriamente Para esto se siguió el siguiente procedimiento: Desde el servidor escribir en la consola “ssh-keygen –t dsa”, y presionar enter en todas las preguntas sin escribir nada, de esta forma estamos creando la llave en la dirección por defecto y no le estamos creando una frase de seguridad Luego escribir en el servidor como usuario PlayStation: scp ~/.ssh/id_dsa.pub PlayStation@Rocinante1:.ssh/authorized_key scp ~/.ssh/id_dsa.pub PlayStation@Rocinante2:.ssh/authorized_key scp ~/.ssh/id_dsa.pub PlayStation@Rocinante3:.ssh/authorized_key scp ~/.ssh/id_dsa.pub PlayStation@Rocinante4:.ssh/authorized_key Colocar la contraseña del usuario cuando lo indique Luego de realizar las configuraciones se probó el clúster con el hola mpi, para asegurarse de que todo estaba funcionado bien ETAPA 3 Instalación de un entorno grafico en el servidor para programa bajo código cell Instalación de la versión IBM de java usando yum yum install ibm-java2-i386-jre Configurar el ambiente para instalar la nueva versión de java agregar en HOME/.bash_profile lo siguiente PATH=$HOME/bin:/opt/java/jdk1.5.0_08/jre/bin: $PATH Instalación del Eclipse yum install cellide Instalación del simulador Descargar el simulador de www.alphaworks.ibm.com/tech/cellsystemsim/download antes de instalarlo, para evitar errores Instalar el sysroot_image Para información acerca de cómo correr el simulador y usar el eclipse, ibm nos da una guía completa en la siguiente página http://public.dhe.ibm.com/software/dw/cell/IDE_Users_Guide_v3.1.pdf ETAPA 4 Pruebas del clúster haciendo Benchmarks Para hacer pruebas formales del clúster se realizaron benchmark de mpi, midiendo la capacidad de comunicación entre procesos en el clúster El benchmark realizado fue skampi (http://liinwww.ira.uka.de/~skampi/). SKaMPI es un benchmark para implementación de mpi. Los benchmarks que incluye son los siguientes: point-to-point communication collective communications derived datatypes one-sided communication MPI IO Los benchmarks que se hicieron son los siguientes: # SKaMPI Version 5.0.4 rev. 355 # Started at Wed Aug 18 16:12:36 2010 # begin result "Pingpong_Send_Recv" count= 1 4 969.3 8.8 16 925.4 950.0 count= 2 8 904.3 13.1 16 848.7 901.1 count= 3 12 903.5 14.8 16 868.0 889.2 count= 4 16 922.4 11.3 16 866.0 910.4 count= 6 24 943.7 9.4 16 911.7 929.8 count= 8 32 900.5 20.2 16 866.8 895.6 count= 11 44 944.1 7.9 16 878.5 935.5 count= 16 64 893.8 12.9 16 841.3 893.4 count= 23 92 932.9 11.3 8 876.2 920.5 count= 32 128 958.1 8.2 16 943.1 925.7 count= 45 180 946.8 12.8 16 876.6 938.6 count= 64 256 887.1 10.1 16 844.9 887.1 count= 91 364 887.5 5.8 8 843.2 875.0 count= 128 512 913.6 10.5 16 874.2 913.6 count= 181 724 994.0 7.9 16 946.7 982.6 count= 256 1024 1034.4 12.7 16 969.5 1031.2 count= 362 1448 1379.0 12.3 8 1379.0 1038.8 count= 512 2048 1421.0 3.4 8 1421.0 1066.3 count= 724 2896 1715.4 11.1 16 1647.9 1715.4 count= 1024 4096 1780.9 23.5 16 1696.9 1763.9 count= 1448 5792 2216.3 43.2 8 2091.2 2170.8 count= 2048 8192 2411.1 27.1 8 2272.8 2388.8 count= 2896 11584 3005.5 30.2 8 2867.5 2996.4 count= 4096 16384 3507.8 16.5 16 3271.8 3507.8 # end result "Pingpong_Send_Recv" # duration = 0.60 sec # begin result "processor names measurement" #P[0] # rank #P[1] # rank #P[2] # rank #P[3] # rank #P[4] # rank #P[5] # rank #P[6] # rank #P[7] # rank #P[8] # rank #P[9] # rank #P[10] # rank #P[11] # rank 0: Rocinante2 1: Rocinante2 2: Rocinante2 3: Rocinante2 4: Rocinante2 5: Rocinante2 6: Rocinante4 7: Rocinante4 8: Rocinante4 9: Rocinante4 10: Rocinante4 11: Rocinante4 #P[12] # rank #P[13] # rank #P[14] # rank #P[15] # rank #P[16] # rank #P[17] # rank #P[18] # rank #P[19] # rank #P[20] # rank #P[21] # rank #P[22] # rank #P[23] # rank 12: Rocinante1 13: Rocinante1 14: Rocinante1 15: Rocinante1 16: Rocinante1 17: Rocinante1 18: Rocinante3 19: Rocinante3 20: Rocinante3 21: Rocinante3 22: Rocinante3 23: Rocinante3 # end result "processor names measurement" # duration = 0.02 sec # begin result "MPI_Bcast-procs-short" procs= 2 procs= 3 procs= 4 procs= 5 procs= 6 procs= 7 procs= 8 procs= 9 procs= 10 procs= 11 procs= 12 procs= 13 procs= 14 procs= 15 procs= 16 procs= 17 procs= 18 procs= 19 procs= 20 procs= 21 procs= 22 procs= 23 procs= 24 1024 40.7 1.5 34 12.9 40.7 1024 44.6 1.4 34 19.1 43.6 40.5 1024 9326.8 2180.7 34 20.2 988.7 4725.0 8641.2 1024 19360.6 2182.8 35 23.1 3846.0 2745.7 14693.2 11695.1 1024 24977.6 2017.0 34 24.4 4521.1 9134.5 12973.0 12135.6 15011.1 1024 22739.8 2036.6 33 28.8 1217.9 5167.5 9098.5 8919.5 10848.1 11826.7 1024 28615.9 1862.3 34 29.7 4223.3 3606.8 12224.5 9087.9 19957.3 16608.7 20085.7 1024 29126.6 1416.2 32 106.8 1528.9 985.0 17793.1 5441.1 18035.4 10119.0 17030.9 11680.7 1024 28913.0 1517.9 34 108.7 836.4 4339.1 11823.8 6048.8 15092.6 13516.0 21054.5 798.5 6907.1 1024 33141.4 1212.6 34 120.0 6313.3 2874.5 17752.5 10539.8 20730.4 12182.7 19825.2 6625.3 17067.5 12874.9 1024 38451.2 2077.4 34 112.1 2980.3 3352.1 13703.7 7149.1 22418.1 8884.6 24912.4 5892.3 17665.6 10544.0 30898.0 1024 40289.7 2280.1 34 119.0 2005.2 3382.1 19351.4 3872.6 14915.6 12724.0 26611.3 5389.8 7930.0 11347.1 35975.8 7469.3 1024 37418.2 1896.3 34 116.0 1693.7 3776.5 9451.9 8868.8 12470.1 12414.6 19390.0 1884.0 12244.3 13867.7 29263.2 12571.1 18763.4 1024 33643.2 1804.8 34 112.5 124.0 146.1 7395.8 2450.1 6538.0 14078.8 15843.2 1325.6 4023.8 11863.9 20615.7 18966.9 12874.2 14504.5 1024 37880.0 1219.0 32 114.9 1772.0 3133.1 9026.8 2894.5 7019.6 6892.4 23694.6 2239.9 9883.7 9752.4 23982.1 14080.4 24490.7 12060.4 28650.1 1024 40983.0 900.3 34 156.3 355.1 1009.6 1766.2 3007.4 6374.3 6508.8 7092.4 9125.2 13679.3 14531.4 15289.6 16621.4 21164.2 26056.2 29979.1 1024 36824.6 1606.9 34 154.7 170.5 319.8 370.6 943.8 2524.2 4546.5 4881.3 7202.3 7379.1 12595.5 17988.5 19118.3 20254.5 21292.4 23682.0 1024 40004.2 1418.0 33 149.9 263.6 960.5 1401.6 4107.0 4985.4 5846.1 6986.8 9709.9 10973.0 12165.4 17755.9 20816.4 27173.0 27722.2 29249.4 1024 43557.7 1326.7 33 153.4 1668.1 3094.2 4469.7 5290.0 8806.5 14189.9 14192.8 15428.9 16556.3 17420.8 19370.0 22640.2 23379.6 27632.3 29366.2 1024 42520.5 2195.9 35 156.6 1540.0 2303.1 5560.0 5737.6 6969.5 10351.0 11241.8 16290.4 16671.9 18958.1 19209.5 22715.2 26793.0 29547.5 32047.2 1024 44123.2 1468.0 34 159.2 321.8 829.7 5149.1 5328.4 8370.6 9753.8 14714.6 14959.6 18871.4 24033.2 26666.7 26783.0 31147.8 31588.0 34720.9 1024 45122.1 2331.8 33 157.6 3811.2 5299.4 7718.8 9368.8 9379.2 12194.7 15695.9 18034.6 19801.8 23646.6 25327.6 28399.8 30386.4 32008.5 32932.5 1024 43102.3 1580.4 33 157.1 2064.9 2783.1 2794.2 4769.8 5433.8 10284.9 14777.3 16507.6 17757.7 23083.1 23751.8 25437.2 29316.7 29417.6 33336.8 # end result "MPI_Bcast-procs-short" # duration = 105.07 sec # begin result "MPI_Bcast-procs-long" procs= 2 262144 37204.8 1150.2 procs= 3 262144 38904.9 1339.6 procs= 4 262144 41100.2 290.1 procs= 5 262144 57451.9 887.8 procs= 6 262144 59365.5 922.2 procs= 7 262144 64757.2 878.3 procs= 8 262144 77827.2 1206.5 procs= 9 262144 71681.2 1305.1 procs= 10 262144 70928.8 953.0 procs= 11 262144 74074.8 897.2 procs= 12 262144 84963.2 881.0 procs= 13 262144 101791.5 955.4 procs= 14 262144 99085.6 982.1 procs= 15 262144 114863.1 1740.6 procs= 16 262144 110083.8 1752.5 procs= 17 262144 105927.4 1849.3 procs= 18 262144 116270.3 1294.5 procs= 19 262144 114571.7 1718.2 procs= 20 262144 109798.2 1049.9 procs= 21 262144 109145.4 1673.6 procs= 22 262144 111767.4 1771.1 procs= 23 262144 111085.3 1083.2 procs= 24 262144 112235.4 1353.9 33 35984.8 23643.7 35 1755.2 33301.4 34781.7 25 40631.4 30626.3 25324.4 25453.7 39 996.8 45905.2 47613.1 34593.9 36562.7 39 50615.2 45758.8 46070.3 36847.6 34408.0 29818.9 32 1075.7 54825.0 54572.6 31421.3 42771.1 49508.1 41806.8 39 44142.7 53873.2 56689.6 67288.0 66182.4 53477.4 53150.8 47350.4 30 1697.9 45802.5 41689.2 59627.9 66630.3 55857.5 50461.8 41455.3 42704.1 32 30370.3 38117.4 38506.0 60948.3 58653.8 55756.6 62153.8 47078.9 50611.4 35189.0 32 994.8 42808.8 37500.3 54203.9 60497.4 59757.3 57270.8 48484.5 57876.8 45504.9 50688.2 16 70071.4 42940.1 40226.3 77188.1 67636.3 61752.5 71290.9 66069.1 65364.7 42782.1 44860.8 69676.6 24 997.6 47341.2 48659.0 85104.9 84707.8 68969.9 76444.8 79687.9 79729.6 47729.7 44900.8 93490.0 75356.2 14 46268.7 46572.4 44689.9 78686.3 79403.5 67779.9 73039.1 76910.5 82139.4 55112.4 52793.2 94852.1 77101.1 43169.4 32 3864.2 64336.0 71330.0 89224.8 91532.3 94018.3 92697.2 91456.1 87340.5 74767.9 80077.0 98489.6 82393.8 67935.4 67117.0 32 77925.6 53856.7 66011.6 88555.5 86087.5 79499.8 81606.8 88797.2 85169.2 60029.7 75935.7 88137.4 86026.9 62950.6 61140.4 32 2091.8 51818.4 52550.1 57397.6 58123.9 64576.1 66690.3 75514.1 79205.7 80341.2 83835.6 86034.5 86057.5 86104.7 86373.9 24 44791.3 47605.4 52157.0 60980.8 62531.2 68534.9 70714.6 78259.8 81099.0 86034.4 87618.5 87755.5 88611.2 89187.4 92287.0 24 997.3 42946.3 51702.4 71061.3 73595.8 81526.6 81787.3 83339.9 90662.8 93247.3 96041.4 96108.9 97506.7 100113.9 100429.8 33 39300.3 42335.0 67975.5 71575.8 73535.7 75660.4 79314.5 84027.1 85585.4 87367.6 90133.0 90847.1 96153.1 98527.4 98601.5 16 1058.7 41886.5 47811.8 70266.4 70446.6 73902.9 75223.7 76156.6 82452.2 82616.2 84954.0 86885.7 90065.2 101748.6 102050.4 32 42903.1 44586.3 64984.8 65557.5 66004.8 69322.8 70093.9 74599.0 77147.5 78843.4 80032.4 88302.5 90757.6 93967.4 94027.8 16 1476.6 47841.1 61393.2 70860.8 72889.6 75204.0 76238.6 80072.9 81170.2 81293.8 84418.0 85201.8 93388.5 98329.5 100143.8 24 49597.9 50195.7 73999.6 74824.0 77649.8 80200.6 81889.7 84140.9 84578.9 87124.4 87665.9 88318.2 89996.6 91106.2 97997.0 # end result "MPI_Bcast-procs-long" # duration = 148.02 sec 77272.8 88280.2 94889.9 101491.3 104961.3 104306.0 98138.4 103468.2 99357.7 ETAPA 5 Compilación y ejecución de programas Para poder correr un programa en el clúster se deben seguir los siguientes pasos: - Montar las Carpetas de los nodos en el servidor - Compilación del programa - Copiar el ejecutable del programa junto con sus librerías en cada nodo - Correr el programa - Montar las carpetas Para poder acceder a las carpetas en el escritorio satisfactoriamente es necesario como root correr en la consola "mount -a" - Compilación del programa: Para compilar el programa se debe tener en cuenta que la arquitectura en donde se va a ejecutar el programa es la arquitectura del PlayStation, por lo que esto nos lleva a compilar el programa en dicha arquitectura es decir es necesario copiar los archivos en cualquiera de los nodos del PlayStation, luego acceder a él, por medio de la consola con ssh, ejemplo ssh root@Rocinante1, luego navegar a la carpeta en donde se copiaron los archivos a compilar en este caso si se copiaron en las carpetas que están en el escritorio, navegar: cd /home/PlayStation/Documentos/Cluster, luego allí meterse en la carpeta del programa y compilarlo usando mpicc, ejemplo mpicc NombredelEjecutable NombredelArchivo, al hacer esto se compilara el programa usando openmpi, para comunicación en paralelo - Copiar el ejecutable: Cada nodo debe tener el programa para poder ejecutarlo satisfactoriamente en el clúster, si se usaron las carpetas del escritorio, (que para eso se crearon) es muy sencillo, copiar el ejecutable en cada nodo dejando exactamente los mismos nombres de carpetas y archivos y en exactamente la misma ubicación, en las carpetas del escritorio hasta en el servidor - Correr el programa: Para correr el programa es necesario abrir la consola como root o el usuario configurado para dicho propósito ("PlayStation"), y navegar hasta la carpeta en donde se encuentra el ejecutable en el servidor, en este caso debería ser /home/PlayStation/Documentos/Cluster/ y allí correr el programa usando el siguiente comando, "mpirun NombredelEjecutable" CONCLUSION La fase de ejecución del periodo de pasantías ha representado un complemento indispensable, debido a que ha permitido aumentar la experiencia laboral, conocer el contexto de una empresa y obtener una visión más amplia acerca de las actitudes que se debe tomar en una organización. Todas las actividades anteriormente expuestas se han cumplido satisfactoriamente, por ello se puede enfatizar que el proceso de pasantías ha sido provechoso al máximo, como por ejemplo la institución cuya visión se ha cumplido un vez más, el alumno que ahora pasa a ser mano de obra capacitada y de calidad, y la organización por haber obtenido los servicios y aportes del pasante. BIBLIOGRAFIA Y REFERENCIA http://www.ibm.com/developerworks/power/cell/ http://es.wikipedia.org/wiki/Cell http://www.ps3cluster.umassd.edu/ http://moss.csc.ncsu.edu/~mueller/cluster/ps3/ http://www.netlib.org/utk/people/JackDongarra/PAPERS/scop3.pdf http://en.wikipedia.org/wiki/PlayStation_3 http://support.suso.com/supki/SSH_Tutorial_for_Linux http://www.linuxhelp.net/guides/nfs/ http://nfs.sourceforge.net/nfs-howto/ http://news.softpedia.com/news/Iptables-Basic-Guide-35969.shtml